1613 字
8 分钟
Docker使用教程和镜像加速
2099-01-01

Docker Hub 镜像加速#

国内拉取镜像有时会遇到困难,对于学习或者开发者来说很难受,此时可以配置镜像加速。

安装Docker#

官方安装脚本:

curl -fsSL https://get.docker.com | sh

国内安装脚本 (脚本来源)

bash <(curl -sSL https://gitee.com/wanfeng789/shell/raw/master/docker.sh)

或者使用清华大学源

bash <(curl -sSL https://gitee.com/wanfeng789/shell/raw/master/install.sh) --mirror Tuna
手动离线安装Docker

下载 Docker:#

官方文件下载地址——下载后上传到root目录

清华大学下载地址

tar xzvf docker-26.1.3.tgz     # 替换版本号
sudo mv docker/* /usr/local/bin/

创建 Docker 服务文件#

sudo vim /etc/systemd/system/docker.service

添加以下内容

[Unit]
Description=Docker Application Container Engine
After=network-online.target firewalld.service
Wants=network-online.target

[Service]
Type=notify
ExecStart=/usr/local/bin/dockerd
ExecReload=/bin/kill -s HUP $MAINPID
Restart=always
RestartSec=2
StartLimitBurst=3
StartLimitInterval=60s
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
Delegate=yes
KillMode=process

[Install]
WantedBy=multi-user.target

启动并启用 Docker 服务#

sudo chmod +x /etc/systemd/system/docker.service
sudo systemctl daemon-reload
sudo systemctl start docker
sudo systemctl enable docker

查看版本#

docker -v
手动离线安装Docker-compose

国内环境手动安装Docker-compose

点这里手动下载文件 上传到服务器的/usr/local/bin目录

重命名为docker-compose

sudo cp docker-compose-linux-x86_64 /usr/local/bin/docker-compose

增加执行权限

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

验证安装

docker-compose --version

注意: 由于是以二进制文件安装的docker-compose,所以运行命令有所变化,运行示例

docker-compose up -d

区别在于中间的-,官方安装脚本是以插件形式安装的docker-compose,所以中间不需要-

配置加速地址#

Ubuntu 16.04+、Debian 8+、CentOS 7+

创建或修改 /etc/docker/daemon.json

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<EOF
{
    "registry-mirrors": [
        "https://docker.1ms.run",
        "https://hub.rat.dev",
        "https://docker.1panel.live"
    ]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

提示:如果不方便重启Docker服务,也可以不用设置全局加速地址,拉取镜像时增加加速地址即可,示例:#

docker pull docker.1panel.live/library/mysql:5.7

说明:library是一个特殊的命名空间,它代表的是官方镜像。如果是某个用户的镜像就把library替换为镜像的用户名。

Docker Desktop 配置#

对于电脑的Docker Desktop用户,点击右上角设置,找到Docker Engine然后修改配置,修改后的示例:

{
  "builder": {
    "gc": {
      "defaultKeepStorage": "20GB",
      "enabled": true
    }
  },
  "experimental": false,
  "registry-mirrors": [
    "https://docker.1ms.run",
    "https://hub.rat.dev",
    "https://docker.1panel.live"
  ]
}

然后点击右下角的Apply & restart保存并重启即可。

检查加速是否生效#

查看docker系统信息 docker info,如果从结果中看到了你配置的加速地址,说明配置成功。

Registry Mirrors:
 [...]
 https://docker.1panel.live

使用代理拉取镜像#

  • 注意:使用了加速源就别使用这个方法了

创建配置文件#

sudo mkdir -p /etc/systemd/system/docker.service.d
sudo vim /etc/systemd/system/docker.service.d/http-proxy.conf

在文件中添加代理#

[Service]
Environment="HTTP_PROXY=http://127.0.0.1:1080"
Environment="HTTPS_PROXY=http://127.0.0.1:1080"

重启Docker#

sudo systemctl daemon-reload
sudo systemctl restart docker

查看环境变量#

sudo systemctl show --property=Environment docker

备用方法:打包镜像到本地#

1:压缩保存镜像到本地

docker save 镜像名 > 镜像名.tar

2:手动上传到另一个服务器

3:另一个服务器解压镜像

docker load < 镜像名.tar

4:查看镜像

docker images

Docker Hub 镜像测速#

拉取镜像时,可使用 time 统计所花费的总时间。测速前记得移除本地的镜像。

例如:time docker pull node:latest

为Docker启用IPV6#

创建或修改/etc/docker/daemon.json文件

增加如下配置:

{
  "ipv6": true,
  "fixed-cidr-v6": "2001:db8:1::/64"
}

重启:sudo systemctl restart docker

卸载Docker#

sudo systemctl stop docker
sudo apt-get purge docker-ce docker-ce-cli containerd.io
sudo rm -rf /etc/docker /var/lib/docker

Docker最新稳定加速源列表#

企业自建的镜像加速,一般很稳定不会被和谐

提供者镜像加速地址说明加速类型
耗子面板https://hub.rat.dev无限制Docker Hub
1panelhttps://docker.1panel.live无限制Docker Hub
1panelhttps://proxy.1panel.live无限制Docker Hub
毫秒镜像https://docker.1ms.run国内CDN & 有黑名单Docker Hub
DaoCloudhttps://docker.m.daocloud.io白名单和限流Docker Hub
华为云https://***.mirror.swr.myhuaweicloud.com需登录分配Docker Hub
南京大学https://ghcr.nju.edu.cnghcr加速ghcr
南京大学https://k8s.nju.edu.cnk8s加速k8s

Docker常用命令:#

功能命令说明
编译镜像docker build -t 镜像名 .docker login登录docker hub
推送镜像docker push 用户名/镜像名需先标记镜像 docker tag 53321f173e 用户名/镜像名
查看容器docker ps-a查看包括已停止的容器
容器资源占用docker stats查看所有容器资源占用
容器详细信息docker inspect挂载看Mounts网络看Networks
进入容器内部docker exec -it 容器名 /bin/sh结尾使用/bash也行
创建容器网络docker network create my-networkmy-network为网络名称
容器加入网络docker network connect my-network 容器名替换容器名或ID
宿主机网络network_mode: hostdocker-compose使用
宿主机网络--network hostdocker run使用
查看网络docker network inspect my-network查看my-network网络中的容器
停止容器docker stopdocker stop 容器名或ID
启动容器docker startdocker start 容器名或ID
重启容器docker restartdocker restart 容器名或ID
删除容器docker rmdocker rm 容器名或ID
查看镜像docker imagesdocker images 镜像名或ID
删除镜像docker rmi -fdocker rmi -f 镜像名或ID
清除资源docker system prune清除所有未使用资源容器 网络 镜像 缓存
删除所有镜像docker rmi -f $(docker images -aq)删除所有镜像
删除所有容器docker container prune -f删除所有已停止容器
停止所有容器docker stop $(docker ps -aq)停止所有容器
停止并删除docker compose down停止并删除编排容器
重新创建容器docker compose up -d --force-recreate强制删除并重启编排容器
复制文件docker cp wordpress:/app/data.yaml /hemo从容器复制到宿主机
复制文件docker cp /home/data.yaml wordpress:/app从宿主机复制到容器

buildx命令介绍#

Docker Buildx 是一个 docker CLI 插件,其扩展了 docker 命令,支持 Moby BuildKit 提供的功能。提供了与 docker build 相同的用户体验,并增加了许多新功能。

注意该功能需要 Docker v19.03 以上的版本。

主要特点:#

  • 并发构建多种架构
  • 自动垃圾收集
  • 可扩展的前端格式
  • 并发依赖解析
  • 高效指令缓存
  • 构建缓存导入/导出
  • 嵌套构建作业调用
  • 可分配的 worker
  • 多种输出格式
  • 可插入式架构
  • 无需root权限执行

简单的使用(更多强大的功能请自行搜索相关文档)#

  1. 确保已安装 QEMU 模拟器支持
docker run --privileged --rm tonistiigi/binfmt --install all
  1. 创建新的构建器实例
docker buildx create --name mybuilder --driver docker-container
docker buildx use mybuilder
docker buildx inspect --bootstrap
  1. 构建多架构镜像并输出到本地
docker buildx build \
  --platform linux/amd64,linux/arm64,linux/arm/v7 \
  -t myapp:latest \
  --load \
  .
  1. 查看构建的镜像
docker images
  1. 测试运行特定架构的镜像
docker run --rm --platform linux/amd64 myapp:latest
docker run --rm --platform linux/arm64 myapp:latest
docker run --rm --platform linux/arm/v7 myapp:latest
  1. 如果要删除构建器
docker buildx rm mybuilder
Docker使用教程和镜像加速
https://emohe.cn/posts/docker/
作者
阿涛の小破站
发布于
2099-01-01
许可协议
CC BY-NC-SA 4.0