安装 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
命令将其放到后台运行,或者使用 screen
或 tmux
等工具创建新的会话并管理后台任务。
**另外,对于已经在后台运行的容器,你可以使用 **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 的网络实现通常会在容器停止时释放容器占用的端口。然而,偶尔也可能存在一些情况,例如容器停止时发生异常、网络配置问题等情况下,端口不会立即释放。如果发现端口没有被释放,可以尝试以下步骤:
- 等待一段时间:通常情况下,Docker 会在容器停止后立即释放端口。等待一段时间(几秒钟到几分钟),观察端口是否被其他应用程序占用,如果没有,可能是系统在处理端口释放操作。
- 检查并重启 Docker 服务:有时候 Docker 服务本身可能出现问题,导致端口未被正确释放。可以尝试重新启动 Docker 服务来解决问题。
- 手动释放端口:如果出现问题,你可以手动查找并释放被占用的端口。可以使用类似于
netstat
或lsof
等命令来查看端口占用情况,然后手动释放。
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
**这将删除本地系统中的 **ubuntu
和 alpine
镜像的最新标签版本。
请注意,删除镜像是一个不可逆的操作,请谨慎操作,并确保您不再需要这些镜像。
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于