Docker常用命令总结

1. 前言

在容器化技术快速发展的今天,Docker 已成为开发者和运维人员日常工作中不可或缺的工具。通过 Docker,我们可以将应用程序及其依赖打包成轻量级、可移植的容器,从而实现快速部署和一致的运行环境。本篇博客将详细介绍 Docker 常用命令,帮助读者深入理解镜像和容器的管理,以及如何在实际工作中高效地使用 Docker。

2. Docker 镜像管理

2.1 什么是 Docker 镜像

Docker 镜像是一个只读的模板,包含了运行容器所需的文件系统和内容。它可以看作是容器的蓝图,定义了容器启动时的初始状态。镜像由一系列层组成,每一层都基于前一层,并添加了新的修改。

2.2 登录到 Docker 镜像仓库

在使用私有镜像仓库时,通常需要先进行登录认证。以下命令用于登录到指定的 Docker Registry:

docker login your-private-registry.com

执行该命令后,Docker 会提示输入用户名和密码。输入正确的凭证后,即可成功登录到镜像仓库。

2.3 拉取镜像

登录成功后,可以从镜像仓库中拉取所需的镜像。使用以下命令:

docker pull your-private-registry.com/your-repository/your-image:[镜像版本号]

其中:

  • your-private-registry.com:替换为您实际的私有镜像仓库地址。
  • your-repository/your-image:替换为实际的镜像仓库和镜像名称。
  • [镜像版本号]:替换为实际的版本标签。

例如:

docker pull your-private-registry.com/myrepo/myimage:latest

2.4 查看本地镜像

使用以下命令可以查看本地已有的 Docker 镜像:

docker images

该命令会列出所有本地存储的镜像,包括镜像的仓库名、标签、镜像 ID、创建时间和大小等信息。

示例输出:

REPOSITORY                                 TAG                 IMAGE ID            CREATED             SIZE
your-private-registry.com/myrepo/myimage    latest              abcdef123456        2 days ago          5GB
ubuntu                                      22.04               123456abcdef        3 weeks ago         77MB

2.5 删除本地镜像

如果需要删除某个本地镜像,可以使用以下命令:

docker image rm [镜像ID或名称]

例如,删除名为 ubuntu:22.04 的镜像:

docker image rm ubuntu:22.04

📝 在删除镜像前,确保没有容器正在使用该镜像,否则需要先删除相关容器。

3. Docker 容器管理

3.1 什么是 Docker 容器

Docker 容器是镜像的运行实例,它包含了运行时所需的全部环境。容器是独立且隔离的,但可以根据需要进行配置,实现与主机或其他容器的交互。

3.2 查看所有容器

使用以下命令可以查看所有容器,包括正在运行和已停止的:

docker ps -a

该命令会显示容器的容器 ID、名称、状态、创建时间等信息。

示例输出:

CONTAINER ID        IMAGE                               COMMAND             CREATED             STATUS                      NAMES
7890abcdef12        ubuntu:22.04                        "/bin/bash"         2 hours ago         Exited (0) 30 minutes ago   amazing_banach
1234abcd5678        cuda-11.7-pytorch-2.0               "/start.sh"         1 day ago           Up 12 hours                 my_training_container

3.3 新建并启动容器

从镜像中新建并启动容器,可以使用以下命令:

docker run -itd [镜像名称或ID]

例如,使用 ubuntu:22.04 镜像新建并启动容器:

docker run -itd ubuntu:22.04

参数说明:

  • docker run:命令用于新建并启动一个容器。
  • -i:交互式操作。
  • -t:为容器分配一个伪终端。
  • -d:后台运行容器,即启动容器后不进入容器的终端。

⚠️ 如果不使用 -d 参数,Docker 将在前台运行容器,并自动进入容器的交互式终端。

指定容器的主进程

新建容器时,通常需要指定一个命令作为容器的主进程。该命令运行结束后,容器也会随之停止。如果不指定命令,Docker 将使用镜像的默认命令。例如,对于 ubuntu 镜像,默认命令是 bash;对于 python 镜像,默认命令是 python3

示例,不加 -d 参数,直接进入 Python 交互式解释器:

docker run -it python:3.9

退出解释器后,容器也会停止。

容器的生命周期

Docker 容器的生命周期与其主进程绑定。当主进程结束时,容器也会停止。使用 -d 参数可以让容器在后台运行,但如果主进程退出,容器仍然会停止。

如果没有使用 -d 参数,按下 Ctrl+CCtrl+D,或执行 exit 命令,都会导致容器停止。

3.4 进入正在运行的容器

如果需要进入一个正在运行的容器,可以使用以下命令:

docker exec -it [容器ID或名称] bash

例如,进入名为 my_training_container 的容器:

docker exec -it my_training_container bash

进入容器后,可以在容器内执行各种操作,如同在主机系统中一样。

3.5 停止、启动和重启容器

停止容器:

docker stop [容器ID或名称]

启动已停止的容器:

docker start [容器ID或名称]

重启容器:

docker restart [容器ID或名称]

3.6 删除容器

使用以下命令可以删除特定的容器:

docker rm -f [容器ID或名称]

-f 表示强制删除正在运行的容器。

清理系统中所有已停止的容器,可以使用:

docker container prune

系统会提示确认,输入 y 后将删除所有已停止的容器。

如果需要删除系统中所有的容器(包括运行中和已停止的),可以使用以下命令:

docker rm -f $(docker ps -aq)

命令解析:

  • docker ps -aq:获取所有容器的 ID。
  • $(...):命令替换,将所有容器 ID 作为参数传递给 docker rm -f 命令。

⚠️ 该操作将删除所有容器,请谨慎执行。

4. Docker 使用技巧与注意事项

4.1 理解 Docker 的前台和后台运行

  • 前台运行: 不使用 -d 参数,Docker 将在前台运行容器。此时,容器的标准输入、输出和错误输出都与主机的终端相连。按下 Ctrl+CCtrl+D 或执行 exit 命令,都会导致容器停止。

  • 后台运行: 使用 -d 参数,Docker 将在后台运行容器。容器启动后,控制台会返回容器的 ID。此时,容器的主进程在后台运行,如果需要进入容器,可以使用 docker exec 命令。

4.2 持久化数据

容器中的数据默认是临时的,如果容器被删除,数据也会丢失。为了持久化数据,可以使用数据卷(Volume)或绑定挂载(Bind Mounts)。

示例,使用绑定挂载将主机目录挂载到容器中:

docker run -itd -v /host/path:/container/path ubuntu:22.04

4.3 网络配置

Docker 提供了多种网络模式,可以根据需求进行配置。例如,使用 --network 参数指定容器的网络。

示例,使用桥接网络:

docker run -itd --network bridge ubuntu:22.04

Ref

[1] https://docs.docker.com/
[2] https://yeasy.gitbook.io/docker_practice/
[3] https://www.docker.com/sites/default/files/d8/2019-09/docker-cheat-sheet.pdf

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Iareges

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值