docker容器

一 安装部署

配置软件仓库并安装docker-ce

bash 复制代码
#利用阿里云部署软件仓库
[root@docker-node1 ~]# cat > /etc/yum.repos.d/docker.repo << EOF
[docker1]
name = docker
baseurl = https://mirrors.aliyun.com/docker-ce/linux/rhel/9.6/x86_64/stable/
gpgcheck = 0
EOF

[root@docker-node1 ~]# dnf makecache
刷新本地的 YUM/DNF 软件源缓存,让系统知道最新的软件列表。

[root@docker-node1 ~]# dnf search  docker
[root@docker-node1 ~]# dnf install docker-ce -y

[root@docker-node1 ~]# vim /lib/systemd/system/docker.service
15   ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock --iptables=true
--iptables=true 是强制让 Docker 管理防火墙规则,解决容器无法上网、端口映射失败的问题。

开机自动加载 br_netfilter 内核模块
[root@docker10 yum.repos.d]# echo br_netfilter > /etc/modules-load.d/docker_mod.conf
立即加载模块(不用重启)
[root@docker10 yum.repos.d]# modprobe -a br_netfilter

让系统「立即、永久」加载所有目录下的内核参数配置文件,不用重启服务器就能生效。
[root@docker10 yum.repos.d]# sysctl --system


[root@docker10 yum.repos.d]# 
[root@docker10 yum.repos.d]# systemctl enable --now docker
Created symlink /etc/systemd/system/multi-user.target.wants/docker.service → /usr/lib/systemd/system/docker.service.
[root@docker10 yum.repos.d]# 

二.docker常用命令

bash 复制代码
[root@docker10 ~]# ls
anaconda-ks.cfg  busy-latest.tar  game2048-latest.tar  mario-latest.tar  nginx-1.26.tar
[root@docker10 ~]# docker load -i game2048-latest.tar
Loaded image: timinglee/game2048:latest
[root@docker10 ~]# docker load -i busy-latest.tar
docker load -i mario-latest.tar
docker load -i nginx-1.26.tar
Loaded image: busybox:latest
Loaded image: timinglee/mario:latest
Loaded image: nginx:1.26
[root@docker10 ~]# docker images
                                                                                                                                                                             i Info →   U  In Use
IMAGE                       ID             DISK USAGE   CONTENT SIZE   EXTRA
busybox:latest              b3255e7dfbcd        6.7MB         2.22MB        
nginx:1.26                  41b194461e4b        279MB         75.2MB        
timinglee/game2048:latest   8a34fb9cb168       77.2MB         17.8MB        
timinglee/mario:latest      7758988210df        298MB         73.7MB    
    
#将外部的端口80映射到容器的8080
[root@docker10 ~]# docker run -d -p 80:80 timinglee/game2048:latest
d333e906c948ed6c920c7ba17143d239eda490aea13e5e0b32731a01c1a7e1d5
[root@docker10 ~]# 
#查看容器的端口信息
[root@docker10 ~]# docker history timinglee/mario:latest
IMAGE          CREATED        CREATED BY                                       SIZE      COMMENT
7758988210df   10 years ago   /bin/sh -c #(nop) CMD ["python3" "-m" "http....   0B        
<missing>      10 years ago   /bin/sh -c #(nop) EXPOSE 8080/tcp                0B        
<missing>      10 years ago   /bin/sh -c #(nop) WORKDIR /app                   0B        
<missing>      10 years ago   /bin/sh -c #(nop) COPY dir:02930d36f63824e72...   10.1MB    
<missing>      10 years ago   /bin/sh -c apt-get install -y python3            0B        
<missing>      10 years ago   /bin/sh -c #(nop) MAINTAINER Pavel 'PK' Kami...   0B        
<missing>      10 years ago   /bin/sh -c #(nop) CMD ["/bin/bash"]              0B        
<missing>      10 years ago   /bin/sh -c sed -i 's/^#\s*\(deb.*universe\)$...   4.1kB     
<missing>      10 years ago   /bin/sh -c echo '#!/bin/sh' > /usr/sbin/poli...   229kB     
<missing>      10 years ago   /bin/sh -c #(nop) ADD file:5a3f9e9ab88e725d6...   214MB     
[root@docker10 ~]# 
bash 复制代码
# 查看正在运行的容器
[root@docker10 ~]# docker ps
CONTAINER ID   IMAGE                       COMMAND                   CREATED          STATUS          PORTS                                          NAMES
d333e906c948   timinglee/game2048:latest   "/bin/sh -c 'sed -i ..."   49 minutes ago   Up 49 minutes   0.0.0.0:80->80/tcp, [::]:80->80/tcp, 443/tcp   dreamy_lewin
[root@docker10 ~]# docker rm -f d333e906c948
d333e906c948

[root@docker10 ~]# docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
[root@docker10 ~]# 
bash 复制代码
#镜像查看
[root@docker-node1 ~]# docker images                                                      IMAGE   ID             DISK USAGE   CONTENT SIZE   EXTRA

#搜索镜像
[root@docker-node1 ~]# docker search  nginx
NAME    DESCRIPTION               STARS         OFFICIAL
nginx   Official build of Nginx.   21206

#下载镜像
[root@docker-node1 ~]# docker pull nginx

[root@docker-node1 ~]# docker pull busybox
Using default tag: latest
latest: Pulling from library/busybox
61dfb50712f5: Pull complete
96cfb76e59bd: Download complete
Digest: sha256:b3255e7dfbcd10cb367af0d409747d511aeb66dfac98cf30e97e87e4207dd76f
Status: Downloaded newer image for busybox:latest
docker.io/library/busybox:latest

#查看镜像提交历史
[root@docker-node1 ~]# docker history busybox:latest
IMAGE          CREATED         CREATED BY                          SIZE      COMMENT
b3255e7dfbcd   17 months ago   BusyBox 1.37.0 (glibc), Debian 13   4.49MB

[root@docker-node1 ~]# docker images
                                                                                                i Info →   U  In Use
IMAGE            ID             DISK USAGE   CONTENT SIZE   EXTRA
busybox:latest   b3255e7dfbcd        6.7MB         2.22MB
nginx:1.26       41b194461e4b        279MB         75.2MB


#导出镜像
[root@docker-node1 ~]# docker save -o game2048-latest.tar timinglee/game2048:latest

#删除镜像
[root@docker-node1 ~]# docker rmi timinglee/mario:latest

#导入镜像
[root@docker-node1 ~]# docker load  -i game2048-latest.tar

#运行镜像
[root@docker-node1 ~]# docker run -d   --name web nginx:1.26
f3e369725fab95d48779eaa556941b735aae841efe09bb1d28bca89923c44ee4

#查看运行容器
[root@docker-node1 ~]# docker ps
CONTAINER ID   IMAGE        COMMAND                   CREATED         STATUS         PORTS     NAMES
f3e369725fab   nginx:1.26   "/docker-entrypoint...."   2 seconds ago   Up 2 seconds   80/tcp    web

#查看所有容器
[root@docker-node1 ~]# docker ps -a

#交互模式运行容器
[root@docker-node1 ~]# docker run  -it --name busybox busybox:latest

#交互运行容器默认退出后会停止
[root@docker-node1 ~]# docker ps -a
CONTAINER ID   IMAGE            COMMAND                   CREATED              STATUS                      PORTS     NAMES
d1b27167a247   busybox:latest   "sh"                      50 seconds ago       Exited (0) 19 seconds ago             busybox


#运行停止的容器
[root@docker-node1 ~]# docker start  busybox
root@docker-node1 ~]# docker ps -a
CONTAINER ID   IMAGE            COMMAND                   CREATED         STATUS         PORTS     NAMES
d1b27167a247   busybox:latest   "sh"                      2 minutes ago   Up 1 second              busybox


#退出交互容器不对其停止
[root@docker-node1 ~]# docker attach busybox
/ # [ctrl]+[p]+[q]   #按键
[root@docker-node1 ~]# docker ps -a
CONTAINER ID   IMAGE            COMMAND                   CREATED         STATUS              PORTS     NAMES
d1b27167a247   busybox:latest   "sh"                      3 minutes ago   Up About a minute             busybox

#查看容器信息
#docker inspect + 镜像名称查看镜像的基本信息
[root@docker-node1 ~]# docker inspect busybox

#容器控制
[root@Docker-node1 ~]# docker stop busybox			#停止容器
[root@Docker-node1 ~]# docker kill busybox			#杀死容器,可以使用信号
[root@Docker-node1 ~]# docker start busybox			#开启停止的容器


#在已经运行的容器中执行指定命令
[root@docker-node1 ~]# docker exec busybox touch /root/haha		#非交互
[root@docker-node1 ~]# docker exec  busybox  ls /root
file1
file2
haha

[root@docker-node1 ~]# docker exec  -it  web /bin/bash			#交互的
root@f3e369725fab:/#

#容器删除
[root@docker-node1 ~]# docker rm -f busybox
busybox
[root@docker-node1 ~]# docker stop web
web
[root@docker-node1 ~]# docker rm  web
web

#内容提交
[root@docker-node1 ~]# docker run  -it --name test busybox:latest
/ # touch /root/file
/ # ls /root/
file
ctrl+qp 退出当前环境并继续运行容器
#-m 添加备注
[root@docker-node1 ~]# docker commit -m "add file" test  busybox-file:latest
sha256:31a32089d241d025a5a54f144f15319cc6fb55be1b41d049f8905a472d5a028e
[root@docker-node1 ~]# docker images
                                                                                                i Info →   U  In Use
IMAGE                       ID             DISK USAGE   CONTENT SIZE   EXTRA
busybox-file:latest         31a32089d241       6.71MB         2.21MB

[root@docker-node1 ~]# docker run  -it --name test busybox-file:latest


#文件在镜像中的复制
[root@docker-node1 ~]# docker run  -it --name test busybox-file:latest
root@docker-node1 ~]# docker cp  test:/root/file  /mnt
Successfully copied 1.54kB to /mnt
[root@docker-node1 ~]# ls /mnt/
file  hgfs


[root@docker-node1 ~]# docker cp   /etc/passwd  test:/root/
Successfully copied 3.07kB to test:/root/
[root@docker-node1 ~]# docker exec test  ls /root
file
passwd

三.熟悉镜像构建是用到的参数

bash 复制代码
#建立构建目录
[root@docker-node1 ~]# mkdir docker
[root@docker-node1 ~]# cd docker/

#编写构建规则文件
[root@docker-node1 docker]# vim Dockerfile

#FROM
FROM busybox:latest

#COPY
[root@docker-node1 docker]# echo timinglee > timinglee
[root@docker-node1 docker]# cat timinglee
timinglee

[root@docker-node1 docker]# vim Dockerfile
FROM busybox:latest
COPY timinglee /root

#如果构建文件名不是Dockerfile,用-f 指定文件
#构建命令
[root@docker-node1 docker]# docker build -t timinglee:v1 .
[+] Building 0.2s (7/7) FINISHED                                                          docker:default
 => [internal] load build definition from Dockerfile                                                0.0s
 => => transferring dockerfile: 78B                                                                 0.0s
 => [internal] load metadata for docker.io/library/busybox:latest                                   0.0s
 => [internal] load .dockerignore                                                                   0.0s
 => => transferring context: 2B                                                                     0.0s
 => [internal] load build context                                                                   0.0s
 => => transferring context: 46B                                                                    0.0s
 => [1/2] FROM docker.io/library/busybox:latest@sha256:b3255e7dfbcd10cb367af0d409747d511aeb66dfac9  0.0s
 => => resolve docker.io/library/busybox:latest@sha256:b3255e7dfbcd10cb367af0d409747d511aeb66dfac9  0.0s
 => [2/2] COPY timinglee /root                                                                      0.0s
 => exporting to image                                                                              0.1s
 => => exporting layers                                                                             0.0s
 => => exporting manifest sha256:3e240075ea92a386ccc7b8249faf4fbc049465ac3e490ddb9c0b6c759a35a2be   0.0s
 => => exporting config sha256:16a6f0015605d0df6a11f1c609afba2c28bdf3d984305922b440e52cd76f9dc2     0.0s
 => => exporting attestation manifest sha256:74b85b3b7cbdaa72964271d4d7c0fc371c7e267bbf6070df2628f  0.0s
 => => exporting manifest list sha256:0a7e32bc130bf9dbfc457442d8bc653987c1a642f86858f6bc233dc120d6  0.0s
 => => naming to docker.io/library/timinglee:v1                                                     0.0s
 => => unpacking to docker.io/library/timinglee:v1   

ENV定义变量

ENTRYPOINT 不可覆盖

bash 复制代码
[root@docker10 ~]# mkdir docker
[root@docker10 ~]# cd docker/
[root@docker10 docker]# vim Dockerfile
[root@docker10 docker]# vim Dockerfile

FROM busybox:latest
MAINTAINER lee@timinglee.org
ENV NAME xier
ENTRYPOINT echo $NAME
[root@docker10 docker]# vim Dockerfile

#.表示当前目录
[root@docker10 docker]# docker build -t xier:v1 .
[+] Building 0.3s (5/5) FINISHED                                                            docker:default
 => [internal] load build definition from Dockerfile                                                  0.0s
 => => transferring dockerfile: 122B                                                                  0.0s
 => WARN: MaintainerDeprecated: Maintainer instruction is deprecated in favor of using label (line 2  0.0s
 => WARN: LegacyKeyValueFormat: "ENV key=value" should be used instead of legacy "ENV key value" for  0.0s
 => WARN: JSONArgsRecommended: JSON arguments recommended for ENTRYPOINT to prevent unintended behav  0.0s
 => [internal] load metadata for docker.io/library/busybox:latest                                     0.0s
 => [internal] load .dockerignore                                                                     0.0s
 => => transferring context: 2B                                                                       0.0s
 => [1/1] FROM docker.io/library/busybox:latest@sha256:b3255e7dfbcd10cb367af0d409747d511aeb66dfac98c  0.0s
 => => resolve docker.io/library/busybox:latest@sha256:b3255e7dfbcd10cb367af0d409747d511aeb66dfac98c  0.0s
 => exporting to image                                                                                0.1s
 => => exporting layers                                                                               0.0s
 => => exporting manifest sha256:832633de31c7350218dc60b1e42adcf7e9e5a810d69ad927a1ed1352630ee995     0.0s
 => => exporting config sha256:2c546b9a12f10fd2bd150ba2246146959d58fe30074427ee01d30b790f18ecd1       0.0s
 => => exporting attestation manifest sha256:7379cc57e8585dd51b26fceb6fefeb0c9d608436b6590d0c341aa0f  0.0s
 => => exporting manifest list sha256:362ce22053cde3a99392af4a1f9ef855a4cb88a2ab85eff2c281c727cc4e7e  0.0s
 => => naming to docker.io/library/xier:v1                                                            0.0s
 => => unpacking to docker.io/library/xier:v1                                                         0.0s

 3 warnings found (use docker --debug to expand):
 - JSONArgsRecommended: JSON arguments recommended for ENTRYPOINT to prevent unintended behavior related to OS signals (line 4)
 - MaintainerDeprecated: Maintainer instruction is deprecated in favor of using label (line 2)
 - LegacyKeyValueFormat: "ENV key=value" should be used instead of legacy "ENV key value" format (line 3)
[root@docker10 docker]# docker run --rm xier:v1 
xier
[root@docker10 docker]# docker run --rm xier:v1 echo 521
xier
[root@docker10 docker]# 

搭建centos7镜像(自己配置软件仓库的镜像)

bash 复制代码
[root@docker10 yum.repos.d]# cd /root/docker/
[root@docker10 docker]# vim docker.repo
[docker]
name = docker
baseurl = https://mirrors.aliyun.com/centos-vault/7.9.2009/os/x86_64/
gpgcheck = 0

[root@docker10 docker]# vim Dockerfile 
[root@docker10 docker]# vim Dockerfile 
   2 FROM centos:7
   1 MAINTAINER xierxier
3    RUN ["/bin/bash" , "-c" , "rm -rf /etc/yum.repos.d/*"]
   1 COPY docker.repo /etc/yum.repos.d/docker.repo


[root@docker10 docker]# docker build -t centos7 .
[+] Building 0.5s (8/8) FINISHED                                                                                                                                                   docker:default
 => [internal] load build definition from Dockerfile                                                                                                                                         0.0s
 => => transferring dockerfile: 174B                                                                                                                                                         0.0s
 => WARN: MaintainerDeprecated: Maintainer instruction is deprecated in favor of using label (line 2)                                                                                        0.0s
 => [internal] load metadata for docker.io/library/centos:7                                                                                                                                  0.0s
 => [internal] load .dockerignore                                                                                                                                                            0.0s
 => => transferring context: 2B                                                                                                                                                              0.0s
 => CACHED [1/3] FROM docker.io/library/centos:7@sha256:be65f488b7764ad3638f236b7b515b3678369a5124c47b8d32916d6487418ea4                                                                     0.0s
 => => resolve docker.io/library/centos:7@sha256:be65f488b7764ad3638f236b7b515b3678369a5124c47b8d32916d6487418ea4                                                                            0.0s
 => [internal] load build context                                                                                                                                                            0.0s
 => => transferring context: 32B                                                                                                                                                             0.0s
 => [2/3] RUN ["/bin/bash" , "-c" , "rm -rf /etc/yum.repos.d/*"]                                                                                                                             0.2s
 => [3/3] COPY docker.repo /etc/yum.repos.d/docker.repo                                                                                                                                      0.0s
 => exporting to image                                                                                                                                                                       0.2s
 => => exporting layers                                                                                                                                                                      0.1s
 => => exporting manifest sha256:d5d87910f5cde33ed121b95e98e144f73e836d2719314380aeca732254b14174                                                                                            0.0s
 => => exporting config sha256:8a3c1bda769beb73f439e0c55a79afcafbeab72bfaf36612179e115d32a1de5c                                                                                              0.0s
 => => exporting attestation manifest sha256:b84f5fa971d52457d0783894a14bf1b85f6c8df4e59ba6b5b4cb2453da9ac47a                                                                                0.0s
 => => exporting manifest list sha256:fa2313c1d74908ee7dfe642a41ecf13bcb466a6c2589894a059402658fe20b38                                                                                       0.0s
 => => naming to docker.io/library/centos7:latest                                                                                                                                            0.0s
 => => unpacking to docker.io/library/centos7:latest                                                                                                                                         0.0s

 1 warning found (use docker --debug to expand):
 - MaintainerDeprecated: Maintainer instruction is deprecated in favor of using label (line 2)
[root@docker10 docker]# docker run -it --rm centos7 
[root@32ea777d87dc /]# ll /etc/yum.repos.d/
total 4
-rw-r--r-- 1 root root 108 Mar 15 03:51 docker.repo
[root@32ea777d87dc /]# dnf install gcc -y
bash: dnf: command not found
[root@32ea777d87dc /]# yum install gcc -y
Loaded plugins: fastestmirror, ovl
Determining fastest mirrors
docker                                                                                                                                                                     | 3.6 kB  00:00:00     
(1/2): docker/group_gz                                                                                                                                                     | 153 kB  00:00:00     
(2/2): docker/primary_db                                                                                                                                                   | 6.1 MB  00:00:01     
Resolving Dependencies
--> Running transaction check
---> Package gcc.x86_64 0:4.8.5-44.el7 will be installed
--> Processing Dependency: libgomp = 4.8.5-44.el7 for package: gcc-4.8.5-44.el7.x86_64
--> Processing Dependency: cpp = 4.8.5-44.el7 for package: gcc-4.8.5-44.el7.x86_64
--> Processing Dependency: glibc-devel >= 2.2.90-12 for package: gcc-4.8.5-44.el7.x86_64
--> Processing Dependency: libmpfr.so.4()(64bit) for package: gcc-4.8.5-44.el7.x86_64
--> Processing Dependency: libmpc.so.3()(64bit) for package: gcc-4.8.5-44.el7.x86_64
--> Processing Dependency: libgomp.so.1()(64bit) for package: gcc-4.8.5-44.el7.x86_64
--> Running transaction check
---> Package cpp.x86_64 0:4.8.5-44.el7 will be installed
---> Package glibc-devel.x86_64 0:2.17-317.el7 will be installed
--> Processing Dependency: glibc-headers = 2.17-317.el7 for package: glibc-devel-2.17-317.el7.x86_64
--> Processing Dependency: glibc-headers for package: glibc-devel-2.17-317.el7.x86_64
---> Package libgomp.x86_64 0:4.8.5-44.el7 will be installed
---> Package libmpc.x86_64 0:1.0.1-3.el7 will be installed
---> Package mpfr.x86_64 0:3.1.1-4.el7 will be installed
--> Running transaction check
---> Package glibc-headers.x86_64 0:2.17-317.el7 will be installed
--> Processing Dependency: kernel-headers >= 2.2.1 for package: glibc-headers-2.17-317.el7.x86_64
--> Processing Dependency: kernel-headers for package: glibc-headers-2.17-317.el7.x86_64
--> Running transaction check
---> Package kernel-headers.x86_64 0:3.10.0-1160.el7 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

==================================================================================================================================================================================================
 Package                                           Arch                                      Version                                              Repository                                 Size
==================================================================================================================================================================================================
Installing:
 gcc                                               x86_64                                    4.8.5-44.el7                                         docker                                     16 M
Installing for dependencies:
 cpp                                               x86_64                                    4.8.5-44.el7                                         docker                                    5.9 M
 glibc-devel                                       x86_64                                    2.17-317.el7                                         docker                                    1.1 M
 glibc-headers                                     x86_64                                    2.17-317.el7                                         docker                                    690 k
 kernel-headers                                    x86_64                                    3.10.0-1160.el7                                      docker                                    9.0 M
 libgomp                                           x86_64                                    4.8.5-44.el7                                         docker                                    159 k
 libmpc                                            x86_64                                    1.0.1-3.el7                                          docker                                     51 k
 mpfr                                              x86_64                                    3.1.1-4.el7                                          docker                                    203 k

Transaction Summary
==================================================================================================================================================================================================
Install  1 Package (+7 Dependent packages)

Total download size: 33 M
Installed size: 60 M
Downloading packages:
cpp-4.8.5-44.el7.x86_64.rpm    FAILED                                          
https://mirrors.aliyun.com/centos-vault/7.9.2009/os/x86_64/Packages/cpp-4.8.5-44.el7.x86_64.rpm: [Errno 14] curl#6 - "Could not resolve host: mirrors.aliyun.com; Unknown error"0 B  --:--:-- ETA 
Trying other mirror.
gcc-4.8.5-44.el7.x86_64.rpm    FAILED                                          
https://mirrors.aliyun.com/centos-vault/7.9.2009/os/x86_64/Packages/gcc-4.8.5-44.el7.x86_64.rpm: [Errno 14] curl#6 - "Could not resolve host: mirrors.aliyun.com; Unknown error"0 B  --:--:-- ETA 
Trying other mirror.
(1/8): glibc-devel-2.17-317.el7.x86_64.rpm                                                                                                                                 | 1.1 MB  00:00:00     
(2/8): glibc-headers-2.17-317.el7.x86_64.rpm                                                                                                                               | 690 kB  00:00:00     
(3/8): kernel-headers-3.10.0-1160.el7.x86_64.rpm                                                                                                                           | 9.0 MB  00:00:00     
(4/8): libgomp-4.8.5-44.el7.x86_64.rpm                                                                                                                                     | 159 kB  00:00:00     
(5/8): libmpc-1.0.1-3.el7.x86_64.rpm                                                                                                                                       |  51 kB  00:00:00     
(6/8): mpfr-3.1.1-4.el7.x86_64.rpm                                                                                                                                         | 203 kB  00:00:00     


Error downloading packages:
  gcc-4.8.5-44.el7.x86_64: [Errno 256] No more mirrors to try.
  cpp-4.8.5-44.el7.x86_64: [Errno 256] No more mirrors to try.

[root@32ea777d87dc /]# 

添加虚拟机20并部署docker

10:

bash 复制代码
[root@docker10 docker]# scp /etc/modules-load.d/docker_mod.conf  root@172.25.254.20:/etc/modules-load.d/docker_mod.conf
docker_mod.conf                                                                                                                                                 100%   13     9.1KB/s   00:00    
[root@docker10 docker]# scp /etc/sysctl.d/docker.conf root@172.25.254.20:/etc/sysctl.d/docker.conf
docker.conf                                                                                                                                                     100%  103   123.9KB/s   00:00    
[root@docker10 docker]# scp /etc/yum.repos.d/docker1.repo root@172.25.254.20:/etc/yum.repos.d/docker1.repo
docker1.repo                                                                                                                                                    100%  114   191.5KB/s   00:00    
[root@docker10 docker]# 

20:

bash 复制代码
[root@docker20 ~]# cat /etc/modules-load.d/docker_mod.conf 
br_netfilter
[root@docker20 ~]# modprobe -a br_netfilter 
[root@docker20 ~]# 
[root@docker20 ~]# sysctl --system 

[root@docker20 ~]# dnf install docker-ce -y
[root@docker20 ~]# systemctl enable --now docker
Created symlink /etc/systemd/system/multi-user.target.wants/docker.service → /usr/lib/systemd/system/docker.service.
[root@docker20 ~]# 

四 docker 镜像仓库的管理

1 docker hub

Docker Hub是 Docker 官方提供的一个公共的镜像仓库服务。

docker hub的使用方法

1.登录
bash 复制代码
#登陆官方仓库
[root@docker ~]# docker login -u timinglee
Log in with your Docker ID or email address to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com/ to create one.
You can log in with your password or a Personal Access Token (PAT). Using a limited-scope PAT grants better security and is required for organizations using SSO. Learn more at https://docs.docker.com/go/access-tokens/

Password:
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credential-stores

Login Succeeded

#登陆信息保存位置
[root@docker ~]# cd .docker/
[root@docker .docker]# ls
config.json
[root@docker .docker]# cat config.json
{
        "auths": {
                "https://index.docker.io/v1/": {
                        "auth": "dGltaW5nbGVlOjY3NTE1MTVtaW5nemxu"
                }
        }
2.上传镜像
bash 复制代码
[root@docker ~]# docker tag gcr.io/distroless/base-debian11:latest  timinglee/base-debian11:latest
[root@docker ~]# docker push  timinglee/base-debian11:latest
3.下载
bash 复制代码
docker search 仓库名称

docker pull 名称/镜像

搭建docker的私有仓库

2.搭建简单的Registry仓库

1.下载Registry镜像

bash 复制代码
[root@docker ~]# docker pull registry

下载不了用压缩包导入

bash 复制代码
-rw-r--r--  1 root root 18860032  3月 16 01:25 registry.tar
[root@docker10 ~]# docker load -i registry.tar
Loaded image: registry:latest
[root@docker10 ~]# 

2.开启Registry

bash 复制代码
[root@docker10 ~]# docker history registry:latest 
IMAGE          CREATED       CREATED BY                                       SIZE      COMMENT
6c5666b861f3   6 weeks ago   CMD ["/etc/distribution/config.yml"]             0B        buildkit.dockerfile.v0
<missing>      6 weeks ago   ENTRYPOINT ["/entrypoint.sh"]                    0B        buildkit.dockerfile.v0
<missing>      6 weeks ago   COPY entrypoint.sh /entrypoint.sh # buildkit     4.1kB     buildkit.dockerfile.v0
<missing>      6 weeks ago   EXPOSE map[5000/tcp:{}]                          0B        buildkit.dockerfile.v0
<missing>      6 weeks ago   VOLUME [/var/lib/registry]                       0B        buildkit.dockerfile.v0
<missing>      6 weeks ago   COPY ./config-example.yml /etc/distribution/...   4.1kB     buildkit.dockerfile.v0
<missing>      6 weeks ago   RUN /bin/sh -c set -eux;  version='3.0.0';  ...   49.3MB    buildkit.dockerfile.v0
<missing>      6 weeks ago   RUN /bin/sh -c apk add --no-cache ca-certifi...   946kB     buildkit.dockerfile.v0
<missing>      6 weeks ago   CMD ["/bin/sh"]                                  0B        buildkit.dockerfile.v0
<missing>      6 weeks ago   ADD alpine-minirootfs-3.21.6-x86_64.tar.gz /...   8.14MB    buildkit.dockerfile.v0
[root@docker10 ~]# docker run -d -p 5000:5000 --restart=always --name registry registry:latest 
d5bc7a2f04582eadf797042aa003f6331a0793fdc7cb5c2f58db3c4413b2dd83
[root@docker10 ~]#

3.上传镜像到仓库中

#给要上传的经镜像打标签

bash 复制代码
[root@docker10 ~]# docker images
                                                                                                                                                                             i Info →   U  In Use
IMAGE                       ID             DISK USAGE   CONTENT SIZE   EXTRA
busybox:latest              b3255e7dfbcd        6.7MB         2.22MB        
centos7:latest              fa2313c1d749        299MB         76.1MB        
centos:7                    be65f488b776        299MB         76.1MB        
nginx:1.26                  41b194461e4b        279MB         75.2MB        
registry:latest             6c5666b861f3       77.3MB         18.8MB    U   
timinglee/game2048:latest   8a34fb9cb168       77.2MB         17.8MB        
timinglee/mario:latest      7758988210df        298MB         73.7MB        
xier:v1                     362ce22053cd        6.7MB         2.21MB        
[root@docker10 ~]# docker tag centos:7 172.25.254.10:5000/centos7:v1

#docker在上传的过程中默认使用https,但是我们并没有建立https认证需要的认证文件所以会报错

bash 复制代码
[root@docker10 ~]# docker push 172.25.254.10:5000/centos7:v1
The push refers to repository [172.25.254.10:5000/centos7]
2d473b07cdd5: Unavailable 
failed to do request: Head "https://172.25.254.10:5000/v2/centos7/blobs/sha256:eeb6ee3f44bd0b5103bb561b4c16bcb82328cfe5809ab675bb17ab3a16c517c9": http: server gave HTTP response to HTTPS client
[root@docker10 ~]# 

#配置非加密端口

bash 复制代码
[root@docker10 ~]# vim /etc/docker/daemon.json
{
  "insecure-registries" : ["http://172.25.254.100:5000"]
}
[root@docker10 ~]# systemctl restart docker
[root@docker10 ~]# 

#上传镜像

bash 复制代码
[root@docker10 ~]# docker push 172.25.254.10:5000/centos7:v1
The push refers to repository [172.25.254.10:5000/centos7]
2d473b07cdd5: Pushed 
v1: digest: sha256:dead07b4d8ed7e29e98de0f4504d87e8880d4347859d839686a31da35a3b532f size: 529

i Info → Not all multiplatform-content is present and only the available single-platform image was pushed
          sha256:be65f488b7764ad3638f236b7b515b3678369a5124c47b8d32916d6487418ea4 -> sha256:dead07b4d8ed7e29e98de0f4504d87e8880d4347859d839686a31da35a3b532f
[root@docker10 ~]# 

#查看

bash 复制代码
[root@docker10 ~]# curl 172.25.254.10:5000/v2/_catalog
{"repositories":["centos7"]}
[root@docker10 ~]# 
/v2/_catalog
这是 Docker Registry v2 版本的固定 API 地址

3.为Registry添加密传输

1.还原环境

bash 复制代码
[root@docker10 ~]# docker rm -f registry 
registry
[root@docker10 ~]# vim /etc/docker/daemon.json 
[root@docker10 ~]# cat /etc/docker/daemon.json 
[root@docker10 ~]# systemctl restart docker
[root@docker10 ~]# 

2.创建证书

bash 复制代码
[root@docker10 ~]# mkdir /etc/docker/certs
[root@docker10 ~]# openssl req -newkey rsa:4096 \
> -nodes -sha256 -keyout /etc/docker/certs/timinglee.org.key \
> -addext "subjectAltName = DNS:reg.timinglee.org" \
> -x509 -days 365 -out /etc/docker/certs/timinglee.org.crt

````
Common Name (eg, your name or your server's hostname) []:reg.timinglee.org
必须和上面设置的一样
````
#查看证书信息
[root@docker10 ~]# openssl x509 -in /etc/docker/certs/timinglee.org.crt -noout -text
Certificate:
    Data:

3.启动registry仓库

bash 复制代码
--restart=always 开机 / 宕机后自动重启仓库
[root@docker10 ~]# docker run -d -p 443:443 --restart=always --name registry \
> -v /opt/registry:/var/lib/registry \ #宿主机的/opt/registry挂载到→容器里的/var/lib/registry
> -v /etc/docker/certs:/certs \  #同上,宿主机没有自动创建
> -e REGISTRY_HTTP_ADDR=0.0.0.0:443 \
> -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/timinglee.org.crt \
> -e REGISTRY_HTTP_TLS_KEY=/certs/timinglee.org.key registry
20806f570671a7f87b5da9370d5f7a25d7fec986f69ee203fa77e888b89d7f40
[root@docker10 ~]# 
即
[root@docker10 ~]# docker run -d -p 443:443 --restart=always --name registry -v /opt/registry:/var/lib/registry -v /etc/docker/certs:/certs -e REGISTRY_HTTP_ADDR=0.0.0.0:443 -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/timinglee.org.crt -e REGISTRY_HTTP_TLS_KEY=/certs/timinglee.org.key registry
a79bafe96759577ecc5ca6243f68046981fc8c90703b015b0a4206cd7a500590
[root@docker10 ~]#

[root@docker10 ~]# docker ps
CONTAINER ID   IMAGE      COMMAND                   CREATED         STATUS         PORTS                    
a79bafe96759   registry   "/entrypoint.sh /etc..."   2 minutes ago   Up 2 minutes   0.0.0.0:443->443/tcp, [::]
[root@docker10 ~]# 
 

4.在两台主机添加域名解析

bash 复制代码
[root@docker10 ~]# vim /etc/hosts
[root@docker10 ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
172.25.254.10     docker10
172.25.254.10     reg.timinglee.org

[root@docker20 ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
172.25.254.20     docker20
172.25.254.10     reg.timinglee.org

5.测试

给docker建立证书

bash 复制代码
[root@docker10 ~]# mkdir /etc/docker/certs.d/reg.timinglee.org/ -p
[root@docker10 ~]# cp /etc/docker/certs/timinglee.org.crt /etc/docker/certs.d/reg.timinglee.org/ca.crt
[root@docker10 ~]# systemctl restart docker
[root@docker10 ~]# 

上传测试

bash 复制代码
[root@docker10 ~]# curl -k  https://172.25.254.10/v2/_catalog
{"repositories":[]}
[root@docker10 ~]# docker tag xier:v1 reg.timinglee.org/xier:v1
[root@docker10 ~]# docker push reg.timinglee.org/xier:v1
The push refers to repository [reg.timinglee.org/xier]
61dfb50712f5: Pushed 
6227ad376dfb: Pushed 
v1: digest: sha256:362ce22053cde3a99392af4a1f9ef855a4cb88a2ab85eff2c281c727cc4e7e7e size: 855
[root@docker10 ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
172.25.254.10     docker10
172.25.254.10     reg.timinglee.org
[root@docker10 ~]# curl -k  https://172.25.254.10/v2/_catalog
{"repositories":["xier"]}
[root@docker10 ~]# 

4.添加登录认证

1.安装工具

dnf install httpd-tools -y

2.建立认证文件

bash 复制代码
[root@docker10 ~]# mkdir /etc/docker/auth
[root@docker10 ~]# htpasswd -Bc /etc/docker/auth/htpasswd xier
New password: 
Re-type new password: 
Adding password for user xier
[root@docker10 ~]# 

3.添加认证到registry容器中

bash 复制代码
[root@docker10 ~]# docker rm -f registry 
registry
[root@docker10 ~]# docker run -d -p 443:443 --restart=always --name registry -v /opt/registry:/var/lib/registry -v /etc/docker/certs:/certs -e REGISTRY_HTTP_ADDR=0.0.0.0:443 -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/timinglee.org.crt -e REGISTRY_HTTP_TLS_KEY=/certs/timinglee.org.key -v /etc/docker/auth:/auth -e "REGISTRY_AUTH=htpasswd" -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" -e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd registry
6e8b65154ba520295a6e76a6fa25b1e1e9bacb80cb1d38603c6cba8affa0dced
[root@docker10 ~]# 

[root@docker10 ~]# docker ps
CONTAINER ID   IMAGE      COMMAND                   CREATED          STATUS                         PORTS     NAMES
f944967b660b   registry   "/entrypoint.sh -v /..."   23 seconds ago   Restarting (0) 7 seconds ago             registry
[root@docker10 ~]# 

4.测试

bash 复制代码
[root@docker10 ~]# docker login reg.timinglee.org -u xier
Password: 

WARNING! Your credentials are stored unencrypted in '/root/.docker/config.json'.
Configure a credential helper to remove this warning. See
https://docs.docker.com/go/credential-store/

Login Succeeded
[root@docker10 ~]# curl -k https://reg.timinglee.org/v2/_catalog -u xier
Enter host password for user 'xier':
{"repositories":["xier"]}
[root@docker10 ~]# 
[root@docker10 ~]# docker push reg.timinglee.org/xier:v1
The push refers to repository [reg.timinglee.org/xier]
6227ad376dfb: Already exists 
61dfb50712f5: Layer already exists 
v1: digest: sha256:362ce22053cde3a99392af4a1f9ef855a4cb88a2ab85eff2c281c727cc4e7e7e size: 855

20上下载镜像

要把证书放到 /etc/docker/certs.d/域名/ 目录下 = 告诉 Docker:我信任这个仓库

bash 复制代码
[root@docker10 ~]# scp -r /etc/docker/certs.d/ root@172.25.254.20:/etc/docker/certs.d
ca.crt                                                                                                                                                          100% 2179     1.7MB/s   00:00    
[root@docker10 ~]# 


[root@docker20 ~]# systemctl restart docker

查仓库有什么镜像/v2/_catalog

bash 复制代码
[root@docker20 ~]#  curl -k https://reg.timinglee.org/v2/_catalog -u xier
Enter host password for user 'xier':
{"repositories":["xier"]}



[root@docker20 ~]# docker login reg.timinglee.org -u xier
Password: 

WARNING! Your credentials are stored unencrypted in '/root/.docker/config.json'.
Configure a credential helper to remove this warning. See
https://docs.docker.com/go/credential-store/

Login Succeeded

[root@docker20 ~]# docker pull reg.timinglee.org/xier:v1
v1: Pulling from xier
61dfb50712f5: Pull complete 
6227ad376dfb: Download complete 
Digest: sha256:362ce22053cde3a99392af4a1f9ef855a4cb88a2ab85eff2c281c727cc4e7e7e
Status: Downloaded newer image for reg.timinglee.org/xier:v1
reg.timinglee.org/xier:v1
[root@docker20 ~]# 

查镜像有什么版本/v2/镜像名/tags/list

bash 复制代码
[root@docker20 ~]# curl -k https://reg.timinglee.org/v2/xier/tags/list -u xier
Enter host password for user 'xier':
{"name":"xier","tags":["v1"]}
[root@docker20 ~]# 

5 部署harbor仓库

安装部署

1.解压安装包到指定目录

bash 复制代码
[root@docker10 ~]# tar zxf harbor-offline-installer-v2.14.0.tgz -C /opt/
[root@docker10 ~]# cd /opt/
[root@docker10 opt]# ll
总用量 0
drwx--x--x 4 root root  28  3月 14 20:55 containerd
drwxr-xr-x 2 root root 123  3月 21 17:55 harbor
drwxr-xr-x 3 root root  20  3月 16 19:01 registry
[root@docker10 opt]# 

2.复制安装要用的文件

bash 复制代码
[root@docker10 opt]# cd harbor/
[root@docker10 harbor]# ll
总用量 656308
-rw-r--r-- 1 root root      3646  9月  9  2025 common.sh
-rw-r--r-- 1 root root 672014938  9月  9  2025 harbor.v2.14.0.tar.gz
-rw-r--r-- 1 root root     14688  9月  9  2025 harbor.yml.tmpl
-rwxr-xr-x 1 root root      1975  9月  9  2025 install.sh
-rw-r--r-- 1 root root     11347  9月  9  2025 LICENSE
-rwxr-xr-x 1 root root      2211  9月  9  2025 prepare
[root@docker10 harbor]# cp -p harbor.yml.tmpl harbor.yml

//  -p 保留文件权限

3.复制之前创造的证书到指定目录

bash 复制代码
[root@docker10 harbor]# mkdir /data/
[root@docker10 harbor]# ls /data/
[root@docker10 harbor]# cp -rp /etc/docker/certs /data/
[root@docker10 harbor]# ll /data/certs/timinglee.org.crt 
-rw-r--r-- 1 root root 2179  3月 16 14:55 /data/certs/timinglee.org.crt
[root@docker10 harbor]# ll /data/certs/timinglee.org.key 
-rw------- 1 root root 3272  3月 16 14:52 /data/certs/timinglee.org.key
[root@docker10 harbor]# ll /data/certs/
总用量 8
-rw-r--r-- 1 root root 2179  3月 16 14:55 timinglee.org.crt
-rw------- 1 root root 3272  3月 16 14:52 timinglee.org.key
[root@docker10 harbor]# 

(没有证书重新创建)

bash 复制代码
[root@docker10 harbor]# mkdir /opt/harbor/certs
[root@docker10 harbor]# cd /opt/harbor/
[root@docker10 harbor]# openssl req -newkey rsa:4096 \
> -nodes -sha256 -keyout /etc/docker/certs/timinglee.org.key \
> -addext "subjectAltName = DNS:reg.timinglee.org" \
> -x509 -days 365 -out certs/timinglee.org.crt
[root@docker10 harbor]# 

4.编辑安装要用的文件

bash 复制代码
[root@docker harbor]# vim harbor.yml

  hostname: reg.timinglee.org
  certificate: /data/certs/timinglee.org.crt
  private_key: /data/certs/timinglee.org.key
  harbor_admin_password: xier

5.停止并删除旧的 registry 容器,为部署 Harbor 腾出 443 端口(避免端口冲突)

bash 复制代码
[root@docker10 harbor]# docker ps
CONTAINER ID   IMAGE      COMMAND                   CREATED      STATUS          PORTS                                               NAMES
6e8b65154ba5   registry   "/entrypoint.sh /etc..."   4 days ago   Up 43 minutes   0.0.0.0:443->443/tcp, [::]:443->443/tcp, 5000/tcp   registry
[root@docker10 harbor]# docker rm -f registry 
registry
[root@docker10 harbor]# 

6.安装

bash 复制代码
[root@docker10 harbor]# ./install.sh 

·····                                                                                                                                                1.1s
✔ ----Harbor has been installed and started successfully.----
[root@docker10 harbor]# 
//查看
[root@docker10 harbor]# docker ps -a
CONTAINER ID   IMAGE                                 COMMAND                   CREATED              STATUS                        PORTS                                                                                NAMES
d34f6b9fcc43   goharbor/harbor-jobservice:v2.14.0    "/harbor/entrypoint...."   About a minute ago   Up About a minute (healthy)                                                                                        harbor-jobservice
b4545a8a359a   goharbor/nginx-photon:v2.14.0         "nginx -g 'daemon of..."   About a minute ago   Up About a minute (healthy)   0.0.0.0:80->8080/tcp, [::]:80->8080/tcp, 0.0.0.0:443->8443/tcp, [::]:443->8443/tcp   nginx
9e83d430b5e7   goharbor/harbor-core:v2.14.0          "/harbor/entrypoint...."   About a minute ago   Up About a minute (healthy)                                                                                        harbor-core
bc07960d3e6a   goharbor/registry-photon:v2.14.0      "/home/harbor/entryp..."   About a minute ago   Up About a minute (healthy)                                                                                        registry
f69704e0dceb   goharbor/redis-photon:v2.14.0         "redis-server /etc/r..."   About a minute ago   Up About a minute (healthy)                                                                                        redis
a785442f92f7   goharbor/harbor-portal:v2.14.0        "nginx -g 'daemon of..."   About a minute ago   Up About a minute (healthy)                                                                                        harbor-portal
d797644adb43   goharbor/harbor-registryctl:v2.14.0   "/home/harbor/start...."   About a minute ago   Up About a minute (healthy)                                                                                        registryctl
db75efb29793   goharbor/harbor-db:v2.14.0            "/docker-entrypoint...."   About a minute ago   Up About a minute (healthy)                                                                                        harbor-db
5bcb28da9948   goharbor/harbor-log:v2.14.0           "/bin/sh -c /usr/loc..."   About a minute ago   Up About a minute (healthy)   127.0.0.1:1514->10514/tcp                                                            harbor-log
[root@docker10 harbor]# 

使用

7.服务的开启,删除和关闭

bash 复制代码
[root@docker10 harbor]# docker compose stop
关闭服务,但是不会删除容器
[+] stop 9/9
 ✔ Container harbor-jobservice Stopped                                                                                                                                                       0.1ss
 ✔ Container registryctl       Stopped                                                                                                                                                       0.1ss
 ✔ Container nginx             Stopped                                                                                                                                                       0.1ss
 ✔ Container harbor-portal     Stopped                                                                                                                                                       0.1ss
 ✔ Container harbor-core       Stopped                                                                                                                                                       0.1ss
 ✔ Container redis             Stopped                                                                                                                                                       0.1ss
 ✔ Container harbor-db         Stopped                                                                                                                                                       0.1ss
 ✔ Container registry          Stopped                                                                                                                                                       0.1ss
 ✔ Container harbor-log        Stopped                                                                                                                                                       10.1s
[root@docker10 harbor]# docker compose down
删除容器
[+] down 10/10
 ✔ Container registryctl       Removed                                                                                                                                                        0.0s
 ✔ Container harbor-jobservice Removed                                                                                                                                                        0.0s
 ✔ Container nginx             Removed                                                                                                                                                        0.0s
 ✔ Container harbor-portal     Removed                                                                                                                                                        0.0s
 ✔ Container harbor-core       Removed                                                                                                                                                        0.0s
 ✔ Container harbor-db         Removed                                                                                                                                                        0.0s
 ✔ Container registry          Removed                                                                                                                                                        0.0s
 ✔ Container redis             Removed                                                                                                                                                        0.0s
 ✔ Container harbor-log        Removed                                                                                                                                                        0.0s
 ✔ Network harbor_harbor       Removed                                                                                                                                                        0.0s
[root@docker10 harbor]# docker compose up -d
开启服务

[+] up 10/10
 ✔ Network harbor_harbor       Created                                                                                                                                                        0.0s
 ✔ Container harbor-log        Started                                                                                                                                                        0.2s
 ✔ Container redis             Started                                                                                                                                                        0.5s
 ✔ Container registry          Started                                                                                                                                                        0.4s
 ✔ Container registryctl       Started                                                                                                                                                        0.6s
 ✔ Container harbor-portal     Started                                                                                                                                                        0.5s
 ✔ Container harbor-db         Started                                                                                                                                                        0.5s
 ✔ Container harbor-core       Started                                                                                                                                                        0.8s
 ✔ Container harbor-jobservice Started                                                                                                                                                        1.0s
 ✔ Container nginx             Started                                                                                                                                                        1.1s
[root@docker10 harbor]# 

8.使用

直接访问输入设定的admin账号和密码

9.上传镜像

查看所有镜像

bash 复制代码
[root@docker10 ~]# docker images
                                                                                                                                                                             i Info →   U  In Use
IMAGE                                   ID             DISK USAGE   CONTENT SIZE   EXTRA
172.25.254.10/xier:v1                   362ce22053cd        6.7MB         2.21MB        
172.25.254.10:5000/centos7:v1           be65f488b776        299MB         76.1MB        
busybox:latest                          b3255e7dfbcd        6.7MB         2.22MB        
centos7:latest                          fa2313c1d749        299MB         76.1MB        
centos:7                                be65f488b776        299MB         76.1MB        
goharbor/harbor-core:v2.14.0            32fb1bea30a8        412MB          204MB    U   
goharbor/harbor-db:v2.14.0              257d051f27d7        563MB          278MB    U   
goharbor/harbor-exporter:v2.14.0        7d050a6cbf58        270MB          134MB        
goharbor/harbor-jobservice:v2.14.0      317294a42a01        363MB          180MB    U   
goharbor/harbor-log:v2.14.0             b208a659155f        335MB          166MB    U   
goharbor/harbor-portal:v2.14.0          f7edc122f9f3        327MB          162MB    U   
goharbor/harbor-registryctl:v2.14.0     3e4111e0aca6        334MB          166MB    U   
goharbor/nginx-photon:v2.14.0           a1287393aaa1        309MB          153MB    U   
goharbor/prepare:v2.14.0                941297444ea3        411MB          202MB        
goharbor/redis-photon:v2.14.0           a35163ff2720        339MB          168MB    U   
goharbor/registry-photon:v2.14.0        ba892b6ec307        177MB         88.2MB    U   
goharbor/trivy-adapter-photon:v2.14.0   c2f4dbf5cad3        790MB          394MB        
nginx:1.26                              41b194461e4b        279MB         75.2MB        
reg.timinglee.org/xier:v1               362ce22053cd        6.7MB         2.21MB        
registry:latest                         6c5666b861f3       77.3MB         18.8MB        
timinglee/game2048:latest               8a34fb9cb168       77.2MB         17.8MB        
timinglee/mario:latest                  7758988210df        298MB         73.7MB        
xier:v1                                 362ce22053cd        6.7MB         2.21MB        

登录(需要主机有域名解析)

bash 复制代码
[root@docker10 ~]# docker login reg.timinglee.org
Authenticating with existing credentials... [Username: xier]

i Info → To login with a different account, run 'docker logout' followed by 'docker login'


Stored credentials invalid or expired
Username (xier): admin
Password: 

WARNING! Your credentials are stored unencrypted in '/root/.docker/config.json'.
Configure a credential helper to remove this warning. See
https://docs.docker.com/go/credential-store/

Login Succeeded

加标签上传

bash 复制代码
[root@docker10 ~]# docker tag nginx:1.26 reg.timinglee.org/library/nginx:1.26
[root@docker10 ~]# docker push reg.timinglee.org/library/nginx:1.26
The push refers to repository [reg.timinglee.org/library/nginx]
5e98d206134b: Unavailable 
6923759e66ab: Unavailable 
8a628cdd7ccc: Unavailable 
d44088bb6ae8: Unavailable 
9ebfb40fb06b: Unavailable 
4fd410795c0f: Unavailable 
7a0654aeb922: Unavailable 
failed to authorize: failed to fetch oauth token: Post "https://reg.timinglee.org/service/token": tls: failed to verify certificate: x509: certificate signed by unknown authority

解决证书不匹配问题(删除docker重新安装低版本的)

关闭harbor删除docker

bash 复制代码
[root@docker10 ~]# 
[root@docker10 ~]# cd /opt/harbor/
[root@docker10 harbor]# docker compose down 
[+] down 10/10
 ✔ Container harbor-jobservice Removed                                                                                                                                                       0.2ss
 ✔ Container registryctl       Removed                                                                                                                                                       0.2ss
 ✔ Container nginx             Removed                                                                                                                                                       0.2ss
 ✔ Container harbor-portal     Removed                                                                                                                                                       0.1ss
 ✔ Container harbor-core       Removed                                                                                                                                                       0.1ss
 ✔ Container redis             Removed                                                                                                                                                       0.1ss
 ✔ Container harbor-db         Removed                                                                                                                                                       0.1ss
 ✔ Container registry          Removed                                                                                                                                                       0.1ss
 ✔ Container harbor-log        Removed                                                                                                                                                       10.1s
 ✔ Network harbor_harbor       Removed                                                                                                                                                       0.1s
[root@docker10 harbor]# dnf remove docker
正在更新 Subscription Management 软件仓库。
无法读取客户身份

本系统尚未在权利服务器中注册。可使用 "rhc" 或 "subscription-manager" 进行注册。

未找到匹配的参数: docker
没有软件包需要移除。
依赖关系解决。
无需任何处理。
完毕!
[root@docker10 harbor]# 

查看可安装的版本

bash 复制代码
[root@docker10 harbor]# dnf list docker-ce --showduplicates 
正在更新 Subscription Management 软件仓库。
无法读取客户身份

本系统尚未在权利服务器中注册。可使用 "rhc" 或 "subscription-manager" 进行注册。

docker                                                                                                                                                            2.7 kB/s | 2.0 kB     00:00    
docker                                                                                                                                                            4.5 kB/s |  47 kB     00:10    
epel                                                                                                                                                              6.5 kB/s | 4.0 kB     00:00    
AppStream                                                                                                                                                         3.1 MB/s | 3.2 kB     00:00    
BaseOS                                                                                                                                                            2.7 MB/s | 2.7 kB     00:00    
已安装的软件包
docker-ce.x86_64                                                                              3:29.3.0-1.el9                                                                              @docker1
可安装的软件包
docker-ce.x86_64                                                                              3:25.0.3-1.el9                                                                              docker1 
docker-ce.x86_64                                                                              3:25.0.4-1.el9                                                                              docker1 
docker-ce.x86_64                                                                              3:25.0.5-1.el9                                                                              docker1 
docker-ce.x86_64                                                                              3:26.0.0-1.el9                                                                              docker1 
docker-ce.x86_64                                                                              3:26.0.1-1.el9                                                                              docker1 
docker-ce.x86_64                                                                              3:26.0.2-1.el9                                                                              docker1 
docker-ce.x86_64                                                                              3:26.1.0-1.el9                                                                              docker1 
docker-ce.x86_64                                                                              3:26.1.1-1.el9                                                                              docker1 
docker-ce.x86_64                                                                              3:26.1.2-1.el9                                                                              docker1 
docker-ce.x86_64                                                                              3:26.1.3-1.el9                                                                              docker1 
docker-ce.x86_64                                                                              3:26.1.4-1.el9                                                                              docker1 
docker-ce.x86_64                                                                              3:27.0.1-1.el9                                                                              docker1 
docker-ce.x86_64                                                                              3:27.0.2-1.el9                                                                              docker1 
docker-ce.x86_64                                                                              3:27.0.3-1.el9                                                                              docker1 
docker-ce.x86_64                                                                              3:27.1.0-1.el9                                                                              docker1 
docker-ce.x86_64                                                                              3:27.1.1-1.el9                                                                              docker1 
docker-ce.x86_64                                                                              3:27.1.2-1.el9                                                                              docker1 
docker-ce.x86_64                                                                              3:27.2.0-1.el9                                                                              docker1 
docker-ce.x86_64                                                                              3:27.2.1-1.el9                                                                              docker1 
docker-ce.x86_64                                                                              3:27.3.0-1.el9                                                                              docker1 
docker-ce.x86_64                                                                              3:27.3.1-1.el9                                                                              docker1 
docker-ce.x86_64                                                                              3:27.4.0-1.el9                                                                              docker1 
docker-ce.x86_64                                                                              3:27.4.1-1.el9                                                                              docker1 
docker-ce.x86_64                                                                              3:27.5.0-1.el9                                                                              docker1 
docker-ce.x86_64                                                                              3:27.5.1-1.el9                                                                              docker1 
docker-ce.x86_64                                                                              3:28.0.0-1.el9                                                                              docker1 
docker-ce.x86_64                                                                              3:28.0.1-1.el9                                                                              docker1 
docker-ce.x86_64                                                                              3:28.0.2-1.el9                                                                              docker1 
docker-ce.x86_64                                                                              3:28.0.3-1.el9                                                                              docker1 
docker-ce.x86_64                                                                              3:28.0.4-1.el9                                                                              docker1 
docker-ce.x86_64                                                                              3:28.1.0-1.el9                                                                              docker1 
docker-ce.x86_64                                                                              3:28.1.1-1.el9                                                                              docker1 
docker-ce.x86_64                                                                              3:28.3.0-1.el9                                                                              docker1 
docker-ce.x86_64                                                                              3:28.3.1-1.el9                                                                              docker1 
docker-ce.x86_64                                                                              3:28.3.2-1.el9                                                                              docker1 
docker-ce.x86_64                                                                              3:28.3.3-1.el9                                                                              docker1 
docker-ce.x86_64                                                                              3:28.4.0-1.el9                                                                              docker1 
docker-ce.x86_64                                                                              3:28.5.0-1.el9                                                                              docker1 
docker-ce.x86_64                                                                              3:28.5.1-1.el9                                                                              docker1 
docker-ce.x86_64                                                                              3:28.5.2-1.el9                                                                              docker1 
docker-ce.x86_64                                                                              3:29.0.0-1.el9                                                                              docker1 
docker-ce.x86_64                                                                              3:29.0.1-1.el9                                                                              docker1 
docker-ce.x86_64                                                                              3:29.0.2-1.el9                                                                              docker1 
docker-ce.x86_64                                                                              3:29.0.3-1.el9                                                                              docker1 
docker-ce.x86_64                                                                              3:29.0.4-1.el9                                                                              docker1 
docker-ce.x86_64                                                                              3:29.1.0-1.el9                                                                              docker1 
docker-ce.x86_64                                                                              3:29.1.1-1.el9                                                                              docker1 
docker-ce.x86_64                                                                              3:29.1.2-1.el9                                                                              docker1 
docker-ce.x86_64                                                                              3:29.1.3-1.el9                                                                              docker1 
docker-ce.x86_64                                                                              3:29.1.4-1.el9                                                                              docker1 
docker-ce.x86_64                                                                              3:29.1.5-1.el9                                                                              docker1 
docker-ce.x86_64                                                                              3:29.2.0-1.el9                                                                              docker1 
docker-ce.x86_64                                                                              3:29.2.1-1.el9                                                                              docker1 
docker-ce.x86_64                                                                              3:29.3.0-1.el9                                                                              docker1 
[root@docker10 harbor]# 

安装

bash 复制代码
[root@docker10 harbor]# dnf install docker-ce-3:28.5.2-1.el9 -y

修改配置文件

bash 复制代码
[root@docker10 harbor]# vim /lib/systemd/system/docker.service 

15   ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock --iptables=true

重新加载并设置开机自启

bash 复制代码
[root@docker10 harbor]# systemctl daemon-reload 
[root@docker10 harbor]# systemctl enable --now docker.service

导入镜像

bash 复制代码
[root@docker10 harbor]# docker images
                                                                                                                                                                             i Info →   U  In Use
IMAGE   ID             DISK USAGE   CONTENT SIZE   EXTRA
[root@docker10 harbor]# cd 
[root@docker10 ~]# ls
anaconda-ks.cfg  busy-latest.tar  centos7.tar  certs  docker  game2048-latest.tar  harbor-offline-installer-v2.14.0.tgz  mario-latest.tar  nginx-1.26.tar  registry.tar

[root@docker10 ~]# docker load -i busy-latest.tar
Loaded image: busybox:latest

[root@docker10 ~]# docker load -i  nginx-1.26.tar
Loaded image: nginx:1.26
[root@docker10 ~]# docker images
                                                                                                                                                                             i Info →   U  In Use
IMAGE            ID             DISK USAGE   CONTENT SIZE   EXTRA
busybox:latest   af3f0f48a24e       4.43MB             0B        
nginx:1.26       64e5ac93d424        192MB             0B        
[root@docker10 ~]# 

检测配置文件重新安装启动harbor

bash 复制代码
[root@docker10 ~]# cd /opt/harbor/
[root@docker10 harbor]# vim harbor.yml
[root@docker10 harbor]# ./install.sh
[root@docker10 harbor]# docker compose up -d 
[+] up 9/9
 ✔ Container harbor-log        Running                                                                                                                                                        0.0s
 ✔ Container redis             Running                                                                                                                                                        0.0s
 ✔ Container registryctl       Running                                                                                                                                                        0.0s
 ✔ Container harbor-portal     Running                                                                                                                                                        0.0s
 ✔ Container harbor-db         Running                                                                                                                                                        0.0s
 ✔ Container registry          Running                                                                                                                                                        0.0s
 ✔ Container harbor-core       Running                                                                                                                                                        0.0s
 ✔ Container nginx             Running                                                                                                                                                        0.0s
 ✔ Container harbor-jobservice Running                                                                                                                                                        0.0s
[root@docker10 harbor]# 

在网页harbor中创建项目

打标签上传镜像到harbor

bash 复制代码
[root@docker10 ~]# docker tag busybox:latest reg.timinglee.org/timinglee/busybox:latest
[root@docker10 harbor]# docker push reg.timinglee.org/timinglee/busybox:latest 
The push refers to repository [reg.timinglee.org/timinglee/busybox]
495ba00f2547: Pushed 
latest: digest: sha256:91c66c844e6bba57e92e10e755e73a816d0b99edd17eb5297d9ac519ab3a8c81 size: 527
[root@docker10 harbor]#

查看

客户端下载镜像

1.删除重装docker

bash 复制代码
[root@docker20 ~]# dnf remove docker
正在更新 Subscription Management 软件仓库。
无法读取客户身份

本系统尚未在权利服务器中注册。可使用 "rhc" 或 "subscription-manager" 进行注册。

未找到匹配的参数: docker
没有软件包需要移除。
依赖关系解决。
无需任何处理。
完毕!

[root@docker20 yum.repos.d]# dnf install docker-ce-3:28.5.2-1.el9 -y

[root@docker20 yum.repos.d]# vim /lib/systemd/system/docker.service 

15   ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock --iptables=true

[root@docker20 yum.repos.d]# systemctl daemon-reload 
[root@docker20 yum.repos.d]# systemctl enable --now docker.service
[root@docker20 yum.repos.d]# 

客户端下载需要证书(必须)(上个实验已经配置完成)

检测

bash 复制代码
[root@docker20 yum.repos.d]# cd /etc/docker/certs.d/
[root@docker20 certs.d]# ls
reg.timinglee.org
[root@docker20 certs.d]# cd reg.timinglee.org/
[root@docker20 reg.timinglee.org]# ll
总用量 4
-rw-r--r-- 1 root root 2179  3月 21 22:47 ca.crt
[root@docker20 reg.timinglee.org]# ls
ca.crt
[root@docker20 reg.timinglee.org]# 

使用短名称需要配置加速器

设定docker加速器

bash 复制代码
[root@docker20 ~]# vim /etc/docker/daemon.json

[root@docker20 ~]# cat /etc/docker/daemon.json 
{
    "registry-mirrors": ["https://reg.timinglee.org"]
}

//拉取 Docker Hub 公网镜像时,让 Docker 先去你配置的地址请求,而不是直接访问国外官网
[root@docker20 ~]# systemctl restart docker

下载镜像

bash 复制代码
[root@docker20 yum.repos.d]# docker pull timinglee/busybox
Using default tag: latest
latest: Pulling from timinglee/busybox
8acfacc0e959: Pull complete 
Digest: sha256:91c66c844e6bba57e92e10e755e73a816d0b99edd17eb5297d9ac519ab3a8c81
Status: Downloaded newer image for timinglee/busybox:latest
docker.io/timinglee/busybox:latest




[root@docker20 reg.timinglee.org]# docker pull reg.timinglee.org/timinglee/busybox:latest
latest: Pulling from timinglee/busybox
Digest: sha256:91c66c844e6bba57e92e10e755e73a816d0b99edd17eb5297d9ac519ab3a8c81
Status: Downloaded newer image for reg.timinglee.org/timinglee/busybox:latest
reg.timinglee.org/timinglee/busybox:latest
[root@docker20 reg.timinglee.org]# docker images
                                                                                                                                                                             i Info →   U  In Use
IMAGE                                        ID             DISK USAGE   CONTENT SIZE   EXTRA
reg.timinglee.org/timinglee/busybox:latest   af3f0f48a24e       4.43MB             0B        
timinglee/busybox:latest                     af3f0f48a24e       4.43MB             0B        
[root@docker20 reg.timinglee.org]# 

原生的三种网络模式

(安装好docker后默认的网络模式)

1.bridge桥接

通过docker网卡连接宿主机的网络

2.host仅主机

直接连接宿主机的网络

3.none没有网络

docker的自定义网络

1.bridge

默认的网段是172.17.0.0

新建的在此上递增172.18.0.0 ,172.19.0.0 .。。。。

个网络间相互隔离

自定义的桥接在关闭重启后ping容器名还是可以ping通,默认的桥接只能ping变化的ip

2.overlay

3.macvian

join网络实战

1.加载实验镜像

bash 复制代码
[root@docker10 ~]# docker load -i phpmyadmin-latest.tar.gz
9853575bc4f9: Loading layer [==================================================>]  3.584kB/3.584kB
Loaded image: phpmyadmin:latest
[root@docker10 ~]# docker load -i mysql-8.0.tar
1355aaece24a: Loading layer [==================================================>]  116.9MB/116.9MB
1.536kB/1.536kB
Loaded image: mysql:8.0
[root@docker10 ~]# 

2.运行容器并部署join网络

bash 复制代码
[root@docker10 ~]# docker run -d --name php -e PMA_ARBITRARY=1 -p 80:80 phpmyadmin:latest 
1ae4876ceadb9fe33e3434aa1df29e85a11ae354595dff38f7528fbcbba54777
[root@docker10 ~]# docker run -d --name mysql -e MYSQL_ROOT_PASSWORD='xier' --network container:php mysql:8.0 
4ba3c22f3dd573358607b4f29c5b3eab3ee3f63165a9ab49cf5921dc0c8af12e
[root@docker10 ~]# 

3.访问测试

http://172.25.254.10

容器的内外网访问

容器访问外网

做源地址转化(snat)

外部访问容器

目的地址转化(dnat)和docker代理两条路(那个先响应走那个)

docker****跨主机网络通信

macvlan****网络方式实现跨主机通信

1.设定硬件添加网卡

两台主机添加网卡并设定为host-only

右键设置中添加

2.开启混杂模式
bash 复制代码
[root@docker10 ~]# ip link set eth1 promisc on
[root@docker10 ~]# ip a s eth1
10: eth1: <BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:0c:29:02:21:66 brd ff:ff:ff:ff:ff:ff
    altname enp11s0
    altname ens192
[root@docker10 ~]# ip link set up eth1

[root@docker20 ~]# ip link set eth1 promisc on
[root@docker20 ~]# ip link set up eth1
[root@docker20 ~]# ip a s eth1
4: eth1: <BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:0c:29:93:df:ee brd ff:ff:ff:ff:ff:ff
    altname enp11s0
    altname ens192
[root@docker20 ~]# 
3.配置自建网络
bash 复制代码
[root@docker10 ~]# docker network create -d macvlan --subnet 1.1.1.0/24 --gateway 1.1.1.1 -o parent=eth1 xier
0752d535412036c16e7dc3ff2561975f9761cafb4f12bb75418c0b989858b0a3
[root@docker10 ~]# docker network ls
NETWORK ID     NAME      DRIVER    SCOPE
d544892ae84c   bridge    bridge    local
7dde1e780a57   host      host      local
a7c3da154da5   none      null      local
0752d5354120   xier      macvlan   local



[root@docker20 ~]# docker network create -d macvlan --subnet 1.1.1.0/24 --gateway 1.1.1.1 -o parent=eth1 xier
190a8e6498d5d35a01128d445adf149956018dafecd2161cd38075170ffe9cb2
[root@docker20 ~]#  docker network ls
NETWORK ID     NAME      DRIVER    SCOPE
8e38d7ed488a   bridge    bridge    local
3650ba207593   host      host      local
c236bc857eb0   none      null      local
190a8e6498d5   xier      macvlan   local
 


-d macvlan:使用 macvlan 网络驱动
--subnet 1.1.1.0/24:容器网段设定为 1.1.1.0/24
--gateway 1.1.1.1:网关 1.1.1.1
-o parent=eth1:绑定物理网卡 eth1(你刚才开了混杂模式的那张)
xier:网络名字
4.测试
bash 复制代码
[root@docker10 ~]# docker run -it --name busybox --rm --network xier --ip 1.1.1.100 --rm busybox:latest 
/ # ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
11: eth0@if10: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1500 qdisc noqueue 
    link/ether 66:96:8c:89:37:e8 brd ff:ff:ff:ff:ff:ff
    inet 1.1.1.100/24 brd 1.1.1.255 scope global eth0
       valid_lft forever preferred_lft forever
/ # 


[root@docker20 ~]# docker run -it --name busybox --rm --network xier --ip 1.1.1.200 --rm timinglee/busybox:latest 
/ # ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
5: eth0@if4: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1500 qdisc noqueue 
    link/ether f6:9d:ad:30:8c:ec brd ff:ff:ff:ff:ff:ff
    inet 1.1.1.200/24 brd 1.1.1.255 scope global eth0
       valid_lft forever preferred_lft forever
/ # ping 1.1.1.100
PING 1.1.1.100 (1.1.1.100): 56 data bytes
64 bytes from 1.1.1.100: seq=0 ttl=64 time=1.679 ms
64 bytes from 1.1.1.100: seq=1 ttl=64 time=1.714 ms
64 bytes from 1.1.1.100: seq=2 ttl=64 time=0.756 ms
64 bytes from 1.1.1.100: seq=3 ttl=64 time=0.729 ms
^C
--- 1.1.1.100 ping statistics ---
4 packets transmitted, 4 packets received, 0% packet loss
round-trip min/avg/max = 0.729/1.219/1.714 ms
/ # 

Docker****数据卷管理及优化

一.bind mount 数据卷

挂载目录到容器,没有自动创建

复制代码
[root@docker-node1 ~]# ls -ld /data
ls: 无法访问 '/data': 没有那个文件或目录
​
[root@docker-node1 ~]# docker run  -it --rm --name test  -v /data:/data -v /data1:/data1:ro  -v /etc/passwd:/passwd:ro  busybox:latest
​
/ # ls -ld /data /data1 /etc/passwd
drwxr-xr-x    2 root     root             6 Mar 22 01:56 /data
drwxr-xr-x    2 root     root             6 Mar 22 01:58 /data1
-rw-r--r--    1 root     root           340 May 18  2023 /etc/passwd
/ # touch  /data/file
/ # ls /data
file
​
/ # touch  /data1/file
touch: /data1/file: Read-only file system
​
/ # > passwd
sh: can't create passwd: Read-only file system
​

二.docker manager 卷

docker managed volume 不需要指定mount源,docker自动为容器创建数据卷目录
默认创建的数据卷目录都在 /var/lib/docker/volumes 中
如果挂载时指向容器内已有的目录,原有数据会被复制到volume中
清理未使用的数据卷

root@docker \~\]# docker volume prune ``` [root@docker-node1 ~]# docker volume create timinglee timinglee [root@docker-node1 ~]# docker volume ls DRIVER   VOLUME NAME local     timinglee ​ [root@docker-node1 volumes]# touch timinglee/_data/file ​ [root@docker-node1 ~]# docker run -it --rm -v timinglee:/data:ro busybox:latest / # ls bin   data   dev   etc   home   lib   lib64 proc   root   sys   tmp   usr   var / # touch data/file touch: data/file: Read-only file system / # ls data/ file ​ ​ [root@docker-node1 ~]# docker volume rm timinglee timinglee [root@docker-node1 ~]# docker volume ls DRIVER   VOLUME NAME ​ ``` #### 三.数据卷容器 让两个容器在运行时数据卷情况完全一致 ``` [root@docker-node1 ~]# docker run -it --rm --name data -v /etc/hosts:/hosts:ro -v /data:/data busybox:latest / # cat /hosts 127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1         localhost localhost.localdomain localhost6 localhost6.localdomain6 172.25.254.10     docker-node1 172.25.254.10     reg.timinglee.org / # > /hosts sh: can't create /hosts: Read-only file system / # / # / # touch /data/timinglee / # ls /data/ file       timinglee ​ ​ [root@docker-node1 ~]# docker run -it --rm --name lee --volumes-from data busybox:latest / # ls bin   data   dev   etc   home   hosts lib   lib64 proc   root   sys   tmp   usr   var / # cat hosts 127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1         localhost localhost.localdomain localhost6 localhost6.localdomain6 172.25.254.10     docker-node1 172.25.254.10     reg.timinglee.org / # > hosts sh: can't create hosts: Read-only file system / # ls /data/ file       timinglee ​ ``` #### 四. 数据的备份和迁移 ```bash [root@docker-node1 ~]# docker run -d --name webserver -p 80:80 -v /data:/usr/share/nginx/html nginx:1.23 [root@docker-node1 ~]# docker exec -it webserver bash root@23951ce13871:/# cd /usr/share/nginx/html/ root@23951ce13871:/usr/share/nginx/html# ls index.html timinglee root@23951ce13871:/usr/share/nginx/html# touch timinglee{1..10} root@23951ce13871:/usr/share/nginx/html# ls index.html timinglee1 timinglee2 timinglee4 timinglee6 timinglee8 timinglee timinglee10 timinglee3 timinglee5 timinglee7 timinglee9 #数据备份 [root@docker-node1 ~]# docker run -it --rm --volumes-from webserver -v $(pwd):/backup busybox:latest / # ls backup bin dev etc home lib lib64 proc root sys tmp usr var / # ll /usr/share/nginx/html/ sh: ll: not found / # ls /usr/share/nginx/html/ index.html timinglee1 timinglee2 timinglee4 timinglee6 timinglee8 timinglee timinglee10 timinglee3 timinglee5 timinglee7 timinglee9 / # tar zcf /backup/html.tar.gz /usr/share/nginx/ tar: removing leading '/' from member names / # ls backup bin dev etc home lib lib64 proc root sys tmp usr var / # exit [root@docker-node1 ~]# ls busybox-latest.tar.gz docker mysql-8.0.tar busyboxplus.tar harbor-offline-installer-v2.14.0.tgz nginx-1.23.tar.gz debian11.tar.gz html.tar.gz phpmyadmin-latest.tar.gz #数据恢复 [root@docker-node1 ~]# rm -fr /data/* [root@docker-node1 ~]# docker exec -it webserver webserverbash OCI runtime exec failed: exec failed: unable to start container process: exec: "webserverbash": executable file not found in $PATH [root@docker-node1 ~]# docker exec -it webserver bash root@23951ce13871:/# ls bin dev docker-entrypoint.sh home lib64 mnt proc run srv tmp var boot docker-entrypoint.d etc lib media opt root sbin sys usr root@23951ce13871:/# cd /usr/share/nginx/html/ root@23951ce13871:/usr/share/nginx/html# ls root@23951ce13871:/usr/share/nginx/html# [root@docker-node1 ~]# docker run -d --name webserver -p 80:80 -v /data:/usr/share/nginx/html -v $(pwd):/backup nginx:1.23 83a26edb472ecda951e241dc207847111cd4a2712cb349c52205c3d0e2727238 [root@docker-node1 ~]# docker exec -it webserver bash root@83a26edb472e:/# tar zxf /backup/html.tar.gz -C / root@83a26edb472e:/# ls /usr/share/nginx/html/ index.html timinglee1 timinglee2 timinglee4 timinglee6 timinglee8 timinglee timinglee10 timinglee3 timinglee5 timinglee7 timinglee9 ``` ```bash tar zcf /backup/html.tar.gz /usr/share/nginx/ tar zcf 打包后的文件 源文件 z 用gzip压缩 c create创建新包 f 指定包文件名 tar zxf /backup/html.tar.gz -C / z 用gzip解压 x extract解压 f 指定压缩包文件 -C / 按原来的路径原样恢复 ```

相关推荐
路由侠内网穿透2 小时前
本地部署开源网络书签与内容管理工具 Karakeep 并实现外部访问
运维·服务器·网络·数据库·开源
Forget_85502 小时前
RHEL——Docker容器技术
运维·docker·容器
释怀不想释怀2 小时前
硬盘基础了解知识
linux·运维·服务器
weixin_423594642 小时前
Buddy - AI 浏览器智能体:用自然语言自动化完成多步骤任务
运维·人工智能·自动化
xuxie992 小时前
N13 定时器GPT1、串口UART
运维·服务器·网络
开开心心就好2 小时前
模拟真人手写软件,支持随机调节
运维·服务器·windows·gitee·pdf·开源·excel
逆向编程2 小时前
Ubuntu 入门教程,日常常用命令
linux·运维·ubuntu
sunwenjian8862 小时前
httpslocalhostindex 配置的nginx,一刷新就报404了
运维·nginx
CDN3602 小时前
游戏开发 + 运维:360CDN SDK 游戏盾 + 高防组合方案
运维·网络·游戏