介绍
欢迎来到「运行你的第一个容器」挑战!你已经学会了如何运行 hello-world 容器。现在,让我们更进一步,尝试运行一个不同的容器。在这个挑战中,你将运用所学的 Docker 技能启动 docker/getting-started 镜像,该镜像会在容器内启动一个小型 Web 服务器。
运行新容器
任务
你的任务很简单:
- 基于
docker/getting-started镜像运行一个 Docker 容器。
要求
要完成此挑战,你必须:
- 使用
docker run命令启动容器。 - 使用
docker/getting-started镜像,该镜像已为你预先拉取。 - 在
~/project目录下执行命令。
示例
当你成功运行容器时,Docker 会在前台启动它,因此你的终端会保持连接并显示容器日志。这些日志来自 docker/getting-started 内部的 Nginx Web 服务器。
如果你看到关于 /docker-entrypoint.d/ 目录非空的警告信息,请不必担心。
/docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration
/docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/
/docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh
10-listen-on-ipv6-by-default.sh: info: Getting the checksum of /etc/nginx/conf.d/default.conf
10-listen-on-ipv6-by-default.sh: info: Enabled listen on IPv6 in /etc/nginx/conf.d/default.conf
/docker-entrypoint.sh: Launching /docker-entrypoint.d/20-envsubst-on-templates.sh
/docker-entrypoint.sh: Launching /docker-entrypoint.d/30-tune-worker-processes.sh
/docker-entrypoint.sh: Configuration complete; ready for start up
2024/10/29 09:26:17 [notice] 1#1: using the "epoll" event method
2024/10/29 09:26:17 [notice] 1#1: nginx/1.23.3
2024/10/29 09:26:17 [notice] 1#1: built by gcc 12.2.1 20220924 (Alpine 12.2.1_git20220924-r4)
2024/10/29 09:26:17 [notice] 1#1: OS: Linux 5.15.0-56-generic
2024/10/29 09:26:17 [notice] 1#1: getrlimit(RLIMIT_NOFILE): 1048576:1048576
2024/10/29 09:26:17 [notice] 1#1: start worker processes
2024/10/29 09:26:17 [notice] 1#1: start worker process 31
2024/10/29 09:26:17 [notice] 1#1: start worker process 32
你可以打开一个新的终端窗口,使用 docker ps 命令来验证容器是否正在运行。
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f3f3b3b3b3b3 docker/getting-started "/docker-entrypoint.…" 1 minute ago Up 1 minute 80/tcp festive_mendel
注意: 执行
docker run docker/getting-started后,请保持第一个终端运行。如果你按下Ctrl+C或关闭该终端,容器就会停止。请打开第二个终端来运行docker ps,或者如果你希望容器在后台运行,可以使用docker run -d docker/getting-started。
总结
在这个挑战中,你通过运行一个新的容器扩展了你的 Docker 技能。你使用了 docker run 命令启动了 docker/getting-started 镜像,该镜像在容器内启动了一个 Web 服务器并将启动日志打印在终端中。你还观察到,在前台启动的容器会占用终端,直到你将其停止。本次练习巩固了启动容器的基础知识,以及如何使用 docker ps 等 Docker 命令检查容器的运行状态。



