探索Docker 容器
Docker 容器(Container)命令可以帮助你创建、启动、停止、查看和删除容器。让我们从一些常见的容器命令开始。
启动一个容器
要基于某个镜像启动一个容器,可以使用 docker run 命令。没有nginx镜像就拉取一个。例如:
docker run -d -p 8089:80 nginx
输出:
root@debian:/home/x# docker run -d -p 8089:80 nginx f224e28c9211ac23bd5269423d7e1db56812586288d44b32d80e5ab5dbd8f42a
这个命令会从 nginx 镜像启动一个新的容器,并将主机的 8089 端口映射到容器的 80 端口。-d 参数表示容器在后台运行。启动后,你可以通过访问 http://localhost:8089 来查看 nginx 容器的服务。
查看正在运行的容器
要查看当前所有正在运行的容器,可以使用以下命令:
docker ps
输出:
root@debian:/home/x# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES f224e28c9211 nginx "/docker-entrypoint.…" 40 seconds ago Up 39 seconds 0.0.0.0:8089->80/tcp, :::8089->80/tcp hopeful_cori
这个命令会列出所有正在运行的容器,包括容器 ID、使用的镜像、创建时间、状态、暴露的端口以及容器名称等信息。如果你想查看所有的容器(包括停止的),可以加上 -a 参数:
docker ps -a
停止一个运行中的容器
如果你想停止某个正在运行的容器,可以使用 docker stop 命令,后面跟上容器的 ID 或名称。例如:
docker stop 容器ID或名称
上面运行的容器ID是f224e28c9211,这里就关闭这个ID的容器。
docker stop f224e28c9211
输出:
root@debian:~/home/x~# docker stop f224e28c9211 f224e28c9211
再次输入docker ps -a检查一下,可以看到刚刚的容器f224e28c9211已经停止,STATUS状态是Exit(0)
root@debian:~# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES f224e28c9211 nginx "/docker-entrypoint.…" 3 minutes ago Exited (0) About a minute ago hopeful_cori 94a60b0d3c48 hello-world "/hello" 51 minutes ago Exited (0) 50 minutes ago competent_haslett
启动一个已停止的容器
要重新启动一个已停止的容器,可以使用 docker start 命令。例如:
docker start 容器ID或名称
这个命令会将指定的容器从停止状态重新启动,而不需要重新创建容器。如启动刚刚停止的容器。
docker start f224e28c9211
输出:
root@debian:~# docker start f224e28c9211 f224e28c9211
再次输入docker ps -a检查一下,可以看到刚刚的容器f224e28c9211已经启动,STATUS状态是Up 56 Seconds.(这个56是启动后运行了56秒)
root@debian:~# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES f224e28c9211 nginx "/docker-entrypoint.…" 6 minutes ago Up 56 seconds 0.0.0.0:8089->80/tcp, :::8089->80/tcp hopeful_cori 94a60b0d3c48 hello-world "/hello" 54 minutes ago Exited (0) 54 minutes ago
进入一个正在运行的容器
有时,你可能需要进入一个正在运行的容器,检查其内部情况或执行一些命令。可以使用 docker exec 命令。例如:
docker exec -it 容器ID或名称 /bin/bash
进入刚刚运行的容器
docker exec -it f224e28c9211 /bin/bash
输出:
root@debian:~# docker exec -it f224e28c9211 /bin/bash root@f224e28c9211:/# ls bin boot dev docker-entrypoint.d docker-entrypoint.sh etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var root@f224e28c9211:/#
这个命令会启动一个交互式的 shell(通常是 bash),让你直接进入容器的命令行环境。
除此之外,我们还可以在run的时候加-it进入容器,就像这样
root@debian:~# docker run -it nginx /bin/bash root@a7735690088f:/#
删除一个容器
如果你不再需要某个容器,可以使用 docker rm 命令将其删除。例如:
docker rm 容器ID或名称
在删除之前,确保容器已经停止。如果容器还在运行,可以先使用 docker stop 停止它,或者直接使用 -f 参数强制删除:
docker rm -f 容器ID或名称
删除刚刚运行的容器
docker rm -f f224e28c9211
输出:
root@debian:~# docker rm -f f224e28c9211 f224e28c9211