容器是什么?
容器是基于镜像创建的可运行实例,并且单独存在,一个镜像可以创建出多个容器。运行容器化环境时,实际上是在容器内部创建该文件系统的读写副本。 这将添加一个容器层,该层允许修改镜像的整个副本。
容器的生命周期
容器的生命周期是容器可能处于的状态,容器的生命周期分为 5 种。
created:初建状态
running:运行状态
stopped:停止状态
paused: 暂停状态
deleted:删除状态
容器的操作
1. 容器的创建及运行
- 创建容器 docker create [参数] [repository]:[tag]
- 运行容器 docker start [容器ID或名称]
运行刚才创建的容器,我这里指定的名称为busybox(通过 – name 指定容器的名称)
这种创建容器并启动的方式在日常工作中不常用,一般我们基于镜像来直接运行一个容器
2. 基于镜像运行一个容器
- docker run [参数] [repository:tag 或 镜像ID]
当使用docker run创建并启动容器时,Docker 后台执行的流程为:
-
Docker 会检查本地是否存在 busybox 镜像,如果镜像不存在则从 Docker Hub 拉取 busybox 镜像;
-
使用 busybox 镜像创建并启动一个容器;
-
分配文件系统,并且在镜像只读层外创建一个读写层;
-
从 Docker IP 池中分配一个 IP 给容器;
-
执行用户的启动命令运行镜像。
-
上述命令中, -t 参数的作用是分配一个伪终端,-i 参数则可以终端的 STDIN 打开,同时使用 -it 参数可以让我们进入交互模式。
-
上方中,我的[tag]标签都没指定,默认是latest
3. 终止容器
- 使用docker stop 命令
- 如果想查看停止状态的容器信息,可以使用 docker ps -a 命令。
4. 启动容器
- 通过docker start 启动终止的容器
- 通过docker restart 重启容器
5. 进入容器
- 处于运行状态的容器可以通过docker attach、docker exec、nsenter等多种方式进入容器。
- 这里主要讲使用docker exec 进入容器
- 格式:docker exec -it [容器标示] [命令]
6. 删除容器
- 格式:docker rm [OPTIONS] CONTAINER [CONTAINER…]
-
删除已经终止的容器
-
删除正在运行的容器,需要增加-f参数
7. 容器导出导入
-
容器导出 docker export
执行上方命令后会在当成目录busybox.tar文件 -
容器导入 docker import
命令:docker import