目录
- 1. 前言
- 2. Docker 镜像管理
- 2.1 什么是 Docker 镜像
- 2.2 登录到 Docker 镜像仓库
- 2.3 拉取镜像
- 2.4 查看本地镜像
- 2.5 删除本地镜像
- 3. Docker 容器管理
- 3.1 什么是 Docker 容器
- 3.2 查看所有容器
- 3.3 新建并启动容器
- 3.4 进入正在运行的容器
- 3.5 停止、启动和重启容器
- 3.6 删除容器
- 4. Docker 使用技巧与注意事项
- 4.1 理解 Docker 的前台和后台运行
- 4.2 持久化数据
- 4.3 网络配置
- Ref
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+C
、Ctrl+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+C
、Ctrl+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