从0学习使用Docker

Docker手册

1. 安装 Docker Engine

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# 执行以下命令卸载所有冲突的软件包
for pkg in docker.io docker-doc docker-compose podman-docker containerd runc; do sudo apt-get remove $pkg; done
# 安装依赖
sudo apt install apt-transport-https ca-certificates curl software-properties-common -y

# 添加 Docker GPG 密钥
sudo apt update
sudo apt install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

# 将存储库添加到Apt源代码中
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update

#安装Docker软件包
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

Docker命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
sudo docker ps                 // 查看所有正在运行容器
sudo docker ps -a // 查看所有容器
sudo docker ps -a -q // 查看所有容器ID
sudo docker stop 容器ID //停止指定容器
sudo docker kill 容器名称或ID //强制停止指定容器
sudo docker rm 容器名称或ID //删除指定容器
sudo systemctl start docker //启动Docker进程
sudo systemctl daemon-reload //守护Docker进程
sudo systemctl restart docker //重启Docker进程
sudo systemctl stop docker //关闭Docker进程
sudo usermod -aG docker user //将用户加入docker组
sudo apt purge docker-ce
sudo apt purge docker-ce-cli
sudo apt purge docker-containerd.io //卸载docker

创建Docker组

  1. 确认 docker 组是否存在
    1
    2
    3
    4
    getent group docker
    # 若输出类似 docker:x:999:, 说明组已存在,直接进行步骤 2
    # 若无输出,需先手动创建 docker 组
    sudo groupadd docker
  2. 将当前用户加入 docker 组
    1
    sudo usermod -aG docker $USER
  3. 重启设备刷新用户组权限
  4. 验证是否成功
    1
    2
    docker ps
    # 若仍提示 Permission denied,请检查步骤是否正确,或重启系统后再试。

Docker更换源

打开编辑(现在很多镜像地址都不能用了,建议搜索最新镜像地址进行尝试)
sudo nano /etc/docker/daemon.json

1
2
3
4
5
6
7
{
"registry-mirrors": [
"https://docker.mirrors.ustc.edu.cn",
"https://hub-mirror.c.163.com",
"https://registry.docker-cn.com"
]
}
Ctrl+X后按Y,再按Enter进行保存

重启Docker服务

1
2
sudo systemctl daemon-reload
sudo systemctl restart docker

设置Docker安装路径

首先停止正在运行的Docker服务

1
sudo systemctl stop docker

复制数据到新路径,/new/path/docker为新的储存路径

1
sudo cp -r /var/lib/docker /new/path/docker

修改Docker守护进程配置,编辑Docker的配置文件 /etc/docker/daemon.json

1
2
3
{
"data-root": "/new/path/docker", #(如果文件里还有其他内容比如设置镜像,这里要加一个,)
}

重启Docker并验证

1
sudo systemctl start docker

操作指令

1
2
3
docker pull xxx #从 Docker Hub 中拉出新版本
docker stop xxx #停止当前运行的容器
docker rm xxx # 移除当前运行的容器

Docker-Compose

安装

Docker HubDocker-compose文档

1
docker compose version

查看是否docker-compose版本确认是否安装
Docker Compose 通常与 Docker 一起安装。如果你已经安装了 Docker,不再需要额外安装,如果没有安装也可以手动安装
这里下载地址是v2.39.4版本也可以根据最新版本进行修改

1
2
3
4
5
# 下载 Docker Compose 二进制
curl -SL https://github.com/docker/compose/releases/download/v2.39.4/docker-compose-linux-x86_64 -o $DOCKER_CONFIG/cli-plugins/docker-compose

# 赋予执行
chmod +x /usr/local/bin/docker-compose

如果无法从github上下载docker-compose文件,用电脑浏览器打开Docker-compose并下载对应文件上传到linux服务器的/usr/local/bin目录中并赋予权限(注意修改文件名称)

1
sudo chmod +x /usr/local/bin/docker-compose

使用

每个项目在docker中创建相对应项目名称

1
2
3
cd /home/docker
mkdir 项目名称
cd 项目名称

再在项目名称目录里创建docker compose文件进行编辑

1
sudo nano docker-compose.yml

文件保存之后,部署项目

1
sudo docker compose up -d

更新

1
2
docker-compose pull #拉取最新镜像
docker-compose up -d #重新部署容器

卸载

1
2
3
docker-compose down #基础删除(保留数据卷,仅删除容器和网络)
docker-compose down -v #彻底删除(包括数据卷,数据会丢失)
docker-compose down --rmi all #额外清理(删除未使用的镜像)

查看日志

1
docker compose log 项目名

报错

  1. Warning: Stopping docker.service, but it can still be activated by: docker.socket
    Docker默认开启自动唤醒机制,首先关掉docker.socket

    1
    sudo systemctl stop docker.socket   
  2. 错误二

    解: 是由于系统缺少 Docker 官方仓库的 GPG 公钥,导致 APT 包管理器无法验证软件包签名。
    输入命令添加Docker密钥

    1
    2
    sudo curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc
    sudo chmod a+r /etc/apt/keyrings/docker.asc