(三)验证Docker离线安装和服务是否正确

# 华为鲲鹏服务器-学习笔记(基本命令和Docker部分) 笔记分享地址:[https://easydoc.net/s/54024151/YdjAf8qr/VGCwx0S0](https://easydoc.net/s/54024151/YdjAf8qr/VGCwx0S0) ---- ## 前言 1、Docker能解决开发、测试、部署环节中的环境一致性问题(所以推荐Docker方式搭建系统环境,且将来可使用K8S实现负载) 2、Docker的安装需要采用内网离线方式部署,大家要明白,实际的生产环境的服务器或者桌面PC是不可以接入互联网的,所以我们在一开始就尽可能要想办法将系统的各种依赖都在本地处理好,通过存储介质交换至目标设备上,尽可能的不使用git和yum方式安装拉取外网资源依赖,不然将来实施人员无法按照手册操作实施。 3、如果你第一次接触docker,请看这里【[图解docker的部署逻辑](https://www.bilibili.com/video/BV1Kx4y1P7c5?p=6&vd_source=0bc9675b3a70f0c0f28fcd4a0b7da7bf)】 ---------------------------- **笔记大纲目录索引** [(一)环境准备](doc:VGCwx0S0) [(二)离线部署Docker到服务器](doc:tM5I6C7b) [(三)验证Docker离线安装和服务是否正确](doc:67UZXJJr) [(四)加载Docker镜像](doc:YYIyCsil) ---------------------------- ## 第三章 验证Docker安装和服务是否成功 ## 一、检查Docker是否安装以及服务是否开启 Q:如何验证是否安装成功,执行docker info命令,若正常打印版本信息则安装成功。 A:使用以下命令中即可: $ docker info ### 1、 正确的运行效果显示: ``` [root@DC1-03-003 ~]# docker info Client: Debug Mode: false Server: Containers: 0 Running: 0 Paused: 0 Stopped: 0 Images: 0 Server Version: 19.03.8 Storage Driver: overlay2 Backing Filesystem: <unknown> Supports d_type: true Native Overlay Diff: true Logging Driver: json-file Cgroup Driver: cgroupfs 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 Default Runtime: runc Init Binary: docker-init containerd version: 7ad184331fa3e55e52b890ea95e65ba581ae3429 runc version: dc9208a3303feef5b3839f4323d9beb36df0a9dd init version: fec3683 Security Options: seccomp Profile: default Kernel Version: 4.19.90-17.ky10.aarch64 Operating System: Kylin Linux Advanced Server V10 (Tercel) OSType: linux Architecture: aarch64 CPUs: 96 Total Memory: 254.8GiB Name: DC1-03-003 ID: BWBW:DWMG:XQE7:VOVO:GS2N:UTND:UWNH:TOWX:3VPR:HSYC:5OON:TIOD Docker Root Dir: /var/lib/docker Debug Mode: false Registry: https://index.docker.io/v1/ Labels: Experimental: false Insecure Registries: 127.0.0.0/8 Live Restore Enabled: false Product License: Community Engine [root@DC1-03-003 ~]# ``` ---------------- ### 2、 几种异常状况的解决方案的补充内容: ### 2.1、Docker未安装的情况 异常的运行效果显示: ``` [root@DC1-03-003 ~]# docker info -bash: docker: command not found [root@DC1-03-003 ~]# //或者 [root@DC1-03-003 /]# docker -v -bash: docker: command not found [root@DC1-03-003 /]# [root@DC1-03-003 /]# docker version -bash: docker: command not found [root@DC1-03-003 /]# ``` 如果是这样的提示,说明你的Docker还没有安装部署,请查看上篇笔记《[(二)离线部署Docker到服务器 ](https://easydoc.net/s/54024151/YdjAf8qr/tM5I6C7b)》,网址:[https://easydoc.net/s/54024151/YdjAf8qr/tM5I6C7b](https://easydoc.net/s/54024151/YdjAf8qr/tM5I6C7b) **简单归纳总结一下第二章的主要内容和步骤如下:** ### **==Step1:下载docker稳定版本(stable)并SFTP上传到服务器==** 注意:这里使用的是华为鲲鹏服务器,所以是aarch64版本,如果是其他CPU架构的服务器,请自行调整。 [docker-19.03.8.tgz](https://download.docker.com/linux/static/stable/aarch64/docker-19.03.8.tgz) aarch64的docker版本,下载地址:[https://download.docker.com/linux/static/stable/aarch64/docker-19.03.8.tgz](https://download.docker.com/linux/static/stable/aarch64/docker-19.03.8.tgz) 上传工具建议:MobaXterm的SFTP,视频教程:[https://www.bilibili.com/video/BV1FN4y1T7r7/?spm_id_from=333.788&vd_source=0bc9675b3a70f0c0f28fcd4a0b7da7bf](https://www.bilibili.com/video/BV1FN4y1T7r7/?spm_id_from=333.788&vd_source=0bc9675b3a70f0c0f28fcd4a0b7da7bf) 上传路径建议: (固定放在这里方便以后运维人员统一路径维护) /root/docker_stable/docker-19.03.8.tgz ### **==Step2:解压tgz文件,并拷贝至/usr/bin/目录下==** 解压docker-19.03.8.tgz文件到/root/docker_stable/aarch64/目录下: ``` cd /root/docker_stable/aarch64/ tar -zxvf /root/docker_stable/aarch64/docker-19.03.8.tgz ``` 解压后会在当前目录下出现一个新的docker文件夹,效果如下: ``` [root@DC1-03-003 ~]# cd /root/docker_stable/aarch64/ [root@DC1-03-003 aarch64]# tree . └── docker-19.03.8.tgz 0 directories, 1 file [root@DC1-03-003 aarch64]# tar -zxvf /root/docker_stable/aarch64/docker-19.03.8.tgz docker/ docker/ctr docker/containerd-shim docker/docker docker/docker-proxy docker/dockerd docker/containerd docker/runc docker/docker-init [root@DC1-03-003 aarch64]# tree . ├── docker │   ├── containerd │   ├── containerd-shim │   ├── ctr │   ├── docker │   ├── dockerd │   ├── docker-init │   ├── docker-proxy │   └── runc └── docker-19.03.8.tgz 1 directory, 9 files [root@DC1-03-003 aarch64]# ``` 注意: 如果你的当前目录不是/root/docker_stable/aarch64/,你使用tree命令看一下结构再去拷贝 那我们继续吧! 然后复制解压后的docker文件夹和全部文件到/usr/bin/目录下 ``` $ cp /root/docker_stable/aarch64/docker/* /usr/bin/ ``` 拷贝到,其实就等于将docker程序部署到了服务器上,可以通过docker -v 或者docker version命令查看docker的版本信息了,但是docker info命令还是没有将docker注册成系统服务,所以提示信息还是提示错误的,如下: ``` [root@DC1-03-003 aarch64]# cp /root/docker_stable/aarch64/docker/* /usr/bin/ [root@DC1-03-003 aarch64]# ls /usr/bin/docker* /usr/bin/docker /usr/bin/dockerd /usr/bin/docker-init /usr/bin/docker-proxy [root@DC1-03-003 aarch64]# cd /usr/bin/docker -bash: cd: /usr/bin/docker: Not a directory [root@DC1-03-003 aarch64]# cd /usr/bin/docker/ -bash: cd: /usr/bin/docker/: Not a directory [root@DC1-03-003 aarch64]# docker -v Docker version 19.03.8, build afacb8b [root@DC1-03-003 aarch64]# docker version Client: Docker Engine - Community Version: 19.03.8 API version: 1.40 Go version: go1.12.17 Git commit: afacb8b Built: Wed Mar 11 01:23:06 2020 OS/Arch: linux/arm64 Experimental: false Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running? [root@DC1-03-003 aarch64]# docker info Client: Debug Mode: false Server: ERROR: Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running? errors pretty printing info [root@DC1-03-003 aarch64]# ``` 解压出来的docker目录已经没有用了,你可以直接删除掉(其实直接解压到 /usr/bin/ 目录是不是就不用删除了啊?待续...) ``` cd /root/docker_stable/aarch64/ rm -rf docker/ ``` 效果如下: ``` [root@DC1-03-003 aarch64]# cd /root/docker_stable/aarch64/ [root@DC1-03-003 aarch64]# tree . ├── docker │   ├── containerd │   ├── containerd-shim │   ├── ctr │   ├── docker │   ├── dockerd │   ├── docker-init │   ├── docker-proxy │   └── runc └── docker-19.03.8.tgz 1 directory, 9 files [root@DC1-03-003 aarch64]# rm -rf docker/ [root@DC1-03-003 aarch64]# tree . └── docker-19.03.8.tgz 0 directories, 1 file [root@DC1-03-003 aarch64]# ``` 注意: rm命令默认只能删除文件,rmdir默认只能删除空目录,所以如果删除一个有文件的多级文件夹,请加入-rf参数 参考资料: 【Linux系统删除文件夹命令】 [https://blog.csdn.net/segegefe/article/details/126434628](https://blog.csdn.net/segegefe/article/details/126434628) 检查是否拷贝成功,命令如下: ``` $ ls /usr/bin/d* $ ls /usr/bin/doc* $ ls /usr/bin/docker* ``` 直至看到/usr/bin/目录下出现了docker文件夹,说明你的docker程序已经在服务器完成部署(但是服务尚未注册,需要配置) ### **==Step3:注册docker服务==** ==**知识补充:**== 【/etc/systemd/system 和 /lib/systemd/system 的区别】 [https://blog.csdn.net/ll837448792/article/details/126603145](https://blog.csdn.net/ll837448792/article/details/126603145) 注意: systemd 的使用大幅提高了系统服务的运行效率, 而 unit 的文件位置一般主要有三个目录: ``` Table 1. Load path when running in system mode (--system). ┌────────────────────────┬─────────────────────────────┐ │Path │ Description │ ├────────────────────────┼─────────────────────────────┤ │/etc/systemd/system │ Local configuration │ ├────────────────────────┼─────────────────────────────┤ │/run/systemd/system │ Runtime units │ ├────────────────────────┼─────────────────────────────┤ │/lib/systemd/system │ Units of installed packages │ └────────────────────────┴─────────────────────────────┘ ``` 这三个目录的配置文件优先级依次从高到低,如果同一选项三个地方都配置了,优先级高的会覆盖优先级低的。 有可能国产操作系统的【/etc/systemd/system/】存在权限问题,我们这里选择在【/lib/systemd/system/】进行配置,方法一样: 在 /lib/systemd/system/ 目录下新增 docker.service 文件,将 docker 注册为服务,内容如下: 命令如下: ``` sudo vi /usr/lib/systemd/system/docker.service ``` 需要复制内容到docker.service文件中,如下: ``` [Unit] Description=Docker Application Container Engine Documentation=https://docs.docker.com After=network-online.target firewalld.service Wants=network-online.target [Service] Type=notify # the default is not to use systemd for cgroups because the delegate issues still # exists and systemd currently does not support the cgroup feature set required # for containers run by docker ExecStart=/usr/bin/dockerd --selinux-enabled=false --insecure-registry=127.0.0.1 ExecReload=/bin/kill -s HUP $MAINPID # Having non-zero Limit*s causes performance problems due to accounting overhead # in the kernel. We recommend using cgroups to do container-local accounting. LimitNOFILE=infinity LimitNPROC=infinity LimitCORE=infinity # Uncomment TasksMax if your systemd version supports it. # Only systemd 226 and above support this version. #TasksMax=infinity TimeoutStartSec=0 # set delegate yes so that systemd does not reset the cgroups of docker containers Delegate=yes # kill only the docker process, not all processes in the cgroup KillMode=process # restart the docker process if it exits prematurely Restart=on-failure StartLimitBurst=3 StartLimitInterval=60s [Install] WantedBy=multi-user.target ``` 此处的--insecure-registry=127.0.0.1(此处改成你私服ip)设置是针对有搭建了自己私服Harbor时允许docker进行不安全的访问,否则访问将会被拒绝。 **==提示:这里使用的的是华为鲲鹏云服务器,我们将公网IP修改到对应位置即可:171.3.33.33、171.3.33.34、171.3.33.35(对应填入即可,不然本机无法访问服务)==** 到此为止,您只是完成了docker.service文件配置信息在/lib/systemd/system/下的创建、配置和维护工作,服务并未启用,执行docker info命令后,仍然提示错误,错误信息如下2.2节所示: ------ ### 2.2、Docker已安装但服务未启用的情况 如果还有异常信息,请根据实际情况排查,如: 异常的运行效果显示: ``` [root@DC1-03-001 ~]# docker info Client: Debug Mode: false Server: ERROR: Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running? errors pretty printing info [root@DC1-03-001 ~]# ``` 说明: 你的docke的守护程序程序还没有启动 查了一下资料:[https://blog.csdn.net/fy512/article/details/123257474](https://blog.csdn.net/fy512/article/details/123257474) 我发现需要将:将docker注册成系统服务(记得kill docker服务后,再执行这一步哦) 补充知识: [如何查看Linux系统服务?](https://zhuanlan.zhihu.com/p/367635200) 推荐命令: netstat -pnltu 运行效果: ``` [root@DC1-03-003 system]# netstat -pnltu Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:10050 0.0.0.0:* LISTEN 3860/zabbix_agentd tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 3896/sshd tcp6 0 0 :::22 :::* LISTEN 3896/sshd udp 0 0 127.0.0.1:323 0.0.0.0:* 3822/chronyd udp6 0 0 ::1:323 :::* 3822/chronyd [root@DC1-03-003 system]# ``` 说明:目前系统的服务中还没有docker关于888端口的服务,所以不用Kill掉任何服务进程 补充: 参考教程中的docker.service的配置信息是docker-18.06.1-ce.tgz的,我目前用的是docker-19.03.8.tgz,所以参数可能不同,所以我vi的内容是上文的配置信息,没有使用参考教程的内容,关于在/etc/systemd/system/docker.service的注册服务,还是/usr/lib/systemd/system/下注册服务,只是优先级的问题,应该都是可以的,这一步在 本文的2.1 节的【Step3:注册docker服务】已经阐述,不用重复操作,如下: ``` [root@DC1-03-001 system]# cd /usr/lib/systemd/system/ [root@DC1-03-001 system]# ls dock* ls: cannot access 'dock*': No such file or directory [root@DC1-03-001 system]# sudo vi /usr/lib/systemd/system/docker.service [root@DC1-03-001 system]# ls dock* docker.service [root@DC1-03-001 system]# ``` ### **==Step4:启动Docker守护程序==** 然后我通过sudo dockerd &命令启动Docker守护程序,变化如下: 启动Docker守护程序,命令如下: $ sudo dockerd & 显示: ``` [root@DC1-03-003 ~]# netstat -pnltu Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:10050 0.0.0.0:* LISTEN 3860/zabbix_agentd tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 3896/sshd tcp6 0 0 :::22 :::* LISTEN 3896/sshd udp 0 0 127.0.0.1:323 0.0.0.0:* 3822/chronyd udp6 0 0 ::1:323 :::* 3822/chronyd [root@DC1-03-003 ~]# sudo dockerd & [1] 72170 [root@DC1-03-003 ~]# INFO[2023-05-05T09:45:18.981114590+08:00] Starting up WARN[2023-05-05T09:45:18.984970610+08:00] could not change group /var/run/docker.sock to docker: group docker not found INFO[2023-05-05T09:45:18.986129050+08:00] libcontainerd: started new containerd process pid=72224 INFO[2023-05-05T09:45:18.986189180+08:00] parsed scheme: "unix" module=grpc INFO[2023-05-05T09:45:18.986202220+08:00] scheme "unix" not registered, fallback to default scheme module=grpc INFO[2023-05-05T09:45:18.986236390+08:00] ccResolverWrapper: sending update to cc: {[{unix:///var/run/docker/containerd/containerd.sock 0 <nil>}] <nil>} module=grpc INFO[2023-05-05T09:45:18.986253180+08:00] ClientConn switching balancer to "pick_first" module=grpc INFO[2023-05-05T09:45:19.004609860+08:00] starting containerd revision=7ad184331fa3e55e52b890ea95e65ba581ae3429 version=v1.2.13 INFO[2023-05-05T09:45:19.005112530+08:00] loading plugin "io.containerd.content.v1.content"... type=io.containerd.content.v1 INFO[2023-05-05T09:45:19.005187570+08:00] loading plugin "io.containerd.snapshotter.v1.btrfs"... type=io.containerd.snapshotter.v1 WARN[2023-05-05T09:45:19.005369690+08:00] failed to load plugin io.containerd.snapshotter.v1.btrfs error="path /var/lib/docker/containerd/daemon/io.containerd.snapshotter.v1.btrfs must be a btrfs filesystem to be used with the btrfs snapshotter" INFO[2023-05-05T09:45:19.005385410+08:00] loading plugin "io.containerd.snapshotter.v1.aufs"... type=io.containerd.snapshotter.v1 WARN[2023-05-05T09:45:19.006894650+08:00] failed to load plugin io.containerd.snapshotter.v1.aufs error="modprobe aufs failed: "modprobe: FATAL: Module aufs not found in directory /lib/modules/4.19.90-17.ky10.aarch64\n": exit status 1" INFO[2023-05-05T09:45:19.006919370+08:00] loading plugin "io.containerd.snapshotter.v1.native"... type=io.containerd.snapshotter.v1 INFO[2023-05-05T09:45:19.006996910+08:00] loading plugin "io.containerd.snapshotter.v1.overlayfs"... type=io.containerd.snapshotter.v1 INFO[2023-05-05T09:45:19.007152460+08:00] loading plugin "io.containerd.snapshotter.v1.zfs"... type=io.containerd.snapshotter.v1 INFO[2023-05-05T09:45:19.007357190+08:00] skip loading plugin "io.containerd.snapshotter.v1.zfs"... type=io.containerd.snapshotter.v1 INFO[2023-05-05T09:45:19.007371730+08:00] loading plugin "io.containerd.metadata.v1.bolt"... type=io.containerd.metadata.v1 WARN[2023-05-05T09:45:19.007413250+08:00] could not use snapshotter zfs in metadata plugin error="path /var/lib/docker/containerd/daemon/io.containerd.snapshotter.v1.zfs must be a zfs filesystem to be used with the zfs snapshotter: skip plugin" WARN[2023-05-05T09:45:19.007425500+08:00] could not use snapshotter btrfs in metadata plugin error="path /var/lib/docker/containerd/daemon/io.containerd.snapshotter.v1.btrfs must be a btrfs filesystem to be used with the btrfs snapshotter" WARN[2023-05-05T09:45:19.007434150+08:00] could not use snapshotter aufs in metadata plugin error="modprobe aufs failed: "modprobe: FATAL: Module aufs not found in directory /lib/modules/4.19.90-17.ky10.aarch64\n": exit status 1" INFO[2023-05-05T09:45:19.010195920+08:00] loading plugin "io.containerd.differ.v1.walking"... type=io.containerd.differ.v1 INFO[2023-05-05T09:45:19.010223340+08:00] loading plugin "io.containerd.gc.v1.scheduler"... type=io.containerd.gc.v1 INFO[2023-05-05T09:45:19.010275770+08:00] loading plugin "io.containerd.service.v1.containers-service"... type=io.containerd.service.v1 INFO[2023-05-05T09:45:19.010291860+08:00] loading plugin "io.containerd.service.v1.content-service"... type=io.containerd.service.v1 INFO[2023-05-05T09:45:19.010306710+08:00] loading plugin "io.containerd.service.v1.diff-service"... type=io.containerd.service.v1 INFO[2023-05-05T09:45:19.010324040+08:00] loading plugin "io.containerd.service.v1.images-service"... type=io.containerd.service.v1 INFO[2023-05-05T09:45:19.010338480+08:00] loading plugin "io.containerd.service.v1.leases-service"... type=io.containerd.service.v1 INFO[2023-05-05T09:45:19.010354000+08:00] loading plugin "io.containerd.service.v1.namespaces-service"... type=io.containerd.service.v1 INFO[2023-05-05T09:45:19.010368860+08:00] loading plugin "io.containerd.service.v1.snapshots-service"... type=io.containerd.service.v1 INFO[2023-05-05T09:45:19.010384850+08:00] loading plugin "io.containerd.runtime.v1.linux"... type=io.containerd.runtime.v1 INFO[2023-05-05T09:45:19.010518220+08:00] loading plugin "io.containerd.runtime.v2.task"... type=io.containerd.runtime.v2 INFO[2023-05-05T09:45:19.010592800+08:00] loading plugin "io.containerd.monitor.v1.cgroups"... type=io.containerd.monitor.v1 INFO[2023-05-05T09:45:19.011074340+08:00] loading plugin "io.containerd.service.v1.tasks-service"... type=io.containerd.service.v1 INFO[2023-05-05T09:45:19.011159350+08:00] loading plugin "io.containerd.internal.v1.restart"... type=io.containerd.internal.v1 INFO[2023-05-05T09:45:19.011221200+08:00] loading plugin "io.containerd.grpc.v1.containers"... type=io.containerd.grpc.v1 INFO[2023-05-05T09:45:19.011238460+08:00] loading plugin "io.containerd.grpc.v1.content"... type=io.containerd.grpc.v1 INFO[2023-05-05T09:45:19.011253800+08:00] loading plugin "io.containerd.grpc.v1.diff"... type=io.containerd.grpc.v1 INFO[2023-05-05T09:45:19.011269100+08:00] loading plugin "io.containerd.grpc.v1.events"... type=io.containerd.grpc.v1 INFO[2023-05-05T09:45:19.011284020+08:00] loading plugin "io.containerd.grpc.v1.healthcheck"... type=io.containerd.grpc.v1 INFO[2023-05-05T09:45:19.011301420+08:00] loading plugin "io.containerd.grpc.v1.images"... type=io.containerd.grpc.v1 INFO[2023-05-05T09:45:19.011316660+08:00] loading plugin "io.containerd.grpc.v1.leases"... type=io.containerd.grpc.v1 INFO[2023-05-05T09:45:19.011330850+08:00] loading plugin "io.containerd.grpc.v1.namespaces"... type=io.containerd.grpc.v1 INFO[2023-05-05T09:45:19.011345190+08:00] loading plugin "io.containerd.internal.v1.opt"... type=io.containerd.internal.v1 INFO[2023-05-05T09:45:19.011836460+08:00] loading plugin "io.containerd.grpc.v1.snapshots"... type=io.containerd.grpc.v1 INFO[2023-05-05T09:45:19.011864830+08:00] loading plugin "io.containerd.grpc.v1.tasks"... type=io.containerd.grpc.v1 INFO[2023-05-05T09:45:19.011881280+08:00] loading plugin "io.containerd.grpc.v1.version"... type=io.containerd.grpc.v1 INFO[2023-05-05T09:45:19.011899590+08:00] loading plugin "io.containerd.grpc.v1.introspection"... type=io.containerd.grpc.v1 INFO[2023-05-05T09:45:19.012109500+08:00] serving... address="/var/run/docker/containerd/containerd-debug.sock" INFO[2023-05-05T09:45:19.012150860+08:00] serving... address="/var/run/docker/containerd/containerd.sock" INFO[2023-05-05T09:45:19.012172670+08:00] containerd successfully booted in 0.008910s INFO[2023-05-05T09:45:19.020148910+08:00] parsed scheme: "unix" module=grpc INFO[2023-05-05T09:45:19.020185780+08:00] scheme "unix" not registered, fallback to default scheme module=grpc INFO[2023-05-05T09:45:19.020210040+08:00] ccResolverWrapper: sending update to cc: {[{unix:///var/run/docker/containerd/containerd.sock 0 <nil>}] <nil>} module=grpc INFO[2023-05-05T09:45:19.020221900+08:00] ClientConn switching balancer to "pick_first" module=grpc INFO[2023-05-05T09:45:19.020983670+08:00] parsed scheme: "unix" module=grpc INFO[2023-05-05T09:45:19.021003060+08:00] scheme "unix" not registered, fallback to default scheme module=grpc INFO[2023-05-05T09:45:19.021019890+08:00] ccResolverWrapper: sending update to cc: {[{unix:///var/run/docker/containerd/containerd.sock 0 <nil>}] <nil>} module=grpc INFO[2023-05-05T09:45:19.021031390+08:00] ClientConn switching balancer to "pick_first" module=grpc INFO[2023-05-05T09:45:19.082898940+08:00] Loading containers: start. INFO[2023-05-05T09:45:19.187007920+08:00] Default bridge (docker0) is assigned with an IP address 172.17.0.0/16. Daemon option --bip can be used to set a preferred IP address INFO[2023-05-05T09:45:19.234269010+08:00] Loading containers: done. INFO[2023-05-05T09:45:19.282465160+08:00] Docker daemon commit=afacb8b graphdriver(s)=overlay2 version=19.03.8 INFO[2023-05-05T09:45:19.282578600+08:00] Daemon has completed initialization INFO[2023-05-05T09:45:19.307882140+08:00] API listen on /var/run/docker.sock [root@DC1-03-003 ~]# netstat -pnltu Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:10050 0.0.0.0:* LISTEN 3860/zabbix_agentd tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 3896/sshd tcp6 0 0 :::22 :::* LISTEN 3896/sshd udp 0 0 127.0.0.1:323 0.0.0.0:* 3822/chronyd udp6 0 0 ::1:323 :::* 3822/chronyd [root@DC1-03-003 ~]# docker info Client: Debug Mode: false Server: Containers: 0 Running: 0 Paused: 0 Stopped: 0 Images: 0 Server Version: 19.03.8 Storage Driver: overlay2 Backing Filesystem: <unknown> Supports d_type: true Native Overlay Diff: true Logging Driver: json-file Cgroup Driver: cgroupfs 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 Default Runtime: runc Init Binary: docker-init containerd version: 7ad184331fa3e55e52b890ea95e65ba581ae3429 runc version: dc9208a3303feef5b3839f4323d9beb36df0a9dd init version: fec3683 Security Options: seccomp Profile: default Kernel Version: 4.19.90-17.ky10.aarch64 Operating System: Kylin Linux Advanced Server V10 (Tercel) OSType: linux Architecture: aarch64 CPUs: 96 Total Memory: 254.8GiB Name: DC1-03-003 ID: BWBW:DWMG:XQE7:VOVO:GS2N:UTND:UWNH:TOWX:3VPR:HSYC:5OON:TIOD Docker Root Dir: /var/lib/docker Debug Mode: false Registry: https://index.docker.io/v1/ Labels: Experimental: false Insecure Registries: 127.0.0.0/8 Live Restore Enabled: false Product License: Community Engine [root@DC1-03-003 ~]# ``` 总结: 通过上述运行结果,可以得出以下结论: 1、命令:netstat -pnltu 可以查看当前运行的服务清单 2、命令:sudo dockerd & 可以激活启动Docker守护程序 3、命令:docker info 可以查看启用了Docker守护程序后的运行信息 ---- ### **==Step5:启动 / 停止 docker 服务==** 命令参考: //启用 systemctl start docker //停止 systemctl stop docker 运行效果: 说明:正常启动systemctl start docker服务后,回车后,无任何提示信息,表示服务已经启动了。 ``` [root@DC1-03-001 ~]# systemctl start docker [root@DC1-03-001 ~]# ``` 如果启动systemctl start docker服务提示如下信息,需要排查配置信息: ``` [root@DC1-03-003 ~]# sudo systemctl start docker Job for docker.service failed because the control process exited with error code. See "systemctl status docker.service" and "journalctl -xe" for details. [root@DC1-03-003 ~]# ``` 说明: docker.service的作业失败,因为控制进程已退出,并返回错误代码。 有关详细信息,请参阅“systemctl-status docker.service”和“journalctl-xe” 解决方案: 排查指令为: systemctl status docker.service journalctl -xe 查看具体错误信息,然后调整(大多数问题是配置文件存在错误) 比如: /usr/lib/systemd/system/docker.service 或 /etc/systemd/system/docker.service 中配置信息的问题,可以百度找一下错误提示或Docker官网找一下资料 ### **==Step6:开机自启/取消开机自启 docker 服务==** 命令参考: //启用 systemctl enable docker //取消 systemctl disable docker 运行效果: ------- ## 二、通过docker images命令,查看Docker的镜像信息 ### 1.1、命令 docker images 的使用 Q:如何查看Docker的镜像信息 A:使用以下命令中即可: $ docker images 正确运行效果显示: ``` [root@DC1-03-003 ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE [root@DC1-03-003 ~]# ``` 说明: 命令:docker images可以有效查看已经加载的Docker的镜像列表数据信息(当前的镜像库为 “空”) ---- ### 1.2、无法连接Docker已安装但服务和守护进程未启用的情况 ``` [root@DC1-03-001 ~]# docker images Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running? [root@DC1-03-001 ~]# ``` 说明: 无法连接到位于的Docker守护进程unix:///var/run/docker.sock.docker守护程序正在运行吗? 意味着你的Docker服务还没有启用 查询解决办法一:docker服务没有启动,重新启动docker服务 [https://blog.csdn.net/zxzxzxzx2121/article/details/61914870/](https://blog.csdn.net/zxzxzxzx2121/article/details/61914870/) 查询解决办法二:重新载入systemd,扫描新的或者变动的单元,然后重新启动docker服务 [https://www.cnblogs.com/forturn/p/9371841.html](https://www.cnblogs.com/forturn/p/9371841.html) 查询解决办法三:权限问题,使用root账户或者使用sudo 重新启动docker服务 [https://segmentfault.com/q/1010000005040763](https://segmentfault.com/q/1010000005040763) 解决办法四:使用 -H 可以改变docker进程监听指定的IP和端口。默认情况下,docker会监听 unix:///var/run/docker.sock,只允许本地的root用户连接。 [https://www.widuu.com/archives/01/947.html](https://www.widuu.com/archives/01/947.html) 从这里我们看到大致是要么用户没有权限或者是监听的端口不正确。 ———————————————— 我这边启用了Docker守护进程并将docker注册成系统服务后,再执行docker images命令后,如下: ``` [root@DC1-03-001 system]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE [root@DC1-03-001 system]# ``` 说明,我的Docker服务应该是已经启用了,只是我的镜像文件库时空的,现在我们可以开始加载镜像文件了, 【Docker入门教学】搭建PostgreSql数据库服务器 p.7 https://www.bilibili.com/video/BV1Cb4y1f7bz/?spm_id_from=333.337.search-card.all.click&vd_source=0bc9675b3a70f0c0f28fcd4a0b7da7bf http://hub.daocloud.io/