docker的logo是一条鱼驮着很多集装箱,那条鱼可以理解成宿主操作系统,集装箱可以理解成docker的container(容器,后面会说这个概念),而制作集装箱的模板则可以理解成image(镜像,后面也会说这个概念)
1docker image (docker 镜像)
- 概念
集装箱的模板集成了集装箱的尺寸、颜色、形状等等所有数据,从而根据这些数据去制造一个个具体的集装箱,docker的image也是一样的道理,定义了container的系统的各种数据,从而根据这些数据去创建具体的container,比如我有一个集成好lamp环境的image,我就可以根据这个image快速创建出很多lamp环境的container。
- 镜像的获取
你需要什么镜像,可以在docker store里面进行搜索,比如我们需要centos镜像,直接在这里搜索即可
搜索到镜像后,我们就可以通过运行镜像首页的命令下载对应的镜像了
- 镜像的标签
我们运行镜像首页命令下载的镜像,一般都是最新版本的镜像,但是,镜像是有标签(tag)的,这个标签可以理解成镜像的版本,就像github里面一个项目有很多版本一样
这个centos镜像也有很多tag的
我们选择centos8这个tag的镜像镜像下载,所以复制命令并运行
[root@dk ~]# docker pull centos:centos8
centos8: Pulling from library/centos
6910e5a164f7: Pull complete
Digest: sha256:4062bbdd1bb0801b0aa38e0f83dece70fb7a5e9bce223423a68de2d8b784b43b
Status: Downloaded newer image for centos:centos8
docker.io/library/centos:centos8
这样就下载好了。
- 查看本机有哪些镜像
[root@dk ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos centos8 831691599b88 5 weeks ago 215MB
hello-world latest bf756fb1ae65 6 months ago 13.3kB
用这个命令我们看到了我们本地有2个镜像,分别是centos和hell-world,他们的tag、唯一标识、创建时间、大小这些参数全部都看到了
2docker container(docker 容器)
- 概念
container就运行在操作系统上的一个个具体的进程,container是由image创建的,它和image的区别就是container是具体的,而image只是抽象的模板,并不是一个进程 - 容器的创建
接下来我们通过刚刚下载的centos的image创建一个container
[root@dk ~]# docker run -it centos:centos8 /bin/bash
[root@755195af59c2 /]#
在这个命令中:
-it参数表示用交互模式启动container
centos:centos8表示依赖的镜像及其标签
/bin/bash 表示在容器内执行/bin/bash命令
运行完这个命令后,我们已经启动了一个centos的容器,由于是交互模式,所以我们运行完后就已经进入了那个容器,不在原来的宿主机了,可以看到命令的主机名已经由dk变成了755195af59c2,我们要退出容器并停止容器运行的话,按下ctlr+d即可
[root@755195af59c2 /]# exit
[root@dk ~]#
- 查看容器
查看正在运行的容器,运行以下命令
docker ps
查看所有容器,这样操作:
[root@dk ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
755195af59c2 centos:centos8 "/bin/bash" 19 minutes ago Exited (0) 3 seconds ago nostalgic_rosalind
74b1c2b7647f hello-world "/hello" 17 hours ago Exited (0) 17 hours ago modest_ganguly
可以看到容器的id、镜像、命令、创建时间、状态、端口、名称这些信息
- 重新启动刚刚关闭的容器并进入交互模式
[root@dk ~]# docker start 755195af59c2
755195af59c2
[root@dk ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
755195af59c2 centos:centos8 "/bin/bash" 25 minutes ago Up 5 seconds nostalgic_rosalind
[root@dk ~]# docker exec -it 755195af59c2 /bin/bash
[root@755195af59c2 /]#