1 容器
1.1 容器简介
容器(Container)是一种轻量级、可移植、并将应用程序进行打包的技术,使应用程序可以在几乎任何地方以相同的方式运行
- Docker 将镜像文件运行起来后,产生的对象就是容器。容器相当于是镜像运行起来的一个实例。
- 容器具备一定的生命周期,可以借助 docker ps 命令查看正在运行的容器。
1.2 容器与虚拟机
Docker 容器与虚拟机的相同点
- 容器与虚拟机一样,都会对物理硬件资源进行共享使用
- 容器和虚拟机的生命周期比较相似(创建、运行、暂停、关闭等)
- 容器中或虚拟机中都可以安装各种应用,如redis、mysql、nginx等。
- 容器创建后,会存储在宿主机上:/var/lib/docker/containers/
Docker 容器与虚拟机的不同点 - 虚拟机的创建、启动和关闭都是基于一个完整的操作系统。一个虚拟机就是一个完整的操作系统。而容器直接运行在宿主机的内核上,其本质上是一系列进程的结合。
- 容器是轻量级的,虚拟机是重量级的。首先容器不需要额外的资源来管理(不需要Hypervisor、GuestOS),虚拟机额外更多的性能消耗;其次,创建、启动或关闭容器,如同创建、启动和关闭进程一样轻松。
1.2 容器的生命周期
1.2.1 容器创建 - docker create
- 利用镜像创建一个 Created 状态的待启动容器
docker create [OPTIONS] IMAGE {COMMAND] [ARG...]
- COMMAND/ARG 表示容器启动后,需要在容器中执行的命令,如ps,ls等命令
- 示例
- 使用“ubuntu”镜像,创建名称为“test”,执行命令为“python”的容器:
docker create --name test ubuntu python
- 使用“ubuntu”镜像,创建名称为“test”,执行命令为“python”的容器,并提供终端和标准输入:
docker create -ti --name test ubuntu python
- 使用“ubuntu”镜像,创建名称为“test”,执行命令为“python”的容器:
1.2.2 容器删除 - docker rm
- 删除一个或多个容器
docker rm [OPTIONS] CONTAINER [CONTAINER...]
1.2.3 容器启动 - docker start
- 启动一个或多个停止的容器
docker start [OPTIONS] CONTAINER [CONTAINER...]
- 示例
- 启动“test”容器:
docker start -ai test
- 启动“test”容器:
1.2.4 容器创建并运行 - docker run
- 在一个新的容器中运行命令
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
- 示例
docker run -ti ubuntu python
==docker create -ti ubuntu python
+docker start -ai CONTAINER_ID
- 后台运行:
docker run -dti ubuntu python
==docker create ubuntu python
+docker start CONTAINER_ID
1.2.5 容器关闭 - docker stop
- 关闭一个或多个运行中的容器
docker stop [OPTIONS] CONTAINER [CONTAINER...]
- 示例
- 等待3秒后关闭容器:
docker stop -t 3 CONTAINER_ID
- 等待3秒后关闭容器:
1.2.6 容器终止 - docker kill
- 关闭一个或多个运行或暂停的容器
docker kill
1.2.7 容器暂停 - docker pause/unpause
- 暂停一个或多个容器
docker pause CONTAINER [CONTAINER...]
docker unpause CONTAINER [CONTAINER...]
1.2.8 容器重启 - docker restart
- 重启一个或多个容器
docker restart [OPTIONS] CONTAINER [CONTAINER...]
==docker stop
+docker start
1.3 容器信息查看
1.3.1 容器详细信息查看 - docker inspect
- 查看容器详细信息
docker inspect [OPTIONS] CONTAINER
- 示例
docker inspect -f "{{json .A.B}}" CONTAINER_ID
1.3.2 容器日志信息 - docker logs
- 查看容器的日志信息(主进程日志信息)
docker logs [OPTIONS] CONTAINER
- 示例
docker logs CONTAINER_ID
1.3.3 容器重命名 - docker rename
- 修改容器的名称
docker rename CONTAINER new_name
1.4 容器运行时操作
1.4.1 容器连接 - docker attach
- 把当前的标准输入、输出、错误流连接到运行的容器当中(连接入主进程)
docker attach [OPTIONS] CONTAINER
1.4.2 容器中执行新命令 - docker exec
- 在一个运行的容器中执行新的命令(开启子进程)
docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
- 示例
docker exec -ti CONTAINER COMMAND [ARG...]
2 容器与镜像
2.1 容器提交 - docker commit
- 根据容器生成一个新的镜像
docker commit [OPTIONS] CONTAINER [RESPOSITORY[:TAG]]
- 示例
docker commit -m "commit message" CONTAINER REPOSITORY:TAG
2.2 容器打包 - docker export
- 将一个容器打包成一个压缩文件
docker export [OPTIONS] CONTAINER
- 示例
docker export -o xxx.tar CONTAINER
2.3 容器打包的导入 - docker import
- 通过一个容器打包的压缩文件生成镜像文件
docker import [OPTIONS] file|URL|- [REPOSITORY[:TAG]]
- 示例
docker import -m "import message" xxx.tar REPOSITY:TAG