一、什么是容器
容器是基于镜像创建的实例,可以单独存在,一个镜像可以创建多个容器。下图是是容器的组成:
二、容器的生命周期
容器的生命周期分为如下几种状态:
- created:初建状态
- running:运行状态
- stopped:停止状态
- paused: 暂停状态
- deleted:删除状态
各个状态之间的转换关系如图所示:
三、容器的基本操作
1、创建并启动容器
docker start命令启动已经创建好的容器
#创建容器
docker create -it --name=mybusybox busybox
#启动创建的容器
docker start mybusybox
由上面操作步骤可知:docker create 基于镜像创建的容器处于停止状态,可以通过docker start命令启动
docker run基于镜像直接创建并启动容器
#运行容器
docker run -it --name=mybusybox busybox
docker运行容器执行的流程:
- Docker 会检查本地是否存在 busybox 镜像,如果镜像不存在则从 Docker Hub 拉取 busybox 镜像;
- 使用 busybox 镜像创建并启动一个容器;
- 分配文件系统,并且在镜像只读层外创建一个读写层;
- 从 Docker IP 池中分配一个 IP 给容器;
- 执行用户的启动命令运行镜像。
2、终止容器
docker stop命令可以停止运行中的容器,停止后可以通过docker start命令启动;也可以通过docker restart命令重启正在运行中的容器
3、进入容器
docker attach 容器名称/容器ID
注意点:当在多个终端同时用docker attach进入容器后,所有的终端都会同步显示相同的命令,如果其中某个终端的命令阻塞了,则所有的终端都无法操作
docker excel方式进入容器
docker exec -it busybox sh
推荐使用这种方式进入容器,每个命令行会单独开启一个sh进程,互不影响。
4、删除容器
删除停止状态的容器:docker rm 容器名称/容器ID
强制删除运行状态的容器:docker rm -f 容器名称/容器ID
5、导出导入容器
docker export 和docker import命令可以完成容器的迁移工作:
#进入容器并创建test目录:
docker exec -it fff sh
cd /tmp && touch test
#退出容器后,执行docker export命令
docker export mybusybox > busybox.tar
#通过docker import命令导入上一步生成的文件,生成新的镜像
docker import busybox.tar busybox:test
#通过docker run运行上一步生成的镜像
docker run -it busybox:test sh
#进入新运行的容器中,可以发现容器中包含第一步中创建的文件夹