Ubuntu环境 Docker 的安装和使用
安装
curl -fsSL https://get.docker.com | sh
或者
sudo apt install -y ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/ubuntu \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
-
docker-ce-
全称:Docker Community Edition
-
作用:这是 Docker 引擎的核心,也就是常说的 “Docker 守护进程” (
dockerd)。 -
功能:它是一个持续运行的后台服务,负责管理 Docker 的方方面面:
- 下载和存储镜像(Images)。
- 创建、运行、停止和删除容器(Containers)。
- 管理网络(Networks)和存储卷(Volumes)。
- 暴露 REST API 供其他工具(如 CLI)调用。
-
简言之:它是 Docker 的“大脑”和“发动机”。
-
-
docker-ce-cli- 全称:Docker Community Edition Command Line Interface
- 作用:这是 Docker 的命令行工具。你平时在终端里打的
docker命令就来自于它。 - 功能:它本身不执行管理操作,而是作为一个客户端,接收你的命令(如
docker run,docker ps),然后通过 API 与上面的docker-ce守护进程通信,并告诉你结果。 - 简言之:它是用户与 Docker 引擎交互的“遥控器”。
-
containerd.io-
作用:这是一个行业标准的容器运行时。它是更底层、更核心的组件。
-
功能:它负责容器生命周期的最底层操作,例如:
- 从镜像中拉取和存储容器文件系统层。
- 管理容器的执行、暂停、恢复和销毁。
- 管理容器网络和存储的低级细节。
-
与 Docker 的关系:从 Docker 的架构演变来看,
docker-ce(守护进程)现在将大部分实际的容器运行时操作委托给了containerd。这种解耦使得架构更清晰,containerd也可以被其他系统(如 Kubernetes)直接使用。 -
简言之:它是真正“动手”拉取镜像和运行容器的“工程师”,而
docker-ce是它的“项目经理”。
-
-
docker-buildx-plugin-
作用:Docker 的扩展构建插件,提供了下一代强大的镜像构建功能。
-
功能:它是
docker build命令的增强版,支持许多高级特性:- 多平台构建:一次性为多种 CPU 架构(如 amd64, arm64, arm/v7)构建镜像,无需复杂的交叉编译环境。
- 构建缓存管理:更高效的缓存机制,加速构建过程。
- 并行构建:同时处理多个构建任务,充分利用多核CPU。
-
注意:在较新版本的 Docker 中,
buildx已成为默认的构建引擎。
-
-
docker-compose-plugin-
作用:Docker 官方提供的 Compose 功能,用于定义和运行多容器应用。
-
功能:它提供了
docker compose命令(注意没有横线),用来替代旧的、独立的docker-compose(Python 编写)工具。- 通过一个
docker-compose.yml文件来配置你的应用所需的所有服务、网络、卷。 - 用一个命令(
docker compose up)就能启动整个复杂的应用栈(例如一个包含 Web 前端、后端 API、数据库、缓存的应用)。
- 通过一个
-
为什么是插件形式:Docker 公司为了更好的集成和发布周期,将 Compose 功能做成了 CLI 插件,而不是一个独立的二进制文件。
-
yczbest@CNCDL2012510939:~$ docker -v
Docker version 29.5.2, build 79eb04c
开机自启
systemctl is-enabled docker
换源
sudo vim /etc/docker/daemon.jsonsudo vim /etc/docker/daemon.json
{
"registry-mirrors": [
"https://docker.m.daocloud.io",
"http://hub-mirror.c.163.com",
"https://docker.nju.edu.cn"
]
}
sudo systemctl restart docker
sudo docker info
第四步:把当前用户加入 docker 组(避免每次都要 sudo)
# 将当前登录用户($USER 是环境变量,会自动替换为你的用户名)加入 docker 用户组
# 加入之后,该用户就可以不用 sudo 直接执行 docker 命令
sudo usermod -aG docker $USER
# 让用户组变更立即生效,无需重新登录(重新加载当前 shell 的用户组信息)
newgrp docker
如果
newgrp不好使,就直接重新登录 SSH 会话,组成员关系会自动刷新。
# 验证
grep docker /etc/group
使用
拉取镜像
docker pull ubuntu
运行容器
docker run -it ubuntu /bin/bash
参数说明:
- -i: 交互式操作。
- -t: 终端。
- ubuntu: ubuntu 镜像。
- /bin/bash:放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是 /bin/bash。