docker的logo是一条鱼驮着很多集装箱,那条鱼可以理解成宿主操作系统,集装箱可以理解成docker的container(容器,后面会说这个概念),而制作集装箱的模板则可以理解成image(镜像,后面也会说这个概念)

1docker image (docker 镜像)

  • 概念

集装箱的模板集成了集装箱的尺寸、颜色、形状等等所有数据,从而根据这些数据去制造一个个具体的集装箱,docker的image也是一样的道理,定义了container的系统的各种数据,从而根据这些数据去创建具体的container,比如我有一个集成好lamp环境的image,我就可以根据这个image快速创建出很多lamp环境的container。

  • 镜像的获取

你需要什么镜像,可以在docker store里面进行搜索,比如我们需要centos镜像,直接在这里搜索即可

docker蓝色主题 docker logo_f5


搜索到镜像后,我们就可以通过运行镜像首页的命令下载对应的镜像了

docker蓝色主题 docker logo_docker_02

  • 镜像的标签
    我们运行镜像首页命令下载的镜像,一般都是最新版本的镜像,但是,镜像是有标签(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 /]#