3.4 Docker 容器使用
3.4.1 创建并启动容器
在获取镜像并下载完成之后,可以通过 docker run 命令运行容器,这个命令的基本格式为:
$ docker run [OPTIONS] IMAGE [COMMAND] [ARG...]常用参数说明:
-d:以后台模式运行容器。-p:端口映射,格式为主机端口号:容器端口号,例如80:80。--name:指定容器名称。-it:保持交互式终端连接。-v:挂载主机目录到容器,格式为-v 主机目录:容器目录。--rm:容器停止时自动删除容器。--env或-e:设置环境变量,格式为--env 变量名=变量值。--network:指定容器的网络模式。--restart:容器的重启策略。-u:指定用户运行,格式为-u 用户名。
以 nginx 为例,如果我们想要启动一个 nginx 容器,可以通过以下命令进行启动。
$ docker run -d -p 80:80 --name nginx-container nginx通过以上命令,Docker 会进行以下操作:
- 使用指定的
nginx镜像构建容器。 - 允许容器在后台运行。
- 将容器的
80端口映射到主机的80端口上。 - 指定容器名称为
nginx-container。 - 启动容器。
在容器启动后,通过主机的 IP 地址就能看到 nginx 的默认欢迎页面了。
3.4.2 启动已经终止的容器
如果容器因为某种原因停止运行,可以使用 docker start 容器ID 命令重新启动它。
注意:如果每次运行容器使用
docker run命令,则每次都都会创建一个新的容器实例,即使使用相同的镜像和参数也会生成不同的容器。
3.4.3 终止容器
要终止正在运行的 Docker 容器,可以使用 docker stop 命令。这个命令会向容器发送 SIGTERM 信号,让容器有机会执行清理工作并正常关闭。如果容器在指定时间内没有停止,Docker 会强制发送 SIGKILL 信号终止容器。
$ docker stop nginx-container
nginx-container3.4.4 查看容器
在 Docker 使用过程中,经常需要查看容器的运行状态和信息。Docker 提供了多个命令来查看容器。
- 查看正在运行的容器
使用 docker ps 命令可以查看当前正在运行的容器。这个命令会显示容器的 ID、名称、使用的镜像、创建时间、状态和端口映射等信息。
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a1b2c3d4e5f6 nginx "/docker-entrypoint.…" 2 minutes ago Up 2 minutes 0.0.0.0:80->80/tcp nginx-container- 查看所有容器
docker ps -a 命令可以查看所有容器,包括已经停止的容器。这个命令的输出格式与 docker ps 相同,但会显示更多容器。
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a1b2c3d4e5f6 nginx "/docker-entrypoint.…" 5 minutes ago Up 5 minutes 0.0.0.0:80->80/tcp nginx-container
b2c3d4e5f6a1 redis:alpine "docker-entrypoint.s…" 2 days ago Exited (0) 2 days ago redis-test- 查看容器详细信息
docker inspect 命令可以查看容器的详细信息。这个命令会返回 JSON 格式的数据,包含容器的配置、网络设置、挂载卷等完整信息。
$ docker inspect nginx-container- 查看容器日志
docker logs 命令可以查看容器的日志输出。这个命令对于排查容器运行问题很有帮助。加上 -f 参数可以实时查看日志输出。
$ docker logs nginx-container
$ docker logs -f nginx-container- 查看容器资源使用情况
docker stats 命令可以实时查看容器的资源使用情况,包括 CPU、内存、网络和磁盘 I/O。
$ docker stats
CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
a1b2c3d4e5f6 nginx-container 0.00% 2.5MiB / 1.952GiB 0.13% 1.45kB / 648B 0B / 0B 23.4.5 进入容器内部
当容器在后台运行时,我们可以通过 docker exec 命令来进入运行中的容器内部执行命令或查看状态。
$ docker exec -it nginx-container /bin/bash以上命令会启动一个bash shell 让我们能与 nginx-container 容器进行交互,-it 参数会保持终端交互连接。
通过这种方式可以像操作普通 Linux 系统一样在容器内执行命令、查看文件或修改配置。容器启动后,Docker 会为它分配唯一的 ID 和名称,自动设置网络和存储,并根据镜像定义启动指定的进程。
3.4.6 容器的导出和导入
容器的导出和导入功能用于将容器及其当前状态保存为文件,便于迁移或备份。
导出容器可以使用 docker export 命令,这个命令会将容器的文件系统打包成 tar 归档文件,但不包含容器的元数据、网络配置或卷信息。
$ docker export -o nginx-container.tar nginx-container使用上面的容器导出命令会将名为 nginx-container 的容器导出到当前目录下的 nginx-container.tar 文件中。
容器导出后的文件可以通过 docker import 命令重新导入为镜像,导入时需要指定镜像名称和标签。
$ docker import nginx-container.tar my-nginx:v1使用上面的导入命令会创建一个名为 my-nginx、标签为 v1 的新镜像。
3.4.7 删除容器
当容器不再需要时,可以使用 docker rm 命令将其删除,这个命令需要指定容器 ID 或容器名称。
docker rm nginx-container使用上面的删除容器命令,会删除名为 nginx-container 的容器。
注意:如果容器正在运行,直接删除会失败,需要先使用
docker stop停止容器,或者添加-f参数强制删除运行中的容器。