Docker 快速上手指南

本贴最后更新于 378 天前,其中的信息可能已经物是人非

安装 Docker

在 Ubuntu 22.04 中安装 Docker 的步骤如下:

1. 更新包管理器

bash
sudo apt update

2. 安装依赖项,以允许 apt 使用 HTTPS 访问 Docker 仓库

bash
sudo apt install -y apt-transport-https ca-certificates curl software-properties-common

3. 添加 Docker 官方 GPG 密钥

bash
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

4. 添加 Docker 软件包仓库

bash
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

5. 安装 Docker Engine

bash
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io

6. 验证 Docker 是否正确安装

bash
sudo docker --version

7. 将当前用户添加到 Docker 用户组(可选,为了避免每次都需要 sudo 执行 Docker 命令)

bash
sudo usermod -aG docker $USER

请注意,将用户添加到 Docker 用户组后,需要注销并重新登录才能使更改生效。

8. 启动 Docker 服务

bash
sudo systemctl start docker

9. 设置 Docker 开机自启动

bash
sudo systemctl enable docker

**现在,Docker 已经安装在 Ubuntu 22.04 上,并且可以使用了。你可以通过运行 Docker 命令来验证安装是否成功,比如 **docker --version 或者运行一个简单的容器来检查。

请注意,安装 Docker 需要在具有管理员权限的用户下执行,或者通过 sudo 执行上述命令。

后台运行容器

**使用 **docker run 命令后,默认情况下,当前终端会将 Docker 容器的输出打印到终端,并且容器在前台运行。这意味着如果你使用 docker run 启动一个容器,当前终端会一直保持连接状态,直到你手动停止容器或使用终端退出快捷键(通常是 Ctrl + C)停止容器运行。

**如果你想让容器在后台运行,你可以添加 **-d--detach 标志。例如:

bash
docker run -d IMAGE_NAME

这样容器将会以守护进程方式在后台运行。

**针对已经在前台运行的容器,如果你想切换到其他任务,可以使用 **Ctrl + Z 将当前任务挂起,然后使用 bg 命令将其放到后台运行,或者使用 screentmux 等工具创建新的会话并管理后台任务。

**另外,对于已经在后台运行的容器,你可以使用 **docker attach 命令重新连接到容器的标准输入、输出和错误(STDIN/STDOUT/STDERR),例如:

bash
docker attach CONTAINER_ID

**这样可以重新连接到容器的控制台。当然,也可以使用 **docker exec 命令在容器中执行特定的命令,而不是直接进入控制台。

bash
docker exec -it CONTAINER_ID /bin/bash

**这样可以在容器内执行 **/bin/bash 命令(或者其他你想要执行的命令),从而获取一个交互式的终端。

查看容器状态

要查看当前正在运行的容器,以及所有包括停止运行的容器,可以使用 Docker 的命令行工具。以下是一些常用的命令:

查看当前正在运行的容器:

bash
docker ps

这个命令会列出当前正在运行的容器,并显示它们的一些基本信息,如容器 ID、名称、使用的镜像、启动时间等。

查看所有容器(包括停止运行的):

bash
docker ps -a

**添加 **-a 标志可以显示所有的容器,不仅包括当前正在运行的,还包括已经停止的容器。

查看容器的详细信息:

bash
docker inspect CONTAINER_ID

**使用 **docker inspect 命令可以查看特定容器的详细信息,包括容器的配置、网络设置、挂载的卷等信息。替换 CONTAINER_ID 为你要查看容器的实际 ID。

查看容器日志:

bash
docker logs CONTAINER_ID

docker logs 命令用于查看容器的日志输出。你可以使用它来查看容器运行期间的输出信息。同样替换 CONTAINER_ID 为你要查看日志的容器 ID。

这些命令能够帮助你管理和监控当前正在运行和已经停止的容器,并获取容器的详细信息和日志输出。

停止容器

**要停止正在运行的容器,可以使用 **docker stop 命令。

停止单个容器:

bash
docker stop CONTAINER_ID_OR_NAME

**将 **CONTAINER_ID_OR_NAME 替换为你要停止的容器的 ID 或者名称。例如:

bash
docker stop my_container

停止多个容器:

**如果你想要停止多个容器,可以在 **docker stop 命令后面列出多个容器的名称或 ID:

bash
docker stop CONTAINER_1 CONTAINER_2 CONTAINER_3

强制停止容器:

**有时候,容器可能不响应停止请求或者需要立即停止,可以添加 **-t--time 参数来设置停止容器的超时时间:

bash
docker stop -t 0 CONTAINER_ID_OR_NAME

**这里的 **-t 0 表示立即停止容器。请注意,强制停止容器可能会导致数据丢失或者其他问题,所以需要谨慎使用。

**停止容器后,你可以使用 **docker ps -a 命令检查容器的状态,确保容器已经停止运行。

当你停止 Docker 容器时,通常情况下,容器占用的端口会自动释放。停止容器后,其占用的网络资源,包括端口,会被释放并可供其他容器或应用程序使用。

Docker 的网络实现通常会在容器停止时释放容器占用的端口。然而,偶尔也可能存在一些情况,例如容器停止时发生异常、网络配置问题等情况下,端口不会立即释放。如果发现端口没有被释放,可以尝试以下步骤:

  1. 等待一段时间:通常情况下,Docker 会在容器停止后立即释放端口。等待一段时间(几秒钟到几分钟),观察端口是否被其他应用程序占用,如果没有,可能是系统在处理端口释放操作。
  2. 检查并重启 Docker 服务:有时候 Docker 服务本身可能出现问题,导致端口未被正确释放。可以尝试重新启动 Docker 服务来解决问题。
  3. 手动释放端口:如果出现问题,你可以手动查找并释放被占用的端口。可以使用类似于 netstatlsof 等命令来查看端口占用情况,然后手动释放。
bash
sudo netstat -tulpn | grep LISTEN  # 查看占用的端口及其进程信息

在大多数情况下,停止 Docker 容器会释放其占用的端口。如果遇到端口未被释放的问题,可以尝试以上方法来解决。

删除容器

**要删除特定的容器,可以使用 **docker rm 命令。在删除容器之前,请确保你已经停止了该容器的运行。

删除单个容器:

bash
docker rm CONTAINER_ID_OR_NAME

**将 **CONTAINER_ID_OR_NAME 替换为你要删除的容器的 ID 或者名称。例如:

bash
docker rm my_container

删除多个容器:

**如果你想要删除多个容器,可以在 **docker rm 命令后面列出多个容器的名称或 ID:

bash
docker rm CONTAINER_1 CONTAINER_2 CONTAINER_3

强制删除容器:

**有时候,某个容器可能正在运行中,可以添加 **-f--force 标志来强制删除容器:

bash
docker rm -f CONTAINER_ID_OR_NAME

请注意,在删除容器之前,确保你不再需要这些容器,并且容器已经停止运行。删除容器后,容器的数据将无法恢复。

删除容器镜像

要查看本地系统中的所有 Docker 镜像,可以使用以下命令:

bash
docker images

这将显示本地存储库中的所有镜像列表,包括它们的名称、标签、大小和创建时间等信息。

要删除本地系统中的 Docker 镜像,可以使用以下命令:

bash
docker rmi [镜像ID 或 镜像名称]

如果要删除单个镜像,可以通过其镜像 ID 或名称进行删除。例如:

bash
docker rmi ubuntu:latest

**这将删除本地系统中名为 **ubuntu 的最新标签版本的镜像。如果您知道要删除的特定镜像的 ID,也可以使用该 ID 进行删除。

如果要删除多个镜像,可以在同一命令中提供多个镜像 ID 或名称。例如:

bash
docker rmi ubuntu:latest alpine:latest

**这将删除本地系统中的 **ubuntualpine 镜像的最新标签版本。

请注意,删除镜像是一个不可逆的操作,请谨慎操作,并确保您不再需要这些镜像。

  • Docker

    Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的操作系统上。容器完全使用沙箱机制,几乎没有性能开销,可以很容易地在机器和数据中心中运行。

    492 引用 • 926 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...