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
  1. docker-ce

    • 全称:Docker Community Edition

    • 作用:这是 Docker 引擎的核心,也就是常说的 “Docker 守护进程” (dockerd)。

    • 功能:它是一个持续运行的后台服务,负责管理 Docker 的方方面面:

      • 下载和存储镜像(Images)。
      • 创建、运行、停止和删除容器(Containers)。
      • 管理网络(Networks)和存储卷(Volumes)。
      • 暴露 REST API 供其他工具(如 CLI)调用。
    • 简言之:它是 Docker 的“大脑”和“发动机”。

  2. docker-ce-cli

    • 全称:Docker Community Edition Command Line Interface
    • 作用:这是 Docker 的命令行工具。你平时在终端里打的 docker 命令就来自于它。
    • 功能:它本身不执行管理操作,而是作为一个客户端,接收你的命令(如 docker run, docker ps),然后通过 API 与上面的 docker-ce 守护进程通信,并告诉你结果。
    • 简言之:它是用户与 Docker 引擎交互的“遥控器”。
  3. containerd.io

    • 作用:这是一个行业标准的容器运行时。它是更底层、更核心的组件。

    • 功能:它负责容器生命周期的最底层操作,例如:

      • 从镜像中拉取和存储容器文件系统层。
      • 管理容器的执行、暂停、恢复和销毁。
      • 管理容器网络和存储的低级细节。
    • 与 Docker 的关系:从 Docker 的架构演变来看,docker-ce(守护进程)现在将大部分实际的容器运行时操作委托给了 containerd。这种解耦使得架构更清晰,containerd 也可以被其他系统(如 Kubernetes)直接使用。

    • 简言之:它是真正“动手”拉取镜像和运行容器的“工程师”,而 docker-ce 是它的“项目经理”。

  4. docker-buildx-plugin

    • 作用:Docker 的扩展构建插件,提供了下一代强大的镜像构建功能。

    • 功能:它是 docker build 命令的增强版,支持许多高级特性:

      • 多平台构建:一次性为多种 CPU 架构(如 amd64, arm64, arm/v7)构建镜像,无需复杂的交叉编译环境。
      • 构建缓存管理:更高效的缓存机制,加速构建过程。
      • 并行构建:同时处理多个构建任务,充分利用多核CPU。
    • 注意:在较新版本的 Docker 中,buildx 已成为默认的构建引擎。

  5. 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。