Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。
docker的安装可以自行到官网上去寻找docker的rpm(rhel)自行安装
这里我们准备的是docker18.06的版本
开启docker
[root@server1 docker]# systemctl start docker
查看安装好的docker信息
[root@server1 docker]# docker info
在一开始我们为了让大家对docker产生兴趣,我们准备了一款2048小游戏,在这里作为镜像向大家展示docker
1.添加game2048镜像
[root@server1 ~]# ls
docker game2048.tar
[root@server1 ~]# docker load -i game2048.tar
011b303988d2: Loading layer 5.05MB/5.05MB
36e9226e74f8: Loading layer 51.46MB/51.46MB
192e9fad2abc: Loading layer 3.584kB/3.584kB
6d7504772167: Loading layer 4.608kB/4.608kB
88fca8ae768a: Loading layer 629.8kB/629.8kB
Loaded image: game2048:latest
2.查看docker的镜像
[root@server1 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
game2048 latest 19299002fdbe 2 years ago 55.5MB
在这里我们的镜像当然只有我们刚才添加的game2048
3.运行docker镜像
[root@server1 ~]# docker run -d -p 80:80 --name game game2048
f0a654b8735cc259ab552def3c7bc8e383df1819a558d273c2fdd26ea911b363
需要注意的是我们在这里-d是指后台运行,不然他就会占用我们的终端,如果不让后台运行,则使用-it参数即可,–name是一个重命名的方式,不然我们的镜像与进程不好分辨,-p是做一个地址映射,这样就可以让docker使用我们的物理机的端口
4.查看运行的镜像
[root@server1 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f0a654b8735c game2048 "/bin/sh -c 'sed -i …" 2 minutes ago Up 2 minutes 0.0.0.0:80->80/tcp, 443/tcp game
如果要查看所有的运行镜像,包括暂停的镜像,同ps命令一样,加参数-a即可
5.查看运行的镜像的具体信息
这样我们可以看到这个镜像的具体运行过程,其启动脚本,生成ip,端口号等等都可以查询
6.浏览器查看docker
1.docker的ip分配
docker运行后,系统会为其自动分配一个ip
2.docker版本查看
[root@server1 ~]# docker version
Client:
Version: 18.06.1-ce
API version: 1.38
Go version: go1.10.3
Git commit: e68fc7a
Built: Tue Aug 21 17:23:03 2018
OS/Arch: linux/amd64
Experimental: false
Server:
Engine:
Version: 18.06.1-ce
API version: 1.38 (minimum version 1.12)
Go version: go1.10.3
Git commit: e68fc7a
Built: Tue Aug 21 17:25:29 2018
OS/Arch: linux/amd64
Experimental: false
3.docker的常用命令
# docker load -i ubuntu.tar 导入镜像
# docker run -it --name vm1 ubuntu 创建容器(以ubuntu镜像为模板)
# docker ps 查看容器状态
# docker ps -a 查看容器状态(包括不活跃的容器)
# docker attach vm1 连接容器
# docker top vm1 查看容器进程
# docker logs vm1 查看容器指令输出 -f 参数可以实时查看
# docker inspect vm1 查看容器详情
# docker stats vm1 查看容器资源使用率
# docker diff vm1 查看容器修改
# docker stop vm1 停止容器
# docker start vm1 启动容器
# docker kill vm1 强制干掉容器
# docker restart vm1 重启容器
# docker pause/unpause vm1 暂停/恢复容器
# docker rm vm1 删除容器
1.导入镜像,创建容器
2.查看vm1容器信息
3.浏览器访问
4.编写一个默认发布页面,然后将其复制到ninx容器的默认发布目录
[root@server1 ~]# cd /tmp/
[root@server1 tmp]# ls
[root@server1 tmp]# mkdir docker
[root@server1 tmp]# cd docker/
[root@server1 docker]# vim index.html
[root@server1 docker]# cat index.html
hello
[root@server1 docker]# docker cp index.html vm1:/usr/share/nginx/html
[root@server1 docker]# docker cp index.html vm1:/usr/share/nginx/html
[root@server1 docker]# docker rm -f vm1
vm1
[root@server1 docker]# docker run -d --name vm1 -p 80:80 -v /tmp/docker/:/usr/share/nginx/html nginx -v挂载,:前面的为本地的文件,后面的是docker的文件目录
2c1c05f6d6118de5f00c809ea70586069a271252746b195cade83acf9a05bce9
[root@server1 docker]# vim index.html
[root@server1 docker]# cat index.html
hello
hello
hello
我们前面建立的容器全部是放入后台运行的,那么在这里我们来建立一个交互的容器,我们就以ubentu系统镜像为例
[root@server1 docker]# docker images ubuntu
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu latest 07c86167cdc4 3 years ago 188MB
[root@server1 docker]# docker run -it --name vm2 ubuntu
root@d89d5ee155db:/# ls
bin dev home lib64 mnt proc run srv tmp var
boot etc lib media opt root sbin sys usr
root@d89d5ee155db:/# id
uid=0(root) gid=0(root) groups=0(root)
root@d89d5ee155db:/#
交互式的结束
ctrl+pq 不停止容器,后台运行
ctrl+d 直接结束容器,释放内存
rm 删除容器
rmi 删除镜像