docker安装以及镜像加速,修改数据存储,错误解决!

本文介绍如何在CentOS上通过关闭防火墙、安装依赖、配置阿里云镜像源和安装Docker来优化国内网络环境。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

docker安装详解

国内源安装docker

1.关闭防火墙与selinux

[root@docker ~]#  systemctl stop firewalld
[root@docker ~]#  setenforce 0

2.安装依赖包

[root@docker ~]#  yum install -y yum-utils device-mapper-persistent-data lvm2 git

3.配置阿里云的docker yum源

[root@docker ~]# yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

4.安装指定版本的docker

a. 查看docker版本
 [root@docker ~]#  yum list docker-ce --showduplicates
b.安装旧版本的docker
 需要指定完整的rpm包的包名,并且加上--setopt=obsoletes=0 参数:
[root@docker ~]#  # yum install -y --setopt=obsoletes=0 \
        docker-ce-17.03.2.ce-1.el7.centos.x86_64 \
        docker-ce-selinux-17.03.2.ce-1.el7.centos.noarch

docker初期版本是1.13(同一版本,开源)

——》分类型 1.15 - 1.17 过程中分成两种。

①开源社区 docker-ce ②企业版 docker-ee

c. 安装新版本的docker
[root@docker ~]#  yum install docker-ce -y

 加上rpm包名的版本号部分或不加都可以:
[root@docker ~]# yum install docker-ce-18.03.0.ce  -y

启动docker服务,并设置开机自启

[root@docker ~]#  systemctl start docker
[root@docker ~]#  systemctl enable docker

查看docker运行状态

[root@docker ~]# docker info
Client: Docker Engine - Community
 Version:    24.0.7
 Context:    default
 Debug Mode: false
 Plugins:
  buildx: Docker Buildx (Docker Inc.)
    Version:  v0.11.2
    Path:     /usr/libexec/docker/cli-plugins/docker-buildx
  compose: Docker Compose (Docker Inc.)
    Version:  v2.21.0
    Path:     /usr/libexec/docker/cli-plugins/docker-compose

Server:
 Containers: 3
  Running: 3
  Paused: 0
  Stopped: 0
 Images: 3
 Server Version: 24.0.7
 Storage Driver: overlay2
  Backing Filesystem: xfs
  Supports d_type: true
  Using metacopy: false
  Native Overlay Diff: true
  userxattr: false
 Logging Driver: json-file
 Cgroup Driver: systemd
 Cgroup Version: 1
 Plugins:
  Volume: local
  Network: bridge host ipvlan macvlan null overlay
  Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
 Swarm: inactive
 Runtimes: runc io.containerd.runc.v2
 Default Runtime: runc
 Init Binary: docker-init
 containerd version: d8f198a4ed8892c764191ef7b3b06d8a2eeb5c7f
 runc version: v1.1.10-0-g18a0cb0
 init version: de40ad0
 Security Options:
  seccomp
   Profile: builtin
 Kernel Version: 3.10.0-1160.el7.x86_64
 Operating System: CentOS Linux 7 (Core)
 OSType: linux
 Architecture: x86_64
 CPUs: 4
 Total Memory: 7.62GiB
 Name: docker
 ID: 26ae8f4b-4580-42bb-8486-c59fc8b40cda
 Docker Root Dir: /docker-data
 Debug Mode: false
 Experimental: false
 Insecure Registries:
  127.0.0.0/8
 Registry Mirrors:
  https://pilvpemn.mirror.aliyuncs.com/
 Live Restore Enabled: false

查看docker的版本状态

[root@docker ~]# docker -v
Docker version 24.0.7, build afdd53b


[root@docker ~]# docker version
Client: Docker Engine - Community
 Version:           24.0.7
 API version:       1.43
 Go version:        go1.20.10
 Git commit:        afdd53b
 Built:             Thu Oct 26 09:11:35 2023
 OS/Arch:           linux/amd64
 Context:           default

Server: Docker Engine - Community
 Engine:
  Version:          24.0.7
  API version:      1.43 (minimum version 1.12)
  Go version:       go1.20.10
  Git commit:       311b9ff
  Built:            Thu Oct 26 09:10:36 2023
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.6.25
  GitCommit:        d8f198a4ed8892c764191ef7b3b06d8a2eeb5c7f
 runc:
  Version:          1.1.10
  GitCommit:        v1.1.10-0-g18a0cb0
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0

docker的环境配置,设置镜像加速

[root@docker ~]# mkdir -p /etc/docker

[root@docker ~]# tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://pilvpemn.mirror.aliyuncs.com"],
  "exec-opts": ["native.cgroupdriver=systemd"],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m"
  },
  "storage-driver": "overlay2"
}
EOF

[root@docker ~]# systemctl daemon-reload   #重载系统配置

[root@docker ~]#  systemctl restart docker
#注意:一定注意编码问题,出现错误---查看命令:journalctl -amu docker 即可发现错误

docker数据存储位置

查看存储路径
[root@docker ~]# docker info | grep Root
 Docker Root Dir: /var/lib/docker

修改默认的存储位置

在dockerd的启动命令后面追加--data-root参数指定新的位置

[root@docker ~]# vim  /usr/lib/systemd/system/docker.service

创建存储目录,重载配置,重启docker
[root@docker ~]#  mkdir /docker-data
[root@docker ~]# systemctl daemon-reload 
[root@docker ~]# systemctl restart docker

查看是否生效

[root@docker ~]# docker info  | grep Root
 Docker Root Dir: /docker-data
[root@docker ~]# cd /docker-data/
[root@docker docker-data]# ls
buildkit  containers  engine-id  image  network  overlay2  plugins  runtimes  swarm  tmp  volumes

报错及解决办法

报错1

    docker info的时候报如下错误
    bridge-nf-call-iptables is disabled

解决1

    追加如下配置,然后重启系统
    # vim /etc/sysctl.conf   
    net.bridge.bridge-nf-call-ip6tables = 1
    net.bridge.bridge-nf-call-iptables = 1
    net.bridge.bridge-nf-call-arptables = 1

问题2

    虚拟机ping百度也能ping通,但是需要等好几秒才出结果,关键是下载镜像一直报错如下
    # docker pull daocloud.io/library/nginx
    Using default tag: latest
    Error response from daemon: Get https://daocloud.io/v2/: dial tcp: lookup daocloud.io on 192.168.1.2:53: read udp   192.168.1.189:41335->192.168.1.2:53: i/o timeout

解决2

    我的虚拟机用的网关和dns都是虚拟机自己的.1或者.2,把DNS改成8.8.8.8问题就解决了,ping百度也秒出结果
    # vim /etc/resolv.conf
    nameserver 8.8.8.8

国内源的介绍及使用

Docker 加速器  
使用 Docker 的时候,需要经常从官方获取镜像,但是由于显而易见的网络原因,拉取镜像的过程非常耗时,严重影响使用 Docker 的体验。因此 DaoCloud 推出了加速器工具解决这个难题,通过智能路由和缓存机制,极大提升了国内网络访问 Docker Hub 的速度,目前已经拥有了广泛的用户群体,并得到了 Docker 官方的大力推荐。
如果您是在国内的网络环境使用 Docker,那么 Docker 加速器一定能帮助到您。

Docker 加速器对 Docker 的版本有要求吗?    
需要 Docker 1.8 或更高版本才能使用,如果您没有安装 Docker 或者版本较旧,请安装或升级。    

Docker 加速器支持什么系统?    
Linux, MacOS 以及 Windows 平台。    

Docker 加速器是否收费?    
DaoCloud 为了降低国内用户使用 Docker 的门槛,提供永久免费的加速器服务,请放心使用。  

国内比较好的镜像源:网易蜂巢、aliyun和daocloud,下面是daocloud配置方式:
Docker Hub并没有在国内部署服务器或者使用国内的CDN服务,因此在国内特殊的网络环境下,镜像下载十分耗时。
为了克服跨洋网络延迟,能够快速高效地下载Docker镜像,可以采用DaoCloud提供的服务Docker Hub Mirror,速度快很多

1.注册网站账号

2.然后进入你自己的"控制台",选择"加速器",点"立即开始",接入你自有的主机,就看到如下的内容了

 • 下载并安装相关软件
     #curl -L -o /tmp/daomonit_amd64.deb https://get.daocloud.io/daomonit/daomonit_amd64.debsudo 
     #dpkg -4i /tmp/daomonit_amd64.deb
    • 配置
     #sudo daomonit -token=e16ed16b2972865e19b143695cf08cad850d5570 save-config
    • 启动服务
     #service daomonit start

3.配置完成后从Docker Hub Mirror下载镜像,命令:

  #dao pull ubuntu

### Docker Pull 本地镜像仓库报错解决方案 当从本地Docker镜像仓库拉取镜像时遇到错误,通常可能是由于网络连接问题、DNS解析异常、存储层损坏或其他配置不当引起的。以下是针对该问题的具体分析和解决方法。 #### 排查 DNS 配置 如果目标仓库域名无法被正确解析,则可能导致 `docker pull` 失败。可以通过以下方式验证并修复: - 修改 `/etc/docker/daemon.json` 文件,添加或更新 DNS 设置为可靠的公共 DNS 或内部 DNS 地址。 ```json { "dns": ["8.8.8.8", "114.114.114.114"] } ``` - 完成修改后重新加载 Docker 服务以使更改生效[^3]。 ```bash sudo systemctl daemon-reload sudo systemctl restart docker ``` #### 检查私有仓库状态 对于自建的私有仓库(如通过 Registry 构建),可能因清理旧版本镜像而破坏了部分元数据文件结构,从而引发新的推送或拉取操作中的 `unexpected EOF` 错误。此时建议执行以下步骤来恢复仓库健康状况: - 停止当前运行的服务实例; - 使用官方工具扫描存储路径下的对象完整性; - 删除任何标记为不可访问或者孤立的数据片段后再尝试重建索引表[^2]。 #### 调整源地址与代理设置 有时默认使用的远程公有库也可能存在不稳定因素影响到整个流程效率甚至造成中断现象发生。可以考虑切换至更稳定的国内加速站点作为备选方案之一;另外如果有防火墙限制的话记得开放必要的端口范围以便于内外网之间顺利通信。 综上所述,上述提到的方法均能有效应对大部分场景下关于从本地Docker镜像仓库存储设备读写过程中所遭遇的技术难题情况的发生概率大大降低下来之后再配合定期维护机制则可长期保持良好运转态势。 ```python print("以上措施有助于改善Docker环境稳定性") ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值