Linux安装docker及运行容器测试

背景:

项目用的docker一直都是安装配置好的,最近研究一些其他东西,安装了KyV10的虚机,发现没有安装也没有配置,于是开始安装并做记录。

操作:

步骤 1:查找仓库里是否有 docker

bash 复制代码
[root@localhost ~]# yum list | grep docker
docker-runc.x86_64                                      1.0.0.rc3-222.ky10                     @anaconda          
containerd.io.x86_64                                    1.6.32-3.1.el8                         docker-ce-stable   
docker-anaconda-addon.x86_64                            0.4-10.ky10                            ks10-SP3x86-os     
docker-anaconda-addon.x86_64                            0.4-10.ky10                            ks10-adv-os        
docker-buildx-plugin.x86_64                             0.14.0-1.el8                           docker-ce-stable   
docker-ce.x86_64                                        3:26.1.3-1.el8                         docker-ce-stable   
docker-ce-cli.x86_64                                    1:26.1.3-1.el8                         docker-ce-stable   
docker-ce-rootless-extras.x86_64                        26.1.3-1.el8                           docker-ce-stable   
docker-compose.noarch                                   1.22.0-4.ky10                          ks10-SP3x86-os     
docker-compose.noarch                                   1.22.0-4.ky10                          ks10-adv-os        
docker-compose-plugin.x86_64                            2.27.0-1.el8                           docker-ce-stable   
docker-engine.x86_64                                    1:18.09.0-261.p06.04.ky10              ks10-adv-updates   
docker-proxy.x86_64                                     0.8.0.dev.2-100.p04.ky10               ks10-SP3x86-updates
docker-proxy.x86_64                                     0.8.0.dev.2-100.p04.ky10               ks10-adv-updates   
docker-runc.x86_64                                      1.0.0.rc3-229.p02.ky10                 ks10-SP3x86-updates
docker-runc.x86_64                                      1.0.0.rc3-229.p02.ky10                 ks10-adv-updates   
docker-scan-plugin.x86_64                               0.23.0-3.el8                           docker-ce-stable   
pcp-pmda-docker.x86_64                                  4.1.3-15.p02.ky10                      ks10-adv-updates   
podman-docker.noarch                                    1:0.10.1-10.p07.ky10                   ks10-SP3x86-updates
podman-docker.noarch                                    1:0.10.1-10.p07.ky10                   ks10-adv-updates   
python-docker-tests.noarch                              4.0.2-3.ky10                           ks10-SP3x86-updates
python-docker-tests.noarch                              4.0.2-3.ky10                           ks10-adv-updates   
python-dockerpty-help.noarch                            0.4.1-1.ky10                           ks10-SP3x86-os     
python-dockerpty-help.noarch                            0.4.1-1.ky10                           ks10-adv-os        
python2-docker-pycreds.noarch                           0.4.0-1.1.ky10                         ks10-SP3x86-os     
python2-docker-pycreds.noarch                           0.4.0-1.1.ky10                         ks10-adv-os        
python2-dockerpty.noarch                                0.4.1-1.ky10                           ks10-SP3x86-os     
python2-dockerpty.noarch                                0.4.1-1.ky10                           ks10-adv-os        
python3-docker.noarch                                   4.0.2-3.ky10                           ks10-SP3x86-updates
python3-docker.noarch                                   4.0.2-3.ky10                           ks10-adv-updates   
python3-docker-pycreds.noarch                           0.4.0-1.1.ky10                         ks10-SP3x86-os     
python3-docker-pycreds.noarch                           0.4.0-1.1.ky10                         ks10-adv-os        
python3-dockerpty.noarch                                0.4.1-1.ky10                           ks10-SP3x86-os     
python3-dockerpty.noarch                                0.4.1-1.ky10                           ks10-adv-os

步骤2:看到了 docker 或者 docker-ce,直接安装:

bash 复制代码
[root@localhost ~]# yum install -y docker
Last metadata expiration check: 0:01:13 ago on 2026年07月17日 星期五 18时11分53秒.
Dependencies resolved.
===============================================================================================================================================
 Package                        Architecture            Version                                     Repository                            Size
===============================================================================================================================================
Installing:
 docker-engine                  x86_64                  1:18.09.0-261.p06.04.ky10                   ks10-adv-updates                      33 M
Installing dependencies:
 containerd                     x86_64                  1.2.0-213.p05.ky10                          ks10-adv-updates                      15 M
 docker-proxy                   x86_64                  0.8.0.dev.2-100.p04.ky10                    ks10-SP3x86-updates                  757 k

Transaction Summary
===============================================================================================================================================
Install  3 Packages

Total download size: 49 M
Installed size: 203 M
Downloading Packages:
(1/3): docker-proxy-0.8.0.dev.2-100.p04.ky10.x86_64.rpm                                                         29 MB/s | 757 kB     00:00    
(2/3): containerd-1.2.0-213.p05.ky10.x86_64.rpm                                                                1.1 MB/s |  15 MB     00:14    
(3/3): docker-engine-18.09.0-261.p06.04.ky10.x86_64.rpm                                                        1.5 MB/s |  33 MB     00:21    
-----------------------------------------------------------------------------------------------------------------------------------------------
Total                                                                                                          2.3 MB/s |  49 MB     00:21     
Kylin Linux Advanced Server 10 - Updates                                                                       1.7 MB/s | 1.7 kB     00:00    
Importing GPG key 0x7A486D9F:
 Userid     : "NeoKylin (release key) <support@cs2c.com.cn>"
 Fingerprint: B814 9E68 5286 4585 CE41 143B 41F8 AEBE 7A48 6D9F
 From       : /etc/pki/rpm-gpg/RPM-GPG-KEY-kylin
Key imported successfully
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Preparing        :                                                                                                                       1/1 
  Installing       : containerd-1.2.0-213.p05.ky10.x86_64                                                                                  1/3 
  Installing       : docker-proxy-0.8.0.dev.2-100.p04.ky10.x86_64                                                                          2/3 
  Installing       : docker-engine-1:18.09.0-261.p06.04.ky10.x86_64                                                                        3/3 
  Running scriptlet: docker-engine-1:18.09.0-261.p06.04.ky10.x86_64                                                                        3/3 
Created symlink /etc/systemd/system/multi-user.target.wants/docker.service → /usr/lib/systemd/system/docker.service.

  Verifying        : docker-proxy-0.8.0.dev.2-100.p04.ky10.x86_64                                                                          1/3 
  Verifying        : containerd-1.2.0-213.p05.ky10.x86_64                                                                                  2/3 
  Verifying        : docker-engine-1:18.09.0-261.p06.04.ky10.x86_64                                                                        3/3 

Installed:
  containerd-1.2.0-213.p05.ky10.x86_64     docker-engine-1:18.09.0-261.p06.04.ky10.x86_64     docker-proxy-0.8.0.dev.2-100.p04.ky10.x86_64    

Complete!

步骤3:安装完成后启动:

bash 复制代码
    systemctl start docker
    systemctl enable docker
    

步骤4:配置一下镜像加速

安装成功后,必须配置一下镜像加速,否则在麒麟/国内环境下拉取镜像会非常慢或失败。

创建配置目录,写入镜像加速配置

bash 复制代码
[root@localhost ~]# mkdir -p /etc/docker
[root@localhost ~]# cat > /etc/docker/daemon.json <<EOF
> {
>   "registry-mirrors": [
>     "https://docker.mirrors.ustc.edu.cn",
>     "https://hub-mirror.c.163.com"
>   ],
>   "exec-opts": ["native.cgroupdriver=systemd"]
> }
> EOF

[root@localhost ~]# systemctl daemon-reload
[root@localhost ~]# systemctl start docker
[root@localhost ~]# systemctl enable docker

(注意:增加了 "native.cgroupdriver=systemd",这对麒麟系统的 systemd 兼容性很重要)

步骤5:验证

bash 复制代码
[root@localhost ~]# docker version
Client:
 Version:           18.09.0
 EulerVersion:      18.09.0.261
 API version:       1.39
 Go version:        go1.15.7
 Git commit:        
 Built:             Wed Jul 23 09:32:23 2025
 OS/Arch:           linux/amd64
 Experimental:      false

Server:
 Engine:
  Version:          18.09.0
  EulerVersion:     18.09.0.261
  API version:      1.39 (minimum version 1.12)
  Go version:       go1.15.7
  Git commit:       bae0837
  Built:            Wed Jul 23 09:30:59 2025
  OS/Arch:          linux/amd64
  Experimental:     false

问题

问题1:时钟问题

bash 复制代码
[root@localhost ~]# date
2026年 07月 17日 星期五 18:15:57 CST

今天是:2026年 08月 17日 星期一

手动同步一次:

bash 复制代码
[root@localhost ~]# systemctl status chronyd
● chronyd.service - NTP client/server
   Loaded: loaded (/usr/lib/systemd/system/chronyd.service; enabled; vendor preset: enabled)
   Active: active (running) since Fri 2026-07-17 23:10:19 CST; 1 months 0 days ago
     Docs: man:chronyd(8)
           man:chrony.conf(5)
 Main PID: 791 (chronyd)
    Tasks: 1
   Memory: 328.0K
   CGroup: /system.slice/chronyd.service
           └─791 /usr/sbin/chronyd

7月 17 16:19:27 localhost.localdomain chronyd[791]: Can't synchronise: no selectable sources
7月 17 16:29:09 localhost.localdomain chronyd[791]: Selected source 8.149.241.96
7月 17 16:29:09 localhost.localdomain chronyd[791]: System clock wrong by 343382.003722 seconds, adjustment started
7月 17 16:33:39 localhost.localdomain chronyd[791]: Source 113.141.164.38 replaced with 1.82.219.234
7月 17 17:48:53 localhost.localdomain chronyd[791]: Source 1.82.219.234 replaced with 113.141.164.38
7月 17 18:05:04 localhost.localdomain chronyd[791]: Can't synchronise: no selectable sources
7月 17 18:11:31 localhost.localdomain chronyd[791]: Selected source 8.149.241.96
7月 17 18:11:31 localhost.localdomain chronyd[791]: System clock wrong by 2320561.278474 seconds, adjustment started
8月 17 14:09:12 localhost.localdomain chronyd[791]: System clock was stepped by 2663452.782492 seconds
8月 17 14:11:02 localhost.localdomain chronyd[791]: Source 113.141.164.38 replaced with 1.82.219.234
[root@localhost ~]# chronyc makestep
200 OK
[root@localhost ~]# date
2026年 08月 17日 星期一 14:34:58 CST

问题2:防火墙冲突问题

bash 复制代码
[root@localhost ~]# systemctl status docker
● docker.service - Docker Application Container Engine
   Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled)
   Active: active (running) since Fri 2026-07-17 18:13:39 CST; 1min 58s ago
     Docs: https://docs.docker.com
 Main PID: 238044 (dockerd)
    Tasks: 20
   Memory: 95.4M
   CGroup: /system.slice/docker.service
           ├─238044 /usr/bin/dockerd --live-restore
           └─238051 containerd --config /var/run/docker/containerd/containerd.toml --log-level info

[root@localhost ~]# systemctl status firewalld.service 
● firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
   Active: active (running) since Fri 2026-07-17 23:10:21 CST; 1 months 0 days ago
     Docs: man:firewalld(1)
 Main PID: 947 (firewalld)
    Tasks: 2
   Memory: 29.6M
   CGroup: /system.slice/firewalld.service
           └─947 /usr/bin/python3 /usr/sbin/firewalld --nofork --nopid

7月 17 18:13:39 localhost.localdomain firewalld[947]: WARNING: COMMAND_FAILED: '/usr/sbin/iptables -w10 -D FORWARD -i docker0 -o docker0 -j DR>
8月 17 14:09:33 localhost.localdomain firewalld[947]: WARNING: COMMAND_FAILED: '/usr/sbin/iptables -w10 -t nat -D OUTPUT -m addrtype --dst-typ>
8月 17 14:09:33 localhost.localdomain firewalld[947]: WARNING: COMMAND_FAILED: '/usr/sbin/iptables -w10 -t nat -D PREROUTING' failed: iptables>
8月 17 14:09:33 localhost.localdomain firewalld[947]: WARNING: COMMAND_FAILED: '/usr/sbin/iptables -w10 -t nat -D OUTPUT' failed: iptables: Ba>
8月 17 14:09:33 localhost.localdomain firewalld[947]: WARNING: COMMAND_FAILED: '/usr/sbin/iptables -w10 -t filter -X DOCKER' failed: iptables:>
8月 17 14:09:33 localhost.localdomain firewalld[947]: WARNING: COMMAND_FAILED: '/usr/sbin/iptables -w10 -t filter -X DOCKER-ISOLATION-STAGE-1'>
8月 17 14:09:33 localhost.localdomain firewalld[947]: WARNING: COMMAND_FAILED: '/usr/sbin/iptables -w10 -t filter -F DOCKER-ISOLATION' failed:>
8月 17 14:09:33 localhost.localdomain firewalld[947]: WARNING: COMMAND_FAILED: '/usr/sbin/iptables -w10 -t filter -X DOCKER-ISOLATION' failed:>
8月 17 14:09:33 localhost.localdomain firewalld[947]: WARNING: COMMAND_FAILED: '/usr/sbin/iptables -w10 -D FORWARD -i docker0 -o docker0 -j DR>
8月 17 14:09:33 localhost.localdomain firewalld[947]: WARNING: COMMAND_FAILED: '/usr/sbin/iptables -w10 -D FORWARD -i docker0 -o docker0 -j DR>

简单来说:显示的状态没什么大问题,但日志里的报错很烦人,且可能会影响 Docker 容器的网络访问。

1. 关键错误分析(日志里的 WARNING

你看到的这一大堆 WARNING: COMMAND_FAILED: ... iptables ... 是** Docker 和 防火墙 的经典冲突**。

  • 原因
    • Docker 启动时,会直接修改底层的 iptables 规则来开放端口。
    • Firewalld(防火墙服务)启动或重载时,也会去修改 iptables 规则。
    • 两者互不相让,Firewalld 想删除 Docker 设置的规则,或者发现规则被占用了,就会报这些错。
  • 后果
    • 最常见:仅仅产生日志垃圾,不影响运行。
    • 最严重 :导致你虽然映射了端口(比如 -p 5003:5003),但外部浏览器访问不通
2. 状态信息解读
  • Active: active (running):防火墙是开启的。这意味着你需要手动开放端口,否则外部无法访问 Docker 容器。
  • since Fri 2026-07-17 ...:这里又出现了 2026年。再次提醒你,你的系统时间还没改过来!这可能导致日志时间混乱,甚至可能影响证书验证(虽然防火墙本身不依赖证书,但这是个隐患)。
✅ 解决方案

既然你在银河麒麟 V10 上(通常是服务器环境),建议采用最稳妥的方案:让 Docker 乖乖听话,或者直接开放端口。

方法一:配置 Docker 不操作 iptables(推荐,最省心)

这种方法让 Docker 不去触碰底层防火墙规则,避免冲突,然后由你来决定开放哪些端口。

1. 修改 Docker 配置文件

bash 复制代码
vi /etc/docker/daemon.json

2. 添加 "iptables": false

修改后的内容如下(保留你之前的镜像加速配置):

bash 复制代码
{
  "registry-mirrors": [
    "https://docker.mirrors.ustc.edu.cn" ,
    "https://hub-mirror.c.163.com"
  ],
  "exec-opts": ["native.cgroupdriver=systemd"],
  "iptables": false
}

3. 重启 Docker

bash 复制代码
systemctl daemon-reload
systemctl restart docker

4. 在防火墙中开放端口(必须做!)

因为 Docker 现在不管防火墙了,你需要手动打开你的应用端口(比如 5003):

bash 复制代码
[root@localhost ~]# firewall-cmd --zone=public --add-port=5003/tcp --permanent
success
[root@localhost ~]# firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.16.0/24" port port="22" protocol="tcp" accept'
success
[root@localhost ~]# firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.16.0/24" port port="5003" protocol="tcp" accept'
success
[root@localhost ~]# firewall-cmd --reload
success
[root@localhost ~]# firewall-cmd --list-rich-rules
rule family="ipv4" source address="192.168.16.0/24" port port="22" protocol="tcp" accept
rule family="ipv4" source address="192.168.16.0/24" port port="5003" protocol="tcp" accept

解释:

  • --permanent: 表示永久生效,重启后依然有效。
  • family="ipv4": 针对 IPv4 协议。
  • source address="192.168.16.0/24": 只允许源 IP 在 192.168.16.1 到 192.168.16.254 之间的连接。
  • port port="..." accept: 允许访问该端口。

验证:

bash 复制代码
[root@localhost ~]# docker pull hello-world
Using default tag: latest
Error response from daemon: Get "https://registry-1.docker.io/v2/": dial tcp 199.16.156.39:443: connect: connection refused

出现无法访问问题。

配置国内镜像加速器,国内镜像加速器也可能帮你拉取到镜像,因为它们缓存了大量镜像

1. 修改 Docker 配置文件,写入以下内容(添加 registry-mirrors

bash 复制代码
[root@localhost ~]# cat  /etc/docker/daemon.json 
{
  "registry-mirrors": [
    "https://docker.mirrors.ustc.edu.cn",
    "https://hub-mirror.c.163.com",
    "https://docker.m.daocloud.io",
    "https://docker.1panel.live", 
    "https://hub.rat.dev",
    "https://docker.chenby.cn",
    "https://docker.awsl9527.cn"
  ],
  "exec-opts": ["native.cgroupdriver=systemd"],
  "iptables": false
}

[root@localhost ~]# systemctl daemon-reload
[root@localhost ~]# systemctl restart docker
[root@localhost ~]# docker pull hello-world
Using default tag: latest
latest: Pulling from library/hello-world
4f55086f7dd0: Pull complete 
Digest: sha256:5dd0d3e6e255913fc30f90b9f2b1d359cc2cbdb48090cc4b65f1676e203243cc
Status: Downloaded newer image for hello-world:latest
[root@localhost ~]# docker images
REPOSITORY             TAG                 IMAGE ID            CREATED             SIZE
ghcr.io/fiyo/dbcheck   26.8.17.0           dbde60e9b691        2 hours ago         881MB
hello-world            latest              e2ac70e7319a        4 months ago        10.1kB
复制代码
相关推荐
Mr_liu_6661 小时前
Claude非专业入门实战笔记(附录):关闭Telemetry-遥测,消除无用网络请求与日志噪音
linux·笔记·ubuntu·ai编程
时空无限1 小时前
ubuntu apt 查看软件之间的依赖
linux·运维·ubuntu
Escalating_xu1 小时前
【Linux】线程概念与控制:从地址空间、LWP 到 pthread_create、join、detach 与 NPTL
java·linux·redis
Escalating_xu1 小时前
【Linux】进程信号:从产生、阻塞与递达到 sigaction、可重入与内核返回路径
linux·运维·面试·职场和发展
2603_966437261 小时前
格式化之后数据还能恢复吗?说清恢复条件
linux·运维·数据库
RisunJan2 小时前
Linux命令-traceroute(IP 路由路径追踪)
linux·运维·tcp/ip
芷栀夏2 小时前
极空间部署Sokoban:Docker搭建网页版推箱子并实现远程访问
运维·docker·容器
深圳恒讯2 小时前
乌克兰服务器的网络延迟、机房现状与稳定性情况
运维·服务器·网络
Dream-Y.ocean2 小时前
具身智能落地实战:数字人驱动的全自动化舆情监控系统
运维·自动化