docker容器练习

1.修改虚拟机的主机名为 docker。

[root@admin ~]# hostnamectl  set-hostname docker
[root@admin ~]# bash
[root@docker ~]# 

2.修改虚拟机网卡地址,使其可以上外网,能够 ping 通 www.baidu.com

[root@docker ~]# nmcli  connection modify  ens160  ipv4.addresses  192.168.200.133/24 ipv4.gateway  192.168.200.2 ipv4.dns 114.114.114.114,8.8.8.8 ipv4.method manual  connection.autoconnect yes
[root@docker ~]# nmcli  connection  up ens160 
连接已成功激活(D-Bus 活动路径:/org/freedesktop/NetworkManager/ActiveConnection/3)
[root@docker ~]# 
[root@docker ~]# 
[root@docker ~]# ping www.baidu.com
PING www.a.shifen.com (153.3.238.110) 56(84) 比特的数据。
64 比特,来自 153.3.238.110 (153.3.238.110): icmp_seq=1 ttl=128 时间=12.0 毫秒
64 比特,来自 153.3.238.110 (153.3.238.110): icmp_seq=2 ttl=128 时间=10.9 毫秒
^C
--- www.a.shifen.com ping 统计 ---
已发送 2 个包, 已接收 2 个包, 0% packet loss, time 1002ms
rtt min/avg/max/mdev = 10.913/11.472/12.032/0.559 ms
[root@docker ~]# 

3.安装 vim 和 tab 键功能软件包,安装完成后并重启虚拟机

[root@docker ~]#vim /etc/yum.repos.d/local.repo 
[AppStream]
name=AppStream
baseurl=file:///media/AppStream
enabled=1
gpgcheck=0
[BaseOS]
name=BaseOS
baseurl=file:///media/BaseOS
enabled=1
gpgcheck=0
[root@docker ~]# 
[root@docker ~]# yum -y install  vim && yum -y install
正在更新 Subscription Management 软件仓库。
无法读取客户身份
​
本系统尚未在权利服务器中注册。可使用 subscription-manager 进行注册。
​
AppStream                                                                                                                         3.1 MB/s | 3.2 kB     00:00    
BaseOS                                                                                                                            2.7 MB/s | 2.7 kB     00:00    
软件包 vim-enhanced-2:8.2.2637-20.el9_1.x86_64 已安装。
依赖关系解决。
无需任何处理。
完毕!
[root@docker ~]# reboot

4.安装最新版本 docker 所需依赖的环境软件包

5.安装下载新的 docker 使用的 yum 源

6.查看新下载的 docker 的 yum 源

7.安装 docker-ce 软件包,并启动服务同时设置为开机自启动

[root@docker ~]# yum -y install  yum-utils.noarch
正在更新 Subscription Management 软件仓库。
无法读取客户身份
​
本系统尚未在权利服务器中注册。可使用 subscription-manager 进行注册。
​
上次元数据过期检查:0:01:03 前,执行于 2024年04月11日 星期四 08时50分22秒。
依赖关系解决。
==================================================================================================================================================================
 软件包                                 架构                                版本                                        仓库                                 大小
==================================================================================================================================================================
安装:
 yum-utils                              noarch                              4.3.0-5.el9_2                               BaseOS                               45 k
​
事务概要
==================================================================================================================================================================
安装  1 软件包
​
总计:45 k
安装大小:23 k
下载软件包:
运行事务检查
事务检查成功。
运行事务测试
事务测试成功。
运行事务
  准备中  :                                                                                                                                                   1/1 
  安装    : yum-utils-4.3.0-5.el9_2.noarch                                                                                                                    1/1 
  运行脚本: yum-utils-4.3.0-5.el9_2.noarch                                                                                                                    1/1 
  验证    : yum-utils-4.3.0-5.el9_2.noarch                                                                                                                    1/1 
已更新安装的产品。
​
已安装:
  yum-utils-4.3.0-5.el9_2.noarch                                                                                                                                  
​
完毕!
[root@docker ~]# yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
正在更新 Subscription Management 软件仓库。
无法读取客户身份
​
本系统尚未在权利服务器中注册。可使用 subscription-manager 进行注册。
​
添加仓库自:http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
[root@docker ~]# 
[root@docker ~]# yum clean all 
正在更新 Subscription Management 软件仓库。
无法读取客户身份
​
本系统尚未在权利服务器中注册。可使用 subscription-manager 进行注册。
​
13 个文件已删除
[root@docker ~]# yum makecache 
正在更新 Subscription Management 软件仓库。
无法读取客户身份
​
本系统尚未在权利服务器中注册。可使用 subscription-manager 进行注册。
​
Docker CE Stable - x86_64                                                                                                          36 kB/s |  41 kB     00:01    
AppStream                                                                                                                         136 MB/s | 6.3 MB     00:00    
BaseOS                                                                                                                            179 MB/s | 1.7 MB     00:00    
元数据缓存已建立。
[root@docker ~]# 
[root@docker ~]# cat /etc/yum.repos.d/docker-ce.repo 
[docker-ce-stable]
name=Docker CE Stable - $basearch
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/$releasever/$basearch/stable
enabled=1
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg
​
[docker-ce-stable-debuginfo]
name=Docker CE Stable - Debuginfo $basearch
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/$releasever/debug-$basearch/stable
enabled=0
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg
​
[docker-ce-stable-source]
name=Docker CE Stable - Sources
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/$releasever/source/stable
enabled=0
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg
​
[docker-ce-test]
name=Docker CE Test - $basearch
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/$releasever/$basearch/test
enabled=0
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg
​
[docker-ce-test-debuginfo]
name=Docker CE Test - Debuginfo $basearch
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/$releasever/debug-$basearch/test
enabled=0
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg
​
[docker-ce-test-source]
name=Docker CE Test - Sources
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/$releasever/source/test
enabled=0
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg
​
[docker-ce-nightly]
name=Docker CE Nightly - $basearch
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/$releasever/$basearch/nightly
enabled=0
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg
​
[docker-ce-nightly-debuginfo]
name=Docker CE Nightly - Debuginfo $basearch
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/$releasever/debug-$basearch/nightly
enabled=0
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg
​
[docker-ce-nightly-source]
name=Docker CE Nightly - Sources
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/$releasever/source/nightly
enabled=0
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg
[root@docker ~]# 
[root@docker ~]# yum -y install  docker-ce*
正在更新 Subscription Management 软件仓库。
无法读取客户身份
​
本系统尚未在权利服务器中注册。可使用 subscription-manager 进行注册。
​
Docker CE Stable - x86_64                                                                                                                              11 kB/s | 3.5 kB     00:00    
依赖关系解决。
======================================================================================================================================================================================
 软件包                                               架构                              版本                                        仓库                                         大小
======================================================================================================================================================================================
安装:
 docker-ce                                            x86_64                            3:26.0.0-1.el9                              docker-ce-stable                             27 M
 docker-ce-cli                                        x86_64                            1:26.0.0-1.el9                              docker-ce-stable                            7.3 M
 docker-ce-rootless-extras                            x86_64                            26.0.0-1.el9                                docker-ce-stable                            4.0 M
安装依赖关系:
 containerd.io                                        x86_64                            1.6.28-3.2.el9                              docker-ce-stable                             34 M
安装弱的依赖:
 docker-buildx-plugin                                 x86_64                            0.13.1-1.el9                                docker-ce-stable                             13 M
 docker-compose-plugin                                x86_64                            2.25.0-1.el9                                docker-ce-stable                             13 M
​
事务概要
======================================================================================================================================================================================
安装  6 软件包
​
总计:98 M
总下载:51 M
安装大小:384 M
下载软件包:
[SKIPPED] docker-buildx-plugin-0.13.1-1.el9.x86_64.rpm: Already downloaded                                                                                                           
[SKIPPED] docker-ce-26.0.0-1.el9.x86_64.rpm: Already downloaded                                                                                                                      
[SKIPPED] docker-ce-cli-26.0.0-1.el9.x86_64.rpm: Already downloaded                                                                                                                  
(4/6): docker-ce-rootless-extras-26.0.0-1.el9.x86_64.rpm                                                                          272 kB/s | 4.0 MB     00:15     
(5/6): docker-compose-plugin-2.25.0-1.el9.x86_64.rpm                                                                              352 kB/s |  13 MB     00:37    
(6/6): containerd.io-1.6.28-3.2.el9.x86_64.rpm                                                                                    390 kB/s |  34 MB     01:29    
------------------------------------------------------------------------------------------------------------------------------------------------------------------
总计                                                                                                                              583 kB/s |  51 MB     01:29     
Docker CE Stable - x86_64                                                                                                         4.1 kB/s | 1.6 kB     00:00    
导入 GPG 公钥 0x621E9F35:
 Userid: "Docker Release (CE rpm) <docker@docker.com>"
 指纹: 060A 61C5 1B55 8A7F 742B 77AA C52F EB6B 621E 9F35
 来自: https://mirrors.aliyun.com/docker-ce/linux/centos/gpg
导入公钥成功
运行事务检查
事务检查成功。
运行事务测试
事务测试成功。
运行事务
  准备中  :                                                                                                                                                   1/1 
  安装    : docker-compose-plugin-2.25.0-1.el9.x86_64                                                                                                         1/6 
  运行脚本: docker-compose-plugin-2.25.0-1.el9.x86_64                                                                                                         1/6 
  安装    : docker-buildx-plugin-0.13.1-1.el9.x86_64                                                                                                          2/6 
  运行脚本: docker-buildx-plugin-0.13.1-1.el9.x86_64                                                                                                          2/6 
  安装    : docker-ce-cli-1:26.0.0-1.el9.x86_64                                                                                                               3/6 
  运行脚本: docker-ce-cli-1:26.0.0-1.el9.x86_64                                                                                                               3/6 
  安装    : containerd.io-1.6.28-3.2.el9.x86_64                                                                                                               4/6 
  运行脚本: containerd.io-1.6.28-3.2.el9.x86_64                                                                                                               4/6 
  安装    : docker-ce-rootless-extras-26.0.0-1.el9.x86_64                                                                                                     5/6 
  运行脚本: docker-ce-rootless-extras-26.0.0-1.el9.x86_64                                                                                                     5/6 
  安装    : docker-ce-3:26.0.0-1.el9.x86_64                                                                                                                   6/6 
  运行脚本: docker-ce-3:26.0.0-1.el9.x86_64                                                                                                                   6/6 
  验证    : containerd.io-1.6.28-3.2.el9.x86_64                                                                                                               1/6 
  验证    : docker-buildx-plugin-0.13.1-1.el9.x86_64                                                                                                          2/6 
  验证    : docker-ce-3:26.0.0-1.el9.x86_64                                                                                                                   3/6 
  验证    : docker-ce-cli-1:26.0.0-1.el9.x86_64                                                                                                               4/6 
  验证    : docker-ce-rootless-extras-26.0.0-1.el9.x86_64                                                                                                     5/6 
  验证    : docker-compose-plugin-2.25.0-1.el9.x86_64                                                                                                         6/6 
已更新安装的产品。
​
已安装:
  containerd.io-1.6.28-3.2.el9.x86_64            docker-buildx-plugin-0.13.1-1.el9.x86_64   docker-ce-3:26.0.0-1.el9.x86_64  docker-ce-cli-1:26.0.0-1.el9.x86_64 
  docker-ce-rootless-extras-26.0.0-1.el9.x86_64  docker-compose-plugin-2.25.0-1.el9.x86_64 
​
完毕!
[root@docker ~]# systemctl  restart  docker.service 
[root@docker ~]# systemctl  enable docker.service 
Created symlink /etc/systemd/system/multi-user.target.wants/docker.service → /usr/lib/systemd/system/docker.service.

8.查看 docker 服务的版本信息

[root@docker ~]# docker --version
Docker version 26.0.0, build 2ae903e
[root@docker ~]# 

9.搜索关键字为 lamp 的镜像的命令和结果如下

[root@docker ~]# docker search  lamp
NAME                                      DESCRIPTION                                      STARS     OFFICIAL
javanile/lamp                             Ready to use LAMP stack                          2         
dockette/devstack                         My LAMP/Devstack Dockerfile                      4         
machines/la_p7                            Just a ubuntu based lamp server                  5         
lampson0505/ubuntu-phy                    An Ubuntu image with teamd for network inter…   4         
lampepfl/dotty                            Dotty testing image                              0         
lampepfl/moocs                                                                             0         
lampholder/controlroom-bot                                                                 0         
lampepfl/moocs-dotty                                                                       0         
lampepfl/dockerclient                                                                      0         
mattrayner/lamp                           A simple LAMP docker image running the prere…   346       
lampe/minimal-nginx                       A minimal image for nginx - created with mak…   3         
lampochka/subsonic                                                                         0         
lampepfl2022/cs206                                                                         0         
canersimsek/lampbox                       LAMP Box                                         0         
tutum/lamp                                Out-of-the-box LAMP image (PHP+MySQL)            155       
linode/lamp                               LAMP on Ubuntu 14.04.1 LTS Container             180       
lampnick/doctron                          Doctron supply html convert to pdf, html con…   3         
fauria/lamp                               Modern, developer friendly LAMP stack. Inclu…   121       
lampofgod/docker-php7.0-nodejs-composer                                                    0         
greyltc/lamp                              a super secure, up-to-date and lightweight L…   103       
lampdatabase/safa                                                                          0         
davidsal/lamp-armv7                       LAMP image for ARM32v7 (like Raspberry Pi) b…   1         
lampofgod/docker-php5.6-nodejs-composer   For Gitlab CI                                    0         
geekineers/lamp-laravel-php7              Docker image with LAMP and Laravel installed…   1         
bidmcdigitalpsychiatry/lamp-server        The LAMP Platform API server.                    1         
[root@docker ~]# 

10.配置阿里云的镜像加速器

[root@docker ~]# sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://7f40piyw.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
{
  "registry-mirrors": ["https://7f40piyw.mirror.aliyuncs.com"]
}
​

11.下载镜像nickistre/centos-lamp

[root@docker ~]# docker pull  nickistre/centos-lamp
Using default tag: latest
latest: Pulling from nickistre/centos-lamp
f9f73d801f05: Pull complete 
31a920671517: Pull complete 
21c34a1a7bde: Downloading [==========>                                        ]  13.21MB/64.73MB
21c34a1a7bde: Downloading [===========>                                       ]  15.32MB/64.73MB
001edf96df50: Download complete 
273de3312284: Download complete 
21c34a1a7bde: Pull complete 
dc05bf237fc1: Pull complete 
001edf96df50: Pull complete 
273de3312284: Pull complete 
09e0c479c5d6: Pull complete 
3274b3252b64: Pull complete 
8affd66070d7: Pull complete 
b3d0f4e847ac: Pull complete 
1b0c18851735: Pull complete 
557b86c40b14: Pull complete 
bdf3abef29b4: Pull complete 
8fab0cd5d21a: Pull complete 
4f198432c128: Pull complete 
Digest: sha256:6012dff0d5f805342d65e8eb3cae4e83e75bce16980915b165ef55d64866e91d
Status: Downloaded newer image for nickistre/centos-lamp:latest
docker.io/nickistre/centos-lamp:latest

12.查看本地所有镜像的命令和结果如下

[root@docker ~]# docker images
REPOSITORY              TAG       IMAGE ID       CREATED       SIZE
nickistre/centos-lamp   latest    0b8d572d1c7d   5 years ago   547MB

13.获取镜像 nickistre/centos-lamp 详细信息的命令和结果如下

[root@docker ~]# docker inspect nickistre/centos-lamp:latest 
[
    {
        "Id": "sha256:0b8d572d1c7d20f8b2e86bb92517dd3a9e8f935194c7f48af5dc84984e7c5f44",
        "RepoTags": [
            "nickistre/centos-lamp:latest"
        ],
        "RepoDigests": [
            "nickistre/centos-lamp@sha256:6012dff0d5f805342d65e8eb3cae4e83e75bce16980915b165ef55d64866e91d"
        ],
        "Parent": "",
        "Comment": "",
        "Created": "2018-04-13T21:01:31.472818372Z",
        "DockerVersion": "17.06.1-ce",
        "Author": "Nicholas Istre <nicholas.istre@e-hps.com>",
        "Config": {
            "Hostname": "",
            "Domainname": "",
            "User": "",
            "AttachStdin": false,
            "AttachStdout": false,
            "AttachStderr": false,
            "ExposedPorts": {
                "22/tcp": {},
                "443/tcp": {},
                "80/tcp": {}
            },
            "Tty": false,
            "OpenStdin": false,
            "StdinOnce": false,
            "Env": [
                "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
            ],
            "Cmd": [
                "supervisord",
                "-n"
            ],
            "ArgsEscaped": true,
            "Image": "sha256:23865469389846bddf3e091a0484f8e28cad879295c6f8e3a839b05137c079fc",
            "Volumes": null,
            "WorkingDir": "",
            "Entrypoint": null,
            "OnBuild": [],
            "Labels": null
        },
        "Architecture": "amd64",
        "Os": "linux",
        "Size": 546989824,
        "GraphDriver": {
            "Data": {
                "LowerDir": "/var/lib/docker/overlay2/1230d9aca34929e23c6259ef78e8233145c8f050bee1e41c7d0de6324a8f5426/diff:/var/lib/docker/overlay2/9ce187c52ed2d0b1ceb16e359dba69097bc33a7b88c75f59e79b41ac4c3d7cf8/diff:/var/lib/docker/overlay2/7f1ba880d628da68c50921d3859966c977bd2cd8605bbb0a2b8aed1ab1f13bb2/diff:/var/lib/docker/overlay2/bbc0354b482956d4cad9f5275567b7f3cbf3e655099222ad81157c6cc48cb324/diff:/var/lib/docker/overlay2/67da2bf2180e9cac995d5a4f441d0a4d4befa1095d8567bb10984789f6aef35a/diff:/var/lib/docker/overlay2/3f1b04d120995219c5a968e221417657e9dc89f585abf2b9ae231e468c8c1b20/diff:/var/lib/docker/overlay2/99a40862e4326250569a17dedd4b180826903cc6bfa0d0c507824a88f5324a55/diff:/var/lib/docker/overlay2/92b943578c24b3474711b12b1b6725e24cc75343bcf03717b79eb291280eaaee/diff:/var/lib/docker/overlay2/8eb5c83890ba7699dcc673f9f3db5207efa3cc97607957d42a98e2a22373e822/diff:/var/lib/docker/overlay2/9080b1343c1b7aa972f50a979fc997394d0f7ad64202f8049db0270bfb9993b4/diff:/var/lib/docker/overlay2/9a3771270bc4811bf55f74281097706c4967b470081525a236bb3411c0a82bf1/diff:/var/lib/docker/overlay2/45a4569b06f4933ca4adf102f13f761489b949ed821b44cef91fb7f32741361f/diff:/var/lib/docker/overlay2/6425ca191b3bc53bc7f68de13d682c866b9029fe87d41ebbbf90af4e986f0f3b/diff:/var/lib/docker/overlay2/9fbfe500210cae494487910148fe55a976f84866712502902662d952f36308ae/diff",
                "MergedDir": "/var/lib/docker/overlay2/7945c3da461ca24ab539bb3d06bf02198a10e11d199dd444c7ef0f2f4a769456/merged",
                "UpperDir": "/var/lib/docker/overlay2/7945c3da461ca24ab539bb3d06bf02198a10e11d199dd444c7ef0f2f4a769456/diff",
                "WorkDir": "/var/lib/docker/overlay2/7945c3da461ca24ab539bb3d06bf02198a10e11d199dd444c7ef0f2f4a769456/work"
            },
            "Name": "overlay2"
        },
        "RootFS": {
            "Type": "layers",
            "Layers": [
                "sha256:da6517724f67fd4133a5bf508f7c79e20d8e2741c5b3264790d49db5e97c0e2e",
                "sha256:244de8069fbc70a188607a8dddab80ad8866a4e0bcb0b24f12aef0130ba307f2",
                "sha256:988e3cb5a27b1efc0c85c3d9b34b25322de3ce13267d647a869f9150cd3c3f7f",
                "sha256:38556f5b76216ba7518d1da1f2ea0c7ac147203833976c5a701fb36d71e17ec6",
                "sha256:e6eea089f108513a9af6006efe53cff5ef762bc4be503ce8eaa1c6c726cae2ed",
                "sha256:07d45adf0b976b610bfbbc6f9cc30a133d18f69262a9446bc280f542bd17d743",
                "sha256:a0753067e202b570fa8c70f86ae2e0510f82f2271a0d5c1db5cbb4f9a9210cc3",
                "sha256:9b9518d71f0ef4b967d786f7f40943658362af00b5e9f91f43053619b75bf07b",
                "sha256:11ed4ddf1f28ad2857c7b3f17eee8c349fd9011042cf563807493bbddb2f3f46",
                "sha256:fa3e2c4d1489e48588c4a08443edb471234a481dd52b341b211909d35e5787ca",
                "sha256:f874a4141753cd042dbdcfc0acb48c8239de9a1d42b4902defe79ea6042cfc62",
                "sha256:fabd844fa786a84bcd481f617becfbc31b85e927b4b24a56acc5283c1ad5ea76",
                "sha256:d31fcd4e52cffcbf6c8ff68a19609d4a7ae56e43f7ad41865dd7b1341ca70977",
                "sha256:2ccc0c68e26e5ac575aa7f7822638d547b5a3c703c73c004a40b19388f582bda",
                "sha256:385f382ed46ca3e95842ce6074deb140cc11784744882adea64e27a24eeddaa8"
            ]
        },
        "Metadata": {
            "LastTagTime": "0001-01-01T00:00:00Z"
        }
    }
]
[root@docker ~]# 

14.为本地镜像 nickistre/centos-lamp 添加新的名词 lamp,新的标签 lamp

[root@docker ~]# docker tag  nickistre/centos-lamp:latest lamp:lamp
[root@docker ~]# 

15.要删除 lamp:lamp 镜像,可以使用如下命令

[root@docker ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
lamp         lamp      0b8d572d1c7d   5 years ago   547MB
[root@docker ~]# docker rmi lamp:lamp 
Untagged: lamp:lamp
Deleted: sha256:0b8d572d1c7d20f8b2e86bb92517dd3a9e8f935194c7f48af5dc84984e7c5f44
Deleted: sha256:ac1f500d470a0d21ed6ed9e2132d86b5d636721d2d3301c9932136dc0d03c18e
Deleted: sha256:39595439de2a48c9d23506f76ad810902e3944f2cec2eb730b5a17ba48888bdb
Deleted: sha256:ef99b0f2358f87fb0a8d835835a1f15e557257397ca38db499165725d002a221
Deleted: sha256:82c70ac1157f6619be0415859d8d4201c5c7eef31a189214aa9924819d5b9a3a
Deleted: sha256:bad51cc6d300486ffcbdfd227eda325e5da3c176fd05d2036f581ec87a24956c
Deleted: sha256:09a51d85abc0e82c8ac8d8990fafab6cfedc80c7a2152e6fbac0fea31c9ae550
Deleted: sha256:26ab098c4e7de9c0f5d2bdb84d0e89ff3d8c6693594605dcbb005f93428176a0
Deleted: sha256:5638af005abf6a9991c71e49a784ebc43b606867207c9557fad3eb319e1f5e57
Deleted: sha256:95eabe3b5d839ad6652938d67818f09e6e7a8d1dc94a5da3be5d9fa0726280ce
Deleted: sha256:cd4013e7fada12e92334ba2f85618175ce5b8521011146c9bb04209cb6cd4b1a
Deleted: sha256:33ebf7adc5511801e6ec775de4b00ff7d54a7e9b01c91969afe139ba460c7659
Deleted: sha256:64b87534723ca654a93a98d53374157d5aa68384f29390676103c46f56af7f44
Deleted: sha256:1f12d6f0a489a1ddc36f2208ec4e1334434cd5f54c7ab3db125ec88f716bdfc6
Deleted: sha256:863dfcf52855b4020e42ffeefb84488ad4e7cb9156f7181310e1aea35e640cc3
Deleted: sha256:da6517724f67fd4133a5bf508f7c79e20d8e2741c5b3264790d49db5e97c0e2e
[root@docker ~]# docker images
REPOSITORY   TAG       IMAGE ID   CREATED   SIZE
[root@docker ~]# 

16.删除 nickistre/centos-lamp 镜像,就会删除整个镜像文件的所有层

[root@docker ~]# docker rmi nickistre/centos-lamp:latest 
Untagged: nickistre/centos-lamp:latest
Untagged: nickistre/centos-lamp@sha256:6012dff0d5f805342d65e8eb3cae4e83e75bce16980915b165ef55d64866e91d

17.由于上题将镜像删除,所以需要重新拉取镜像,并存储本地的nickistre/centos-lamp 镜像文件,储存的新镜像文件名为 lamp

[root@docker ~]# docker pull nickistre/centos-lamp:latest
latest: Pulling from nickistre/centos-lamp
f9f73d801f05: Pull complete 
31a920671517: Pull complete 
21c34a1a7bde: Pull complete 
dc05bf237fc1: Pull complete 
001edf96df50: Pull complete 
273de3312284: Pull complete 
09e0c479c5d6: Pull complete 
3274b3252b64: Pull complete 
8affd66070d7: Pull complete 
b3d0f4e847ac: Pull complete 
1b0c18851735: Pull complete 
557b86c40b14: Pull complete 
bdf3abef29b4: Pull complete 
8fab0cd5d21a: Pull complete 
4f198432c128: Pull complete 
Digest: sha256:6012dff0d5f805342d65e8eb3cae4e83e75bce16980915b165ef55d64866e91d
Status: Downloaded newer image for nickistre/centos-lamp:latest
docker.io/nickistre/centos-lamp:latest
[root@docker ~]# docker save -o lamp nickistre/centos-lamp
[root@docker ~]# ls
公共  模板  视频  图片  文档  下载  音乐  桌面  anaconda-ks.cfg  lamp

18.从 lamp 中载入镜像到本地镜像库中

[root@docker ~]# docker load < lamp 
Loaded image: nickistre/centos-lamp:latest
[root@docker ~]# docker images
REPOSITORY              TAG       IMAGE ID       CREATED       SIZE
nickistre/centos-lamp   latest    0b8d572d1c7d   5 years ago   547MB
[root@docker ~]# docker rmi nickistre/centos-lamp:latest 
Untagged: nickistre/centos-lamp:latest
Untagged: nickistre/centos-lamp@sha256:6012dff0d5f805342d65e8eb3cae4e83e75bce16980915b165ef55d64866e91d
Deleted: sha256:0b8d572d1c7d20f8b2e86bb92517dd3a9e8f935194c7f48af5dc84984e7c5f44
Deleted: sha256:ac1f500d470a0d21ed6ed9e2132d86b5d636721d2d3301c9932136dc0d03c18e
Deleted: sha256:39595439de2a48c9d23506f76ad810902e3944f2cec2eb730b5a17ba48888bdb
Deleted: sha256:ef99b0f2358f87fb0a8d835835a1f15e557257397ca38db499165725d002a221
Deleted: sha256:82c70ac1157f6619be0415859d8d4201c5c7eef31a189214aa9924819d5b9a3a
Deleted: sha256:bad51cc6d300486ffcbdfd227eda325e5da3c176fd05d2036f581ec87a24956c
Deleted: sha256:09a51d85abc0e82c8ac8d8990fafab6cfedc80c7a2152e6fbac0fea31c9ae550
Deleted: sha256:26ab098c4e7de9c0f5d2bdb84d0e89ff3d8c6693594605dcbb005f93428176a0
Deleted: sha256:5638af005abf6a9991c71e49a784ebc43b606867207c9557fad3eb319e1f5e57
Deleted: sha256:95eabe3b5d839ad6652938d67818f09e6e7a8d1dc94a5da3be5d9fa0726280ce
Deleted: sha256:cd4013e7fada12e92334ba2f85618175ce5b8521011146c9bb04209cb6cd4b1a
Deleted: sha256:33ebf7adc5511801e6ec775de4b00ff7d54a7e9b01c91969afe139ba460c7659
Deleted: sha256:64b87534723ca654a93a98d53374157d5aa68384f29390676103c46f56af7f44
Deleted: sha256:1f12d6f0a489a1ddc36f2208ec4e1334434cd5f54c7ab3db125ec88f716bdfc6
Deleted: sha256:863dfcf52855b4020e42ffeefb84488ad4e7cb9156f7181310e1aea35e640cc3
Deleted: sha256:da6517724f67fd4133a5bf508f7c79e20d8e2741c5b3264790d49db5e97c0e2e
[root@docker ~]# docker load < lamp 
da6517724f67: Loading layer [==================================================>]  213.2MB/213.2MB
244de8069fbc: Loading layer [==================================================>]  10.37MB/10.37MB
988e3cb5a27b: Loading layer [==================================================>]  179.7MB/179.7MB
38556f5b7621: Loading layer [==================================================>]  47.41MB/47.41MB
e6eea089f108: Loading layer [==================================================>]  3.072kB/3.072kB
07d45adf0b97: Loading layer [==================================================>]  21.89MB/21.89MB
a0753067e202: Loading layer [==================================================>]  51.79MB/51.79MB
9b9518d71f0e: Loading layer [==================================================>]  18.52MB/18.52MB
11ed4ddf1f28: Loading layer [==================================================>]  2.891MB/2.891MB
fa3e2c4d1489: Loading layer [==================================================>]  17.71MB/17.71MB
f874a4141753: Loading layer [==================================================>]  8.704kB/8.704kB
fabd844fa786: Loading layer [==================================================>]  9.728kB/9.728kB
d31fcd4e52cf: Loading layer [==================================================>]   2.56kB/2.56kB
2ccc0c68e26e: Loading layer [==================================================>]  3.584kB/3.584kB
385f382ed46c: Loading layer [==================================================>]  3.584kB/3.584kB
Loaded image: nickistre/centos-lamp:latest
[root@docker ~]# docker images
REPOSITORY              TAG       IMAGE ID       CREATED       SIZE
nickistre/centos-lamp   latest    0b8d572d1c7d   5 years ago   547MB
[root@docker ~]# 

19.使用 docker create 命令创建新容器

[root@docker ~]# docker create  -it nickistre/centos-lamp
457d7b5a481d9a64a15ca0b8dcc74376f437dc99dfa7f9289080185e8cb9b7c9
[root@docker ~]# docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
[root@docker ~]# docker ps -a
CONTAINER ID   IMAGE                   COMMAND            CREATED          STATUS    PORTS     NAMES
457d7b5a481d   nickistre/centos-lamp   "supervisord -n"   11 seconds ago   Created             upbeat_joliot
[root@docker ~]# 

20.使用 docker ps 命令查看所有容器的运行状态,添加-a 选项,可以列出系统最近一次启动的容器

[root@docker ~]# docker ps -a
CONTAINER ID   IMAGE                   COMMAND            CREATED          STATUS    PORTS     NAMES
457d7b5a481d   nickistre/centos-lamp   "supervisord -n"   11 seconds ago   Created             upbeat_joliot

21.使用 docker start 命令启动新创建的容器,并查看新建容器是否正常运行

[root@docker ~]# docker ps -a
CONTAINER ID   IMAGE                   COMMAND            CREATED          STATUS    PORTS     NAMES
457d7b5a481d   nickistre/centos-lamp   "supervisord -n"   53 seconds ago   Created             upbeat_joliot
[root@docker ~]# 
[root@docker ~]# 
[root@docker ~]# docker start  457d7b5a481d
457d7b5a481d
[root@docker ~]# docker ps
CONTAINER ID   IMAGE                   COMMAND            CREATED         STATUS         PORTS                     NAMES
457d7b5a481d   nickistre/centos-lamp   "supervisord -n"   4 minutes ago   Up 2 seconds   22/tcp, 80/tcp, 443/tcp   upbeat_joliot
[root@docker ~]# 

22.使用 docker exec 命令进入正在运行的容器,并查看当前目录下的信息,同时创建一个 123 的文件

[root@457d7b5a481d /]# ls
bin  boot  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  sbin  selinux  srv  supervisord.log  supervisord.pid  sys  tmp  usr  var
[root@457d7b5a481d /]# touch 123
[root@457d7b5a481d /]# ls
123  bin  boot  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  sbin  selinux  srv  supervisord.log  supervisord.pid  sys  tmp  usr  var
[root@457d7b5a481d /]# 

23.使用 docker rm 删除容器,此时会提示报错,因为容器处于运行中,需要停止,停止容器运行后再次执行删除操作,并查看该容器是否被删除

[root@docker ~]# docker ps
CONTAINER ID   IMAGE                   COMMAND            CREATED         STATUS         PORTS                     NAMES
457d7b5a481d   nickistre/centos-lamp   "supervisord -n"   7 minutes ago   Up 3 minutes   22/tcp, 80/tcp, 443/tcp   upbeat_joliot
[root@docker ~]# docker rm  457d7b5a481d
Error response from daemon: cannot remove container "/upbeat_joliot": container is running: stop the container before removing or force remove
[root@docker ~]# docker stop 457d7b5a481d
457d7b5a481d
[root@docker ~]# docker rm  457d7b5a481d
457d7b5a481d
[root@docker ~]# 

24.为本地镜像 nickistre/centos-lamp 添加新的名词 httpd,新的标签 centos,查看是否成功,同时使用 httpd:centos 镜像创建一个名为 web 的容器,并且创建两个数据卷,分别挂载到/date1 和/data2 目录上

[root@docker ~]# docker tag  nickistre/centos-lamp:latest httpd:centos
[root@docker ~]# docker images
REPOSITORY              TAG       IMAGE ID       CREATED       SIZE
httpd                   centos    0b8d572d1c7d   5 years ago   547MB
nickistre/centos-lamp   latest    0b8d572d1c7d   5 years ago   547MB
[root@docker ~]# docker run -d --name web -v /data1 -v /data2 httpd:centos 
1858f880c65788cc109fdce7e4bb9a671971c2c84f5e8f4f46a93126372b1ace

25.进入容器后可以看到两个数据卷已经创建成功,并分别挂载到了/data1 与/data2 目录上

[root@docker ~]# docker exec  -it web  /bin/bash
[root@1858f880c657 /]# 
[root@1858f880c657 /]# 
[root@1858f880c657 /]# ls -l
total 20
dr-xr-xr-x.   2 root root 4096 Mar  4  2015 bin
drwxr-xr-x.   3 root root   18 Apr 13  2018 boot
drwxr-xr-x.   2 root root    6 Apr 11 02:09 data1
drwxr-xr-x.   2 root root    6 Apr 11 02:09 data2

26.拉取 hello-world 镜像

[root@docker ~]# docker pull hello-world
Using default tag: latest
latest: Pulling from library/hello-world
2db29710123e: Pull complete 
Digest: sha256:2498fce14358aa50ead0cc6c19990fc6ff866ce72aeb5546e1d59caac3d0d60f
Status: Downloaded newer image for hello-world:latest
docker.io/library/hello-world:latest

27.运行 hello-world

[root@docker ~]# docker run hello-world

Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (amd64)
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
 https://hub.docker.com/

For more examples and ideas, visit:
 https://docs.docker.com/get-started/

[root@docker ~]# 

28.查看本地所有镜像

[root@docker ~]# docker images
REPOSITORY              TAG       IMAGE ID       CREATED       SIZE
hello-world             latest    feb5d9fea6a5   2 years ago   13.3kB
httpd                   centos    0b8d572d1c7d   5 years ago   547MB
nickistre/centos-lamp   latest    0b8d572d1c7d   5 years ago   547MB
[root@docker ~]# 

29.拉取 whalesay 镜像

[root@docker ~]# ls
公共  模板  视频  图片  文档  下载  音乐  桌面  anaconda-ks.cfg  debian-7.0-x86.tar.gz  dockerfile_centos  dockerfile_nginx  whalesay_latest.tar.gz
[root@docker ~]# docker load < whalesay_latest.tar.gz 
1154ba695078: Loading layer [==================================================>]  197.2MB/197.2MB
528c8710fd95: Loading layer [==================================================>]  208.9kB/208.9kB
37ee47034d9b: Loading layer [==================================================>]  4.608kB/4.608kB
5f70bf18a086: Loading layer [==================================================>]  1.024kB/1.024kB
b26122d57afa: Loading layer [==================================================>]  60.21MB/60.21MB
091abc5148e4: Loading layer [==================================================>]  255.5kB/255.5kB
d511ed9e12e1: Loading layer [==================================================>]  92.67kB/92.67kB
d061ee1340ec: Loading layer [==================================================>]  75.78kB/75.78kB
Loaded image: docker/whalesay:latest

30.运行 whalesay 镜像

[root@docker ~]# docker run docker/whalesay cowsay coo
 _____ 
< coo >
 ----- 
    \
     \
      \     
                    ##        .            
              ## ## ##       ==            
           ## ## ## ##      ===            
       /""""""""""""""""___/ ===        
  ~~~ {~~ ~~~~ ~~~ ~~~~ ~~ ~ /  ===- ~~~   
       \______ o          __/            
        \    \        __/             
          \____\______/   
[root@docker ~]# 

31.查看 docker 网络列表。

[root@docker ~]# docker network  list
NETWORK ID     NAME      DRIVER    SCOPE
6860e179a639   bridge    bridge    local
3d84392a7451   host      host      local
aa46aefcf88f   none      null      local
[root@docker ~]# 

32.查看网络详细信息。

[root@docker ~]# docker inspect  bridge 
[
    {
        "Name": "bridge",
        "Id": "6860e179a6396786e3d9f4c2e7188b63619f424639d8468d49f80ef4cb203e52",
        "Created": "2024-04-11T09:13:53.04440405+08:00",
        "Scope": "local",
        "Driver": "bridge",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": null,
            "Config": [
                {
                    "Subnet": "172.17.0.0/16",
                    "Gateway": "172.17.0.1"
                }
            ]
        },
        "Internal": false,
        "Attachable": false,
        "Ingress": false,
        "ConfigFrom": {
            "Network": ""
        },
        "ConfigOnly": false,
        "Containers": {
            "1858f880c65788cc109fdce7e4bb9a671971c2c84f5e8f4f46a93126372b1ace": {
                "Name": "web",
                "EndpointID": "4e3b189c5eefdb2b9b98ef6a5388a6aae85c00dbb890d0db5cb9a98baec9dc30",
                "MacAddress": "02:42:ac:11:00:02",
                "IPv4Address": "172.17.0.2/16",
                "IPv6Address": ""
            }
        },
        "Options": {
            "com.docker.network.bridge.default_bridge": "true",
            "com.docker.network.bridge.enable_icc": "true",
            "com.docker.network.bridge.enable_ip_masquerade": "true",
            "com.docker.network.bridge.host_binding_ipv4": "0.0.0.0",
            "com.docker.network.bridge.name": "docker0",
            "com.docker.network.driver.mtu": "1500"
        },
        "Labels": {}
    }
]
[root@docker ~]# 

33.容器连接到默认桥接网络,使用alpine容器进行docker网络配置。

#查看默认 birdge 网络有两个容器连接。

[root@docker ~]# docker network  inspect bridge 
[
    {
        "Name": "bridge",
        "Id": "6860e179a6396786e3d9f4c2e7188b63619f424639d8468d49f80ef4cb203e52",
        "Created": "2024-04-11T09:13:53.04440405+08:00",
        "Scope": "local",
        "Driver": "bridge",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": null,
            "Config": [
                {
                    "Subnet": "172.17.0.0/16",
                    "Gateway": "172.17.0.1"
                }
            ]
        },
        "Internal": false,
        "Attachable": false,
        "Ingress": false,
        "ConfigFrom": {
            "Network": ""
        },
        "ConfigOnly": false,
        "Containers": {
            "6dbaf4703dd7633377a7dd1f99ab1d90431ebe100dd8414454b688ff494b8cd3": {
                "Name": "alpine2",
                "EndpointID": "62b07e8cca1392f6f3e30f01b670689d5c92439b6d11ffc9f1580a10efef3db2",
                "MacAddress": "02:42:ac:11:00:02",
                "IPv4Address": "172.17.0.2/16",
                "IPv6Address": ""
            },
            "86bbc5de355076f69ab53663de670c5c7573d71db8b4e62144adee7675350322": {
                "Name": "alpine1",
                "EndpointID": "9bfdcbb347169234eef5b77444c7a7c2677aad0ca6a0029ae77358434a1cf5f7",
                "MacAddress": "02:42:ac:11:00:03",
                "IPv4Address": "172.17.0.3/16",
                "IPv6Address": ""
            }
        },
        "Options": {
            "com.docker.network.bridge.default_bridge": "true",
            "com.docker.network.bridge.enable_icc": "true",
            "com.docker.network.bridge.enable_ip_masquerade": "true",
            "com.docker.network.bridge.host_binding_ipv4": "0.0.0.0",
            "com.docker.network.bridge.name": "docker0",
            "com.docker.network.driver.mtu": "1500"
        },
        "Labels": {}
    }
]
[root@docker ~]# 

#连接到 alpine1 容器中查看 IP 地址,尝试 ping 公网 baidu.com。

[root@docker ~]# docker exec  -it alpine1 /bin/bash
[root@86bbc5de3550 /]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN 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
10: eth0@if11: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1500 qdisc noqueue state UP 
    link/ether 02:42:ac:11:00:03 brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.3/16 brd 172.17.255.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::42:acff:fe11:3/64 scope link 
       valid_lft forever preferred_lft forever
[root@86bbc5de3550 /]# ping www.baidu.com
PING www.a.shifen.com (153.3.238.110) 56(84) bytes of data.
64 bytes from 153.3.238.110: icmp_seq=1 ttl=127 time=12.0 ms
64 bytes from 153.3.238.110: icmp_seq=2 ttl=127 time=10.8 ms
64 bytes from 153.3.238.110: icmp_seq=3 ttl=127 time=11.6 ms

64 bytes from 153.3.238.110: icmp_seq=4 ttl=127 time=11.5 ms
^C
--- www.a.shifen.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3684ms
rtt min/avg/max/mdev = 10.884/11.555/12.090/0.432 ms
[root@86bbc5de3550 /]# 

#尝试 ping 第 2 个容器 alpine2 的 IP 地址,可以 ping 通

#进入容器二
[root@docker ~]# docker run -it --name alpine2 --net=bridge  nickistre/centos-lamp /bin/bash
[root@8a02915c835e /]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN 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
16: eth0@if17: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1500 qdisc noqueue state UP 
    link/ether 02:42:ac:11:00:02 brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.2/16 brd 172.17.255.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::42:acff:fe11:2/64 scope link 
       valid_lft forever preferred_lft forever
[root@8a02915c835e /]# 
#回到容器一
[root@86bbc5de3550 /]# ping 172.17.0.2
PING 172.17.0.2 (172.17.0.2) 56(84) bytes of data.
64 bytes from 172.17.0.2: icmp_seq=1 ttl=64 time=0.180 ms
64 bytes from 172.17.0.2: icmp_seq=2 ttl=64 time=0.417 ms
64 bytes from 172.17.0.2: icmp_seq=3 ttl=64 time=0.108 ms
64 bytes from 172.17.0.2: icmp_seq=4 ttl=64 time=0.197 ms

#尝试在 alpine1 使用容器 alpine2 的名称来 ping,发现 ping 不通

[root@86bbc5de3550 /]# ping alpine2
ping: unknown host alpine2
[root@86bbc5de3550 /]# 

#退出 alpine1 容器,但不要停止它,使用 ctrl+P 和 ctrl+Q 退出但不停止容器。

[root@86bbc5de3550 /]# read escape sequence
[root@docker ~]# docker ps
CONTAINER ID   IMAGE                   COMMAND            CREATED         STATUS         PORTS                     NAMES
8a02915c835e   nickistre/centos-lamp   "/bin/bash"        2 minutes ago   Up 2 minutes   22/tcp, 80/tcp, 443/tcp   alpine2
86bbc5de3550   nickistre/centos-lamp   "supervisord -n"   9 minutes ago   Up 9 minutes   22/tcp, 80/tcp, 443/tcp   alpine1
[root@docker ~]# 

#停止两个容器并删除连个容器

[root@docker ~]# docker stop alpine1
alpine1
[root@docker ~]# docker stop alpine2
alpine2
[root@docker ~]# docker rm alpine2
alpine2
[root@docker ~]# docker rm alpine1
alpine1
[root@docker ~]# docker ps -a
CONTAINER ID   IMAGE         COMMAND    CREATED          STATUS                      PORTS     NAMES
aeb54f8a07c9   hello-world   "/hello"   33 minutes ago   Exited (0) 33 minutes ago             eloquent_nobel
[root@docker ~]# 

34.使用传统的容器连接,运行容器alpine2并添加alpine1容器的连接

[root@docker ~]# docker run  -itd --name alpine1 alpine 
4bfd9a78739add721e9346fd5886ad7fa5ee0d34433ca389449e054bc4bcafb7
[root@docker ~]# docker run -id --name alpine2 --link=alpine1 alpine
1d8ac8e625cadc0f0f30a794eca90590c40395d360be36ef0af23f21dd8a6ae0

#进入容器alpine2使用容器名称ping alpine1发现可以ping通

[root@docker ~]# docker exec -it alpine2 ash
/ # 
/ # 
/ # 
/ # ping alpine1
PING alpine1 (172.17.0.2): 56 data bytes
64 bytes from 172.17.0.2: seq=0 ttl=64 time=1.980 ms
64 bytes from 172.17.0.2: seq=1 ttl=64 time=0.135 ms
^C
--- alpine1 ping statistics ---
2 packets transmitted, 2 packets received, 0% packet loss
round-trip min/avg/max = 0.135/1.057/1.980 ms
/ # 

#进入容器alpine1使用容器名称ping alpine2发现ping不通,使用--link添加的连接仅支持单向通信,接受容器可以通过名称访问源容器,但是源容器不能使用名称访问接受容器。

[root@docker ~]# docker exec -it alpine1 ash
/ # 
/ # ping alpine2
ping: bad address 'alpine2'
/ # 

35.创建用户自定义桥接网络并连接容器

#查看刚创建的 alpine-net 桥接网络,得到网段地址。

[root@docker ~]# docker network  create  --driver bridge --subnet 192.168.100.0/24 --gateway 192.168.100.2 alpine-net
7e7639186f8c531b043404709faac47bb514ecabaca1488f89fcafb16578fa85
[root@docker ~]# docker network  list
NETWORK ID     NAME         DRIVER    SCOPE
7e7639186f8c   alpine-net   bridge    local
77bc69e67b97   bridge       bridge    local
3d84392a7451   host         host      local
aa46aefcf88f   none         null      local
[root@docker ~]# 

#使用 alpine 镜像,运行 4 个容器,alpine1-4,alpine3 使用默认桥接网络,1、2、4 使用创建的 alpine-net 网络

[root@docker ~]# docker run -id --name alpine1 --net=alpine-net nickistre/centos-lamp
11ed350c72e6b21a2ee848fc49c310e031c79caa98bd77aeb4911193f48b6ae9
[root@docker ~]# docker run -id --name alpine2 --net=alpine-net nickistre/centos-lamp
b75e6be4155be3e0acd6f90bdb2ec1564e5d920d332cf0f2b9a0a414eec36f4c
[root@docker ~]# docker run -id --name alpine4 --net=alpine-net nickistre/centos-lamp
d60c8bf8d2ea7ecd25a6a2cdbc340e9b05a53b3f4f035eb30023da3b884f45c8
[root@docker ~]# docker run -id --name alpine3 --net=bridge nickistre/centos-lamp
60da04ee21a332066515c0cb57d7cda5f02be0f07eba154ba6521a80b4fde23f
[root@docker ~]# docker ps
CONTAINER ID   IMAGE                   COMMAND            CREATED          STATUS          PORTS                     NAMES
60da04ee21a3   nickistre/centos-lamp   "supervisord -n"   2 seconds ago    Up 2 seconds    22/tcp, 80/tcp, 443/tcp   alpine3
d60c8bf8d2ea   nickistre/centos-lamp   "supervisord -n"   17 seconds ago   Up 16 seconds   22/tcp, 80/tcp, 443/tcp   alpine4
b75e6be4155b   nickistre/centos-lamp   "supervisord -n"   25 seconds ago   Up 24 seconds   22/tcp, 80/tcp, 443/tcp   alpine2
11ed350c72e6   nickistre/centos-lamp   "supervisord -n"   58 seconds ago   Up 57 seconds   22/tcp, 80/tcp, 443/tcp   alpine1
[root@docker ~]# 

#再将 alpine4 连接到默认桥接网络

[root@docker ~]# docker network connect bridge alpine4
[root@docker ~]#

#查看所有容器状态

[root@docker ~]# docker ps
CONTAINER ID   IMAGE                   COMMAND            CREATED         STATUS         PORTS                     NAMES
60da04ee21a3   nickistre/centos-lamp   "supervisord -n"   3 minutes ago   Up 3 minutes   22/tcp, 80/tcp, 443/tcp   alpine3
d60c8bf8d2ea   nickistre/centos-lamp   "supervisord -n"   4 minutes ago   Up 4 minutes   22/tcp, 80/tcp, 443/tcp   alpine4
b75e6be4155b   nickistre/centos-lamp   "supervisord -n"   4 minutes ago   Up 4 minutes   22/tcp, 80/tcp, 443/tcp   alpine2
11ed350c72e6   nickistre/centos-lamp   "supervisord -n"   4 minutes ago   Up 4 minutes   22/tcp, 80/tcp, 443/tcp   alpine1
[root@docker ~]#

#查看创建的 alpine-net 网络状态和默认的 bridge 网络的详细信息

[root@docker ~]# docker network inspect alpine-net 
[
    {
        "Name": "alpine-net",
        "Id": "7e7639186f8c531b043404709faac47bb514ecabaca1488f89fcafb16578fa85",
        "Created": "2024-04-11T11:11:26.2429519+08:00",
        "Scope": "local",
        "Driver": "bridge",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": {},
            "Config": [
                {
                    "Subnet": "192.168.100.0/24",
                    "Gateway": "192.168.100.2"
                }
            ]
        },
        "Internal": false,
        "Attachable": false,
        "Ingress": false,
        "ConfigFrom": {
            "Network": ""
        },
        "ConfigOnly": false,
        "Containers": {
            "11ed350c72e6b21a2ee848fc49c310e031c79caa98bd77aeb4911193f48b6ae9": {
                "Name": "alpine1",
                "EndpointID": "1d6e8424d9a3735d31fcacbe06ad5ed0157a1e38f4a9eda61d1e41ab16a117cd",
                "MacAddress": "02:42:c0:a8:64:01",
                "IPv4Address": "192.168.100.1/24",
                "IPv6Address": ""
            },
            "b75e6be4155be3e0acd6f90bdb2ec1564e5d920d332cf0f2b9a0a414eec36f4c": {
                "Name": "alpine2",
                "EndpointID": "12303c5355983db69388f3c5bf5410892d70259bc9a2549fb44af461dc832695",
                "MacAddress": "02:42:c0:a8:64:03",
                "IPv4Address": "192.168.100.3/24",
                "IPv6Address": ""
            },
            "d60c8bf8d2ea7ecd25a6a2cdbc340e9b05a53b3f4f035eb30023da3b884f45c8": {
                "Name": "alpine4",
                "EndpointID": "da43a18c2cda54d1c02049e000b1574b76ffbdc8f01f4137f7c0c6e7d109dadd",
                "MacAddress": "02:42:c0:a8:64:04",
                "IPv4Address": "192.168.100.4/24",
                "IPv6Address": ""
            }
        },
        "Options": {},
        "Labels": {}
    }
]
[root@docker ~]#
[root@docker ~]# docker network inspect bridge 
[
    {
        "Name": "bridge",
        "Id": "77bc69e67b97d33b656298793d1a66bb87d4e50ed8dfc9e7f8da7da8d96ad9c1",
        "Created": "2024-04-11T11:05:33.233033912+08:00",
        "Scope": "local",
        "Driver": "bridge",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": null,
            "Config": [
                {
                    "Subnet": "172.17.0.0/16",
                    "Gateway": "172.17.0.1"
                }
            ]
        },
        "Internal": false,
        "Attachable": false,
        "Ingress": false,
        "ConfigFrom": {
            "Network": ""
        },
        "ConfigOnly": false,
        "Containers": {
            "60da04ee21a332066515c0cb57d7cda5f02be0f07eba154ba6521a80b4fde23f": {
                "Name": "alpine3",
                "EndpointID": "1f373b8818c2a8e9a5f126e5c9eec7218d0916ca5b0ddb85141606e0086aa7d1",
                "MacAddress": "02:42:ac:11:00:02",
                "IPv4Address": "172.17.0.2/16",
                "IPv6Address": ""
            },
            "d60c8bf8d2ea7ecd25a6a2cdbc340e9b05a53b3f4f035eb30023da3b884f45c8": {
                "Name": "alpine4",
                "EndpointID": "296242728baab6b237441fdb5b33d466c6ae31ba89cfa2e18a7a50b5f7220288",
                "MacAddress": "02:42:ac:11:00:03",
                "IPv4Address": "172.17.0.3/16",
                "IPv6Address": ""
            }
        },
        "Options": {
            "com.docker.network.bridge.default_bridge": "true",
            "com.docker.network.bridge.enable_icc": "true",
            "com.docker.network.bridge.enable_ip_masquerade": "true",
            "com.docker.network.bridge.host_binding_ipv4": "0.0.0.0",
            "com.docker.network.bridge.name": "docker0",
            "com.docker.network.driver.mtu": "1500"
        },
        "Labels": {}
    }
]
[root@docker ~]# 

#alpine1,2,4 都连接至 alpine-net 网络,alpine3,4 连接至默认 bridge 网络;alpine4 既连接 alpine-net 网络也连接 bridge 网络。

[root@docker ~]# docker inspect alpine4
[
    {
        "Id": "d60c8bf8d2ea7ecd25a6a2cdbc340e9b05a53b3f4f035eb30023da3b884f45c8",
        "Created": "2024-04-11T03:14:01.537162194Z",
        "Path": "supervisord",
        "Args": [
            "-n"
        ],
        "State": {
            "Status": "running",
            "Running": true,
            "Paused": false,
            "Restarting": false,
            "OOMKilled": false,
            "Dead": false,
            "Pid": 4825,
            "ExitCode": 0,
            "Error": "",
            "StartedAt": "2024-04-11T03:14:02.238611452Z",
            "FinishedAt": "0001-01-01T00:00:00Z"
        },
        "Image": "sha256:0b8d572d1c7d20f8b2e86bb92517dd3a9e8f935194c7f48af5dc84984e7c5f44",
        "ResolvConfPath": "/var/lib/docker/containers/d60c8bf8d2ea7ecd25a6a2cdbc340e9b05a53b3f4f035eb30023da3b884f45c8/resolv.conf",
        "HostnamePath": "/var/lib/docker/containers/d60c8bf8d2ea7ecd25a6a2cdbc340e9b05a53b3f4f035eb30023da3b884f45c8/hostname",
        "HostsPath": "/var/lib/docker/containers/d60c8bf8d2ea7ecd25a6a2cdbc340e9b05a53b3f4f035eb30023da3b884f45c8/hosts",
        "LogPath": "/var/lib/docker/containers/d60c8bf8d2ea7ecd25a6a2cdbc340e9b05a53b3f4f035eb30023da3b884f45c8/d60c8bf8d2ea7ecd25a6a2cdbc340e9b05a53b3f4f035eb30023da3b884f45c8-json.log",
        "Name": "/alpine4",
        "RestartCount": 0,
        "Driver": "overlay2",
        "Platform": "linux",
        "MountLabel": "",
        "ProcessLabel": "",
        "AppArmorProfile": "",
        "ExecIDs": null,
        "HostConfig": {
            "Binds": null,
            "ContainerIDFile": "",
            "LogConfig": {
                "Type": "json-file",
                "Config": {}
            },
            "NetworkMode": "alpine-net",
            "PortBindings": {},
            "RestartPolicy": {
                "Name": "no",
                "MaximumRetryCount": 0
            },
            "AutoRemove": false,
            "VolumeDriver": "",
            "VolumesFrom": null,
            "ConsoleSize": [
                37,
                174
            ],
            "CapAdd": null,
            "CapDrop": null,
            "CgroupnsMode": "private",
            "Dns": [],
            "DnsOptions": [],
            "DnsSearch": [],
            "ExtraHosts": null,
            "GroupAdd": null,
            "IpcMode": "private",
            "Cgroup": "",
            "Links": null,
            "OomScoreAdj": 0,
            "PidMode": "",
            "Privileged": false,
            "PublishAllPorts": false,
            "ReadonlyRootfs": false,
            "SecurityOpt": null,
            "UTSMode": "",
            "UsernsMode": "",
            "ShmSize": 67108864,
            "Runtime": "runc",
            "Isolation": "",
            "CpuShares": 0,
            "Memory": 0,
            "NanoCpus": 0,
            "CgroupParent": "",
            "BlkioWeight": 0,
            "BlkioWeightDevice": [],
            "BlkioDeviceReadBps": [],
            "BlkioDeviceWriteBps": [],
            "BlkioDeviceReadIOps": [],
            "BlkioDeviceWriteIOps": [],
            "CpuPeriod": 0,
            "CpuQuota": 0,
            "CpuRealtimePeriod": 0,
            "CpuRealtimeRuntime": 0,
            "CpusetCpus": "",
            "CpusetMems": "",
            "Devices": [],
            "DeviceCgroupRules": null,
            "DeviceRequests": null,
            "MemoryReservation": 0,
            "MemorySwap": 0,
            "MemorySwappiness": null,
            "OomKillDisable": null,
            "PidsLimit": null,
            "Ulimits": [],
            "CpuCount": 0,
            "CpuPercent": 0,
            "IOMaximumIOps": 0,
            "IOMaximumBandwidth": 0,
            "MaskedPaths": [
                "/proc/asound",
                "/proc/acpi",
                "/proc/kcore",
                "/proc/keys",
                "/proc/latency_stats",
                "/proc/timer_list",
                "/proc/timer_stats",
                "/proc/sched_debug",
                "/proc/scsi",
                "/sys/firmware",
                "/sys/devices/virtual/powercap"
            ],
            "ReadonlyPaths": [
                "/proc/bus",
                "/proc/fs",
                "/proc/irq",
                "/proc/sys",
                "/proc/sysrq-trigger"
            ]
        },
        "GraphDriver": {
            "Data": {
                "LowerDir": "/var/lib/docker/overlay2/fd33a0215fb6ad28c31024dca99ae84de031ff7a4e24a104923093bf97869630-init/diff:/var/lib/docker/overlay2/fb5aaf1e53c1e0db96919ecbe7f88aff864c1b52a33083a92663f28943a0dac3/diff:/var/lib/docker/overlay2/37f6ebcc438005d578ccbda31fc8ed9ea9d7c827f1564fb22331b35f28cef152/diff:/var/lib/docker/overlay2/f81ad59a6616cc08f34ea5a38b187edf71333d5f8ae0b65502690b08ab62ec24/diff:/var/lib/docker/overlay2/af6bd572f54e732e1521d46b6012c4c011318f4bff4a032153c67b4b04b97a61/diff:/var/lib/docker/overlay2/d5a4e99bcf690a78675a1214425c69ef0dfea1fc0cad265fb5e74c9d398a1b23/diff:/var/lib/docker/overlay2/2872f8b44668b1d3e34692086f4e92d796c16198a7604a350ea221d70c4bd243/diff:/var/lib/docker/overlay2/b82317577b9eff0762e85e46eef553c2d10c7ec17d0f137791aefa3436482255/diff:/var/lib/docker/overlay2/9a0a37ccca4084a6f5d3746eb9e80ac6a107b44cb312620c420bbf5b754d54be/diff:/var/lib/docker/overlay2/85a22e36288c5fe3d163ad6f89a939d8b0fb4e37c4d2f73ec854a41655924bc7/diff:/var/lib/docker/overlay2/badbcc239047cb10db36f2d27c01bc2ee945a8f3e34157aa2e06379337ba91f9/diff:/var/lib/docker/overlay2/bd9008d8dd561072384d7acddef1ff1cd318d2d165e6dbe68ede6a234c775e74/diff:/var/lib/docker/overlay2/e8be009e4bc3cab8d2a76b41fac2e3b88f443d96b75cd02d3b52560d39564a5d/diff:/var/lib/docker/overlay2/05f0c821e72d51f32d414756feaaea3b7779e0d5a4d39fc4118c86d9966fe231/diff:/var/lib/docker/overlay2/24df261c59ea18cf873cfe193a1e509652c72bc0c359efc101af1c8274265e6e/diff:/var/lib/docker/overlay2/52f4d647f033acb17b9f6d6430d3ea62f4bf5bf96f083339aec5524b46256fb4/diff",
                "MergedDir": "/var/lib/docker/overlay2/fd33a0215fb6ad28c31024dca99ae84de031ff7a4e24a104923093bf97869630/merged",
                "UpperDir": "/var/lib/docker/overlay2/fd33a0215fb6ad28c31024dca99ae84de031ff7a4e24a104923093bf97869630/diff",
                "WorkDir": "/var/lib/docker/overlay2/fd33a0215fb6ad28c31024dca99ae84de031ff7a4e24a104923093bf97869630/work"
            },
            "Name": "overlay2"
        },
        "Mounts": [],
        "Config": {
            "Hostname": "d60c8bf8d2ea",
            "Domainname": "",
            "User": "",
            "AttachStdin": false,
            "AttachStdout": false,
            "AttachStderr": false,
            "ExposedPorts": {
                "22/tcp": {},
                "443/tcp": {},
                "80/tcp": {}
            },
            "Tty": false,
            "OpenStdin": true,
            "StdinOnce": false,
            "Env": [
                "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
            ],
            "Cmd": [
                "supervisord",
                "-n"
            ],
            "Image": "nickistre/centos-lamp",
            "Volumes": null,
            "WorkingDir": "",
            "Entrypoint": null,
            "OnBuild": null,
            "Labels": {}
        },
        "NetworkSettings": {
            "Bridge": "",
            "SandboxID": "e33349c4cc0eb4e795ac4efd38eb01a1b84d646eb4390d1388911c86cf16c590",
            "SandboxKey": "/var/run/docker/netns/e33349c4cc0e",
            "Ports": {
                "22/tcp": null,
                "443/tcp": null,
                "80/tcp": null
            },
            "HairpinMode": false,
            "LinkLocalIPv6Address": "",
            "LinkLocalIPv6PrefixLen": 0,
            "SecondaryIPAddresses": null,
            "SecondaryIPv6Addresses": null,
            "EndpointID": "296242728baab6b237441fdb5b33d466c6ae31ba89cfa2e18a7a50b5f7220288",
            "Gateway": "172.17.0.1",
            "GlobalIPv6Address": "",
            "GlobalIPv6PrefixLen": 0,
            "IPAddress": "172.17.0.3",
            "IPPrefixLen": 16,
            "IPv6Gateway": "",
            "MacAddress": "02:42:ac:11:00:03",
            "Networks": {
                "alpine-net": {    //网络信息
                    "IPAMConfig": null,
                    "Links": null,
                    "Aliases": null,
                    "MacAddress": "02:42:c0:a8:64:04",
                    "NetworkID": "7e7639186f8c531b043404709faac47bb514ecabaca1488f89fcafb16578fa85",
                    "EndpointID": "da43a18c2cda54d1c02049e000b1574b76ffbdc8f01f4137f7c0c6e7d109dadd",
                    "Gateway": "192.168.100.2",
                    "IPAddress": "192.168.100.4",
                    "IPPrefixLen": 24,
                    "IPv6Gateway": "",
                    "GlobalIPv6Address": "",
                    "GlobalIPv6PrefixLen": 0,
                    "DriverOpts": null,
                    "DNSNames": [
                        "alpine4",
                        "d60c8bf8d2ea"
                    ]
                },
                "bridge": {    //网络信息
                    "IPAMConfig": {},
                    "Links": null,
                    "Aliases": [],
                    "MacAddress": "02:42:ac:11:00:03",
                    "NetworkID": "77bc69e67b97d33b656298793d1a66bb87d4e50ed8dfc9e7f8da7da8d96ad9c1",
                    "EndpointID": "296242728baab6b237441fdb5b33d466c6ae31ba89cfa2e18a7a50b5f7220288",
                    "Gateway": "172.17.0.1",
                    "IPAddress": "172.17.0.3",
                    "IPPrefixLen": 16,
                    "IPv6Gateway": "",
                    "GlobalIPv6Address": "",
                    "GlobalIPv6PrefixLen": 0,
                    "DriverOpts": {},
                    "DNSNames": null
                }
            }
        }
    }
]
[root@docker ~]# 

#alpine1 可以 ping 通 alpine4 但是不能 ping 通 alpine3

[root@docker ~]# docker exec -it alpine1 /bin/bash
[root@11ed350c72e6 /]# 
[root@11ed350c72e6 /]# 
[root@11ed350c72e6 /]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN 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
9: eth0@if10: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1500 qdisc noqueue state UP 
    link/ether 02:42:c0:a8:64:01 brd ff:ff:ff:ff:ff:ff
    inet 192.168.100.1/24 brd 192.168.100.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::42:c0ff:fea8:6401/64 scope link 
       valid_lft forever preferred_lft forever
[root@11ed350c72e6 /]# ping alpine4
PING alpine4 (192.168.100.4) 56(84) bytes of data.
64 bytes from alpine4.alpine-net (192.168.100.4): icmp_seq=1 ttl=64 time=0.086 ms
64 bytes from alpine4.alpine-net (192.168.100.4): icmp_seq=2 ttl=64 time=0.234 ms
^C
--- alpine4 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1655ms
rtt min/avg/max/mdev = 0.086/0.160/0.234/0.074 ms
[root@11ed350c72e6 /]# ping alpine3
ping: unknown host alpine3
[root@11ed350c72e6 /]# 

#alpine4 既能 ping 通 alpine3,也能 ping 通 alpine1 并且也能访问公网

[root@d60c8bf8d2ea /]# ping www.baidu.com
PING www.a.shifen.com (153.3.238.110) 56(84) bytes of data.
64 bytes from 153.3.238.110: icmp_seq=1 ttl=127 time=11.8 ms
64 bytes from 153.3.238.110: icmp_seq=2 ttl=127 time=12.1 ms
^C
--- www.a.shifen.com ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1786ms
rtt min/avg/max/mdev = 11.839/11.990/12.142/0.186 ms
[root@d60c8bf8d2ea /]# 
[root@d60c8bf8d2ea /]# ping alpine1
PING alpine1 (192.168.100.1) 56(84) bytes of data.
64 bytes from alpine1.alpine-net (192.168.100.1): icmp_seq=1 ttl=64 time=0.078 ms
64 bytes from alpine1.alpine-net (192.168.100.1): icmp_seq=2 ttl=64 time=0.115 ms
64 bytes from alpine1.alpine-net (192.168.100.1): icmp_seq=3 ttl=64 time=0.153 ms
[root@d60c8bf8d2ea /]# ping 172.17.0.2  //alpine3
PING 172.17.0.2 (172.17.0.2) 56(84) bytes of data.
64 bytes from 172.17.0.2: icmp_seq=1 ttl=64 time=0.092 ms
64 bytes from 172.17.0.2: icmp_seq=2 ttl=64 time=0.171 ms
^C
--- 172.17.0.2 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1653ms
rtt min/avg/max/mdev = 0.092/0.131/0.171/0.041 ms
[root@d60c8bf8d2ea /]# 

#关闭容器并删除容器

[root@docker ~]# docker stop alpine1
alpine1
[root@docker ~]# docker stop alpine2
alpine2
[root@docker ~]# docker stop alpine{3,4}
alpine3
alpine4
[root@docker ~]# docker rm alpine{1,2,3,4}
alpine1
alpine2
alpine3
alpine4
[root@docker ~]# docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
[root@docker ~]# docker ps -a
CONTAINER ID   IMAGE         COMMAND    CREATED             STATUS                         PORTS     NAMES
aeb54f8a07c9   hello-world   "/hello"   About an hour ago   Exited (0) About an hour ago             eloquent_nobel
[root@docker ~]# 

36.拉取 httpd 容器镜像

[root@docker ~]# docker pull httpd
Using default tag: latest
latest: Pulling from library/httpd
Digest: sha256:0954cc1af252d824860b2c5dc0a10720af2b7a3d3435581ca788dff8480c7b32
Status: Image is up to date for httpd:latest
docker.io/library/httpd:latest
[root@docker ~]# docker images
REPOSITORY              TAG       IMAGE ID       CREATED       SIZE
httpd                   latest    dabbfbe0c57b   2 years ago   144MB
hello-world             latest    feb5d9fea6a5   2 years ago   13.3kB
httpd                   centos    0b8d572d1c7d   5 years ago   547MB
nickistre/centos-lamp   latest    0b8d572d1c7d   5 years ago   547MB
[root@docker ~]# 

37.运行 httpd 容器,并查看端口

[root@docker ~]# docker run -id --name http  httpd:latest 
4a4de159e1f6afe7cb338d1953897c9f9788116b603cd0797ba853f0fb1480eb
[root@docker ~]# docker ps
CONTAINER ID   IMAGE          COMMAND              CREATED         STATUS         PORTS     NAMES
4a4de159e1f6   httpd:latest   "httpd-foreground"   3 seconds ago   Up 2 seconds   80/tcp    http

38.再次运行 httpd 容器并将 49280 端口映射到端口为 80,并查看端口是否映射成功

[root@docker ~]# docker run -id --name http -p 49280:80 httpd:latest  
ed0cccc756d9d7f81d5fcd3e30c66bdc501277a3e110700cee3af7df51dd1487
[root@docker ~]# docker ps 
CONTAINER ID   IMAGE          COMMAND              CREATED         STATUS         PORTS                                     NAMES
ed0cccc756d9   httpd:latest   "httpd-foreground"   4 seconds ago   Up 3 seconds   0.0.0.0:49280->80/tcp, :::49280->80/tcp   http
[root@docker ~]# curl  192.168.200.133:49280
<html><body><h1>It works!</h1></body></html>
[root@docker ~]# 

39.使用 docker run 命令创建容器,使用--name 指定容器名称为 web1

[root@docker ~]# docker run  -id --name web1 nickistre/centos-lamp
1bbf461b793c8bba7a54eee9c03afdd588c69ebfbd419011c0282b97ce05f482
[root@docker ~]

40.使用 docker run 命令创建容器,使用--name 指定容器名称为 web2,使用--link指定连接容器以实现容器互联

[root@docker ~]# docker run  -id --name web2 --link=web1 nickistre/centos-lamp
aa497728a0099b4049c82912ad93c9cc8e9aa8b7ed7750c9e36de2a80ece9b45
[root@docker ~]# 

41.进入 web2 容器,进行 ping 测试,会提示报错找不到命令,使用 apt-get update && apt install iputils-ping 这条命令进行安装,随后在进行测试容器之间是否相互联通

[root@aa497728a009 /]# ping web1
PING web1 (172.17.0.3) 56(84) bytes of data.
64 bytes from web1 (172.17.0.3): icmp_seq=1 ttl=64 time=0.079 ms
64 bytes from web1 (172.17.0.3): icmp_seq=2 ttl=64 time=0.204 ms
64 bytes from web1 (172.17.0.3): icmp_seq=3 ttl=64 time=0.179 ms
64 bytes from web1 (172.17.0.3): icmp_seq=4 ttl=64 time=0.123 ms
^C
--- web1 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3141ms
rtt min/avg/max/mdev = 0.079/0.146/0.204/0.049 ms
[root@aa497728a009 /]# 

42.创建一个卷并让容器挂载

#启动容器并将创建的 test1 卷挂载至容器的/test 目录

#删除 test1 卷,需要先删除容器才能删除卷

​
[root@docker ~]# docker volume  create test1
test1
[root@docker ~]# docker run -id --name abc -v test1:/test httpd:latest 
40beec0de972ddc315cd6eea877a097f2d2a2a2adaa71fe77cb9b1c44a997821
[root@docker ~]# docker stop abc 
[root@docker ~]# docker volume rm  test1 
test1
[root@docker ~]# docker rm abc 
abc
[root@docker ~]# 

43.启动容器时自动创建卷

#在此用到了- -mount 和-v 都可以挂载,建议更多的使用-v

[root@docker ~]# docker run -d --name abcd --mount  source=test2,target=/test2 nickistre/centos-lamp
4c92baefd5871f8508193fad3408861c4719a5556a8cbeed01e70890f8da91c8
[root@docker ~]# 

44.使用只读卷

#也可使用-v 选项完成

#查看容器信息,发现 mounts 字段中 readonly 开启

[root@docker ~]# docker run -it --name  12311 --mount source=test3,destination=/test3,readonly centos
[root@fbdbb1ee402c /]# 
[root@docker ~]# 
[root@docker ~]# 
[root@docker ~]# docker exec -it 12311 /bin/bash
[root@fbdbb1ee402c /]# cd test3
[root@fbdbb1ee402c test3]# ls
[root@fbdbb1ee402c test3]# touch a
touch: cannot touch 'a': Read-only file system
[root@fbdbb1ee402c test3]# 
[root@docker ~]# docker run -it --name centos2 -v test3:/test3:ro centos:latest 
[root@5d15b1558ea8 /]# cd /test3
[root@5d15b1558ea8 test3]# ls
[root@5d15b1558ea8 test3]# touch  w
touch: cannot touch 'w': Read-only file system
[root@5d15b1558ea8 test3]# 

45.使用匿名卷

#使用-v 选项添加匿名卷

#使用匿名卷并不是没有指定明确的卷,而是 docker 自动生成一个名称为随机UUID 的匿名卷

#存储卷中多了两个 uuid 为名称的存储卷

#删除刚才创建的几个容器,存储卷并不会被删除,所以需要再删除存储卷

[root@docker ~]# docker run  -it --name centos --mount destination=/world centos:latest 
[root@f10ca40724e3 /]# 
[root@f10ca40724e3 /]# cd /world/
[root@f10ca40724e3 world]# ls
[root@f10ca40724e3 world]# touch  a
[root@f10ca40724e3 world]# ls
a
[root@docker ~]# docker run  -it --name centos2 -v /world centos:latest 
[root@0bb3c91c1a13 /]# ls
bin  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var  world
[root@0bb3c91c1a13 /]# df -Th
Filesystem            Type     Size  Used Avail Use% Mounted on
overlay               overlay   66G   20G   46G  31% /
tmpfs                 tmpfs     64M     0   64M   0% /dev
shm                   tmpfs     64M     0   64M   0% /dev/shm
/dev/mapper/rhel-root xfs       66G   20G   46G  31% /world
tmpfs                 tmpfs    3.8G     0  3.8G   0% /proc/asound
tmpfs                 tmpfs    3.8G     0  3.8G   0% /proc/acpi
tmpfs                 tmpfs    3.8G     0  3.8G   0% /proc/scsi
tmpfs                 tmpfs    3.8G     0  3.8G   0% /sys/firmware
[root@0bb3c91c1a13 /]# 
[root@docker ~]# docker inspect centos2
"Mounts": [
            {
                "Type": "volume",
                "Name": "821bf4918811caabf965059ff3abcf672934294b4de990c311899bca61e95bef",
                "Source": "/var/lib/docker/volumes/821bf4918811caabf965059ff3abcf672934294b4de990c311899bca61e95bef/_data",
                "Destination": "/world",
                "Driver": "local",
                "Mode": "",
                "RW": true,
                "Propagation": ""
[root@docker ~]# docker volume  ls
DRIVER    VOLUME NAME
local     5e50f77028029030cc9e9e38c330d4017327071667c0019a234c4058e72893dc
local     38e42e97ade34b925cb20391553da7282ac314d57428101178902c7ac8a5fd9a
local     228c6e8b8747935fee3573e642533384b63cb4a36ed90ba8a3728dec6d62afd7
local     821bf4918811caabf965059ff3abcf672934294b4de990c311899bca61e95bef
local     test2
local     test3
[root@docker ~]# 
[root@docker ~]# docker volume  rm 228c6e8b8747935fee3573e642533384b63cb4a36ed90ba8a3728dec6d62afd7 821bf4918811caabf965059ff3abcf672934294b4de990c311899bca61e95bef 38e42e97ade34b925cb20391553da7282ac314d57428101178902c7ac8a5fd9a ^C
[root@docker ~]# 
[root@docker ~]# 
[root@docker ~]# 
[root@docker ~]# docker volume  rm 
5e50f77028029030cc9e9e38c330d4017327071667c0019a234c4058e72893dc  test3
test2                                                             
[root@docker ~]# docker volume  rm 5e50f77028029030cc9e9e38c330d4017327071667c0019a234c4058e72893dc  test3 test2 
5e50f77028029030cc9e9e38c330d4017327071667c0019a234c4058e72893dc
test3
test2

46.绑定挂载主机上的目录,前面挂载时使用的是提前创建的存储卷,我们也可以直接将宿主机目录挂载到容器中,那么在宿主机的这个目录中创建文件时容器中也会有这个文件

[root@docker ~]# mkdir  test
[root@docker ~]# docker run -it --name  centos111 --mount type=bind,source=$(pwd)/test,target=/test centos:latest 
[root@06b687ecdf0d /]# cd /test/
[root@06b687ecdf0d test]# ls
[root@06b687ecdf0d test]# touch ac
[root@06b687ecdf0d test]# ls
ac
[root@06b687ecdf0d test]# exit
exit
[root@docker ~]# cd test/
[root@docker test]# ls
ac
[root@docker test]# 

#-v 选项写法

[root@docker ~]# docker run -it --name centos7 -v $(pwd)/test:/test centos:latest 
[root@66fed025db07 /]#

#查看虚拟机信息

[root@docker ~]# docker inspect  centos7
​
        "Mounts": [
            {
                "Type": "bind",
                "Source": "/root/test/test",
                "Destination": "/test",
                "Mode": "",
                "RW": true,
                "Propagation": "rprivate"
            }
      
[root@docker ~]#  

47.绑定挂载主机上的文件,绑定主机上的文件主要用于主机与容器之间共享配置文件。

[root@docker ~]# echo  "asdhajs"  > sas
[root@docker ~]# ls
公共  模板  视频  图片  文档  下载  音乐  桌面  anaconda-ks.cfg  lamp  sas  test
[root@docker ~]# docker run  -it --name centos123 -v /root/sas:/sas centos:latest 
[root@f823724ae1dc /]# cat sas 
asdhajs
[root@f823724ae1dc /]# 

48.备份、恢复和迁移数据卷

#将容器中/test 的目录备份

[root@docker ~]# docker run --rm --volumes-from  centos  -v /root/backup:/backup centos tar cvf /backup/backup.tar /test
/test/
/test/zbc
tar: Removing leading `/' from member names
[root@docker ~]# 
[root@docker ~]# cd backup/
[root@docker backup]# ls
backup.tar
[root@docker backup]# tar -tvf backup.tar 
drwxr-xr-x root/root         0 2024-04-11 13:35 test/
-rw-r--r-- root/root         0 2024-04-11 13:35 test/zbc
[root@docker backup]# 

#将备份恢复至另外一台容器

​
[root@docker ~]# docker run  --rm --volumes-from abc  -v /root/backup:/backup centos  bash -c "cd /test1 && tar -xvf /backup/backup.tar"
test/
test/zbc
[root@docker ~]#

49.重新拉取镜像,并存储本地的 nickistre/centos-lamp 镜像文件,储存的新镜像文件名为 lamp,从 lamp 中载入镜像到本地镜像库中

[root@docker ~]# docker pull nickistre/centos-lamp:latest
latest: Pulling from nickistre/centos-lamp
f9f73d801f05: Pull complete 
31a920671517: Pull complete 
21c34a1a7bde: Pull complete 
dc05bf237fc1: Pull complete 
001edf96df50: Pull complete 
273de3312284: Pull complete 
09e0c479c5d6: Pull complete 
3274b3252b64: Pull complete 
8affd66070d7: Pull complete 
b3d0f4e847ac: Pull complete 
1b0c18851735: Pull complete 
557b86c40b14: Pull complete 
bdf3abef29b4: Pull complete 
8fab0cd5d21a: Pull complete 
4f198432c128: Pull complete 
Digest: sha256:6012dff0d5f805342d65e8eb3cae4e83e75bce16980915b165ef55d64866e91d
Status: Downloaded newer image for nickistre/centos-lamp:latest
docker.io/nickistre/centos-lamp:latest
[root@docker ~]# docker save -o lamp nickistre/centos-lamp
[root@docker ~]# ls
公共  模板  视频  图片  文档  下载  音乐  桌面  anaconda-ks.cfg  lamp
[root@docker ~]# docker load < lamp 
da6517724f67: Loading layer [==================================================>]  213.2MB/213.2MB
244de8069fbc: Loading layer [==================================================>]  10.37MB/10.37MB
988e3cb5a27b: Loading layer [==================================================>]  179.7MB/179.7MB
38556f5b7621: Loading layer [==================================================>]  47.41MB/47.41MB
e6eea089f108: Loading layer [==================================================>]  3.072kB/3.072kB
07d45adf0b97: Loading layer [==================================================>]  21.89MB/21.89MB
a0753067e202: Loading layer [==================================================>]  51.79MB/51.79MB
9b9518d71f0e: Loading layer [==================================================>]  18.52MB/18.52MB
11ed4ddf1f28: Loading layer [==================================================>]  2.891MB/2.891MB
fa3e2c4d1489: Loading layer [==================================================>]  17.71MB/17.71MB
f874a4141753: Loading layer [==================================================>]  8.704kB/8.704kB
fabd844fa786: Loading layer [==================================================>]  9.728kB/9.728kB
d31fcd4e52cf: Loading layer [==================================================>]   2.56kB/2.56kB
2ccc0c68e26e: Loading layer [==================================================>]  3.584kB/3.584kB
385f382ed46c: Loading layer [==================================================>]  3.584kB/3.584kB
Loaded image: nickistre/centos-lamp:latest
[root@docker ~]# docker images
REPOSITORY              TAG       IMAGE ID       CREATED       SIZE
nickistre/centos-lamp   latest    0b8d572d1c7d   5 years ago   547MB
[root@docker ~]# 

50.使用 docker create 命令创建新容器,需要记住该容器 ID 号

[root@docker ~]# docker create   --name 123 centos:latest 
b602859d93bdec1158a5916012b4e4c7fa7739b9603f8964056100db3d89f87b
[root@docker ~]# 

51.之后使用 docker commit,命令创建一个新的镜像、

52.创建完成后,会返回新创建的 ID 信息。查看本地镜像列表时,可以看到新创建的镜像信息。

[root@docker ~]# docker commit 123 
sha256:c933c31dcb9640b53f646f9a22187b0e61e3477665f03c4748783d0999c27019
[root@docker ~]# docker images
REPOSITORY              TAG       IMAGE ID       CREATED         SIZE
<none>                  <none>    c933c31dcb96   6 seconds ago   231MB

53.通过导入操作系统的模板文件可以生成镜像,模板可以从OPENVZ开源项目下载 http://download.openvz.org/template/precreated/debian-7.0-x86.tar.gz

由于有点大所以可以选择离线下载上传虚拟机。下面我是是使用 docker导入命令将下载的debian模板压缩包导入为本地镜像的例子。前提是先将wget安装。

[root@admin ~]# wget http://download.openvz.org/template/precreated/debian-7.0-x86.tar.gz
[root@docker ~]# cat debian-7.0-x86.tar.gz  | docker import - debain
sha256:e6626cde5ac99ee0f51c3779ce5c905432826ea09d537c8ebedd179c10b5fec9
[root@docker ~]# 

54.导入完成后,会返回生成镜像的 ID 信息。查看本地镜像列表时,可以看到新创建的镜像信息。

[root@docker ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED          SIZE
debain       latest    e6626cde5ac9   41 seconds ago   546MB
[root@docker ~]# 

55.下载一个创建 SSHD 镜像的基础镜像 centos。

56.建立工作目录。

57.创建并编写 Dockerfile 文件。

58.生成镜像。

[root@docker ~]# vim dockerfile_centos
[root@docker ~]# cat dockerfile_centos 
# 指定基础镜像  
FROM centos:7  
  
# 更新系统软件包  
RUN yum update -y && yum install -y openssh-server sudo    
  
# SSH服务需要以root运行  
RUN sed -i 's/PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config  
  
# SSHD服务使用的端口号(默认是22)  
EXPOSE 22  
  
# 设置容器启动时要执行的命令  
CMD ["/usr/sbin/sshd", "-D"]
[root@docker ~]# 
[root@docker ~]# docker build -f dockerfile_centos -t myssh .
[+] Building 49.2s (7/7) FINISHED                                                                                                      docker:default
 => [internal] load build definition from dockerfile_centos                                                                                      0.0s
 => => transferring dockerfile: 504B                                                                                                             0.0s
 => [internal] load metadata for docker.io/library/centos:7                                                                                      0.0s
 => [internal] load .dockerignore                                                                                                                0.0s
 => => transferring context: 2B                                                                                                                  0.0s
 => [1/3] FROM docker.io/library/centos:7                                                                                                        0.0s
 => [2/3] RUN yum update -y && yum install -y openssh-server sudo                                                                               46.9s
 => [3/3] RUN sed -i 's/PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config                                             0.5s
 => exporting to image                                                                                                                           1.8s 
 => => exporting layers                                                                                                                          1.7s 
 => => writing image sha256:c5919386520dbc26d9d6f20823313869762819a0f039572658a495439de64011                                                     0.0s 
 => => naming to docker.io/library/myssh                                                                                                         0.0s 
[root@docker ~]#                                                                          [root@docker ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED              SIZE
myssh        latest    c5919386520d   About a minute ago   592MB
[root@docker ~]#                              

59.启动容器并修改 root 密码。

[root@docker ~]# docker run  -it --name centos_ssh myssh /bin/bash 
[root@82567bc0f40b /]# 
[root@82567bc0f40b /]# ip a
bash: ip: command not found
[root@82567bc0f40b /]# passwd
Changing password for user root.
New password: 
BAD PASSWORD: The password is a palindrome
Retype new password: 
passwd: all authentication tokens updated successfully.
[root@82567bc0f40b /]# 

60.构建 Nginx 镜像,建立工作目录。

61.创建并编写 Dockfile 文件。

62.编写执行脚本内容。

63.生成镜像。

[root@docker ~]# cat dockerfile_nginx 
from  nginx:latest
#指定基础镜像
​
workdir  /www/html/
expose 80
​
[root@docker ~]# 
[root@docker ~]# docker build -f dockerfile_nginx  -t www_nginx .
[+] Building 38.5s (6/6) FINISHED                                                                                                      docker:default
 => [internal] load build definition from dockerfile_nginx                                                                                       0.0s
 => => transferring dockerfile: 174B                                                                                                             0.0s
 => [internal] load metadata for docker.io/library/nginx:latest                                                                                 15.6s
 => [internal] load .dockerignore                                                                                                                0.0s
 => => transferring context: 2B                                                                                                                  0.0s
 => [1/2] FROM docker.io/library/nginx:latest@sha256:0d17b565c37bcbd895e9d92315a05c1c3c9a29f762b011a10c54a66cd53c9b31                           22.6s
 => => resolve docker.io/library/nginx:latest@sha256:0d17b565c37bcbd895e9d92315a05c1c3c9a29f762b011a10c54a66cd53c9b31                            0.0s
 => => sha256:0d17b565c37bcbd895e9d92315a05c1c3c9a29f762b011a10c54a66cd53c9b31 1.86kB / 1.86kB                                                   0.0s
 => => sha256:ee89b00528ff4f02f2405e4ee221743ebc3f8e8dd0bfd5c4c20a2fa2aaa7ede3 1.57kB / 1.57kB                                                   0.0s
 => => sha256:605c77e624ddb75e6110f997c58876baa13f8754486b461117934b24a9dc3a85 7.66kB / 7.66kB                                                   0.0s
 => => sha256:a2abf6c4d29d43a4bf9fbb769f524d0fb36a2edab49819c1bf3e76f409f953ea 31.36MB / 31.36MB                                                16.8s
 => => sha256:589b7251471a3d5fe4daccdddfefa02bdc32ffcba0a6d6a2768bf2c401faf115 602B / 602B                                                       0.8s
 => => sha256:a9edb18cadd1336142d6567ebee31be2a03c0905eeefe26cb150de7b0fbc520b 25.35MB / 25.35MB                                                21.6s
 => => sha256:186b1aaa4aa6c480e92fbd982ee7c08037ef85114fbed73dbb62503f24c1dd7d 894B / 894B                                                       1.5s
 => => sha256:b4df32aa5a72e2a4316aad3414508ccd907d87b4ad177abd7cbd62fa4dab2a2f 666B / 666B                                                       1.9s
 => => sha256:a0bcbecc962ed2552e817f45127ffb3d14be31642ef3548997f58ae054deb5b2 1.40kB / 1.40kB                                                   2.4s
 => => extracting sha256:a2abf6c4d29d43a4bf9fbb769f524d0fb36a2edab49819c1bf3e76f409f953ea                                                        2.1s
 => => extracting sha256:a9edb18cadd1336142d6567ebee31be2a03c0905eeefe26cb150de7b0fbc520b                                                        0.8s
 => => extracting sha256:589b7251471a3d5fe4daccdddfefa02bdc32ffcba0a6d6a2768bf2c401faf115                                                        0.0s
 => => extracting sha256:186b1aaa4aa6c480e92fbd982ee7c08037ef85114fbed73dbb62503f24c1dd7d                                                        0.0s
 => => extracting sha256:b4df32aa5a72e2a4316aad3414508ccd907d87b4ad177abd7cbd62fa4dab2a2f                                                        0.0s
 => => extracting sha256:a0bcbecc962ed2552e817f45127ffb3d14be31642ef3548997f58ae054deb5b2                                                        0.0s
 => [2/2] WORKDIR  /www/html/                                                                                                                    0.1s
 => exporting to image                                                                                                                           0.0s
 => => exporting layers                                                                                                                          0.0s
 => => writing image sha256:b530274b1ff2f845316f387ecb0db722374ef9adbf71a73e902b4ebbad720778                                                     0.0s
 => => naming to docker.io/library/www_nginx                                                                                                     0.0s
[root@docker ~]# 
[root@docker ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED             SIZE
www_nginx    latest    b530274b1ff2   4 minutes ago       141MB
​

64.启动容器进行测试。

[root@docker ~]# docker run -d -p 8080:80 www_nginx:latest 
3861a5b890175bcf88254cee2d8cbc784f5e5efdbb535d13ca5b4b391bed312d
[root@docker ~]# docker ps
CONTAINER ID   IMAGE              COMMAND                   CREATED         STATUS         PORTS                                   NAMES
3861a5b89017   www_nginx:latest   "/docker-entrypoint.…"   4 seconds ago   Up 3 seconds   0.0.0.0:8080->80/tcp, :::8080->80/tcp   hopeful_cartwright
[root@docker ~]# curl  192.168.200.133:8080
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
html { color-scheme: light dark; }
body { width: 35em; margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif; }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>
​
<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>
​
<p><em>Thank you for using nginx.</em></p>
</body>
</html>
[root@docker ~]# 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/578126.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Datasophon1.2.1集成Dinky1.0.1

Dinky 下载地址: https://github.com/DataLinkDC/dinky/releases/tag/v1.0.1 Dinky 官网&#xff1a;https://www.dinky.org.cn/ 1.下载Dinky wget https://github.com/DataLinkDC/dinky/releases/download/v1.0.1/dinky-release-1.16-1.0.1.tar.gz mv dinky-release-1.16-1.…

selenium入门篇(环境搭建、八大定位)

背景 Web自动化测现状 1. 属于 E2E 测试 2. 过去通过点点点 3. 好的测试&#xff0c;还需要记录、调试网页的细节 一、selenium环境搭建 一键搭建 pip3 install webdriver-helper 安装后自动的完成&#xff1a; 1. 查看浏览器的版本号 2. 查询操作系统的类型 …

SOLIDWORKS Electrical 3D--精准的三维布线

相信很多工程师在实际生产的时候都会遇到线材长度不准确的问题&#xff0c;从而导致线材浪费甚至整根线材报废的问题&#xff0c;这基本都是由于人工测量长度所导致的&#xff0c;因此本次和大家简单介绍一下SOLIDWORKS Electrical 3D布线的功能&#xff0c;Electrical 3D布线能…

EasyV的可视化作品,没有对这行深入理解,搞不了如此漂亮。

EasyV是我非常佩服的一家可视化服务商&#xff0c;作品涉猎广泛&#xff0c;经典而大气&#xff0c;贝格前端工场的可视化业务与之相比&#xff0c;还是有一定差距&#xff0c;向行业头部企业学习&#xff0c;分享出来一些给大家看下。

海外http代理中的有效连通率是什么意思?

随着互联网的发展&#xff0c;许多人需要使用代理服务器来访问海外网站或绕过地理限制&#xff0c;在选择一个可靠的海外HTTP代理时&#xff0c;了解其有效连通率是至关重要的。 本文将解释有效连通率的含义&#xff0c;并提供详细的测试步骤&#xff0c;帮助您评估一家IP代理…

RabbitMQ工作模式(5) - 主题模式

概念 主题模式&#xff08;Topic Exchange&#xff09;是 RabbitMQ 中一种灵活且强大的消息传递模式&#xff0c;它允许生产者根据消息的特定属性将消息发送到一个交换机&#xff0c;并且消费者可以根据自己的需求来接收感兴趣的消息。主题交换机根据消息的路由键和绑定队列的路…

ARCGIS PRO3 三维模型OSGB转SLPK场景数据集

1.前言 因项目工作&#xff0c;需要将三维模型发布到arcgisserver上&#xff0c;但arcgisserver只支持slpk格式的模型&#xff0c;于是我开启了漫长的三维模型格式转换之旅&#xff0c;在这里记录下本人踩过的坑。 2.三维模型数据情况 2.1 模型大小&#xff1a;在20GB以上&a…

高级IO|从封装epoll服务器到实现reactor服务器|Part2

项目复习&#xff1a;从封装epoll_server到实现reactor服务器(part2) 项目复习&#xff1a;从封装epoll_server到实现reactor服务器(part2) 基本结构搭建好为什么上面我们写的epoll的recv是不正确的&#xff1f;sock要封装了&#xff0c;要维护缓冲区封装epoll(1)继续先写tcp_…

MATLAB 2024a软件下载安装教程

1-首先下载Matlab&#xff0c;以下迅雷云链接&#xff0c;里面有全版本的matlab&#xff0c;根据自己的需要下载即可&#xff0c;建议下载最新版的&#xff0c;功能会更多&#xff0c;当然内存也会更大。 迅雷云盘迅雷云盘https://pan.xunlei.com/s/VNgH_6VFav8Kas-tRfxAb3XOA…

面试二十三、 strcpy 和memcpy 以及字符串和字符数组相互转换

一、 strcpy 和memcpy 区别 strcpy 和 memcpy 都是浅拷贝操作&#xff0c;它们只是简单地将源数据复制到目标位置&#xff0c;而不会复制源数据所指向的内容。具体来说&#xff1a; strcpy 会复制源字符串的内容直到遇到null终止符&#xff0c;并将其复制到目标字符串中。但是…

中国外运校招测评、在线笔试真题考点、备考攻略|北森测评题库通过技巧

中国外运校招测评、在线笔试真题考点、备考攻略&#xff5c;通过技巧 众所周知&#xff0c;校招主要面向应届高校毕业生&#xff0c;这个群体的突出特点是缺少社会经验&#xff0c;但具备很高的潜质&#xff0c;因此校招通常会关注候选人的综合素质和发展潜质。校招实践中&…

Ubuntu2004 CMake 使用基础

一、环境安装 win10安装wsl ubuntu2004 #windows c盘工程目录建立软链 ln -s /mnt/c /home/vrviu/ 安装cmake、c编译工具 apt install -y cmake g 二、CMakeLists.txt讲解 准备工作 首先&#xff0c;在/home/vrviu 目录建立一个 cmake 目录 以后我们所有的 cmake 练习都会放…

Blender点操作

顶点操作即一般的“布线”操作 1.顶点移动 -先切到顶点模式 -移动&#xff0c;G 或 G X/Y/Z -旋转&#xff0c;R 同上 -缩放&#xff0c;S 同上 2.顶点滑移&#xff0c;用于微调顶点的位置 快捷键&#xff1a;Shift V&#xff0c;G G 3.顶点删除 -选中一个顶点 -按…

项目总结报告(Word原件)+项目总结汇报(PPT)

项目总结报告&#xff08;Word&#xff09;项目总结汇报&#xff08;PPT&#xff09; 1 引言 1.1 编写目的 1.2 背景 1.3 范围 1.4 参考资料 2 项目工作成果 2.1 交付给用户的产品 2.2 交付给研发中心的产品 2.2.1 代码部分 2.2.2 文档部分 2.3 需求完成情况与功能及性能符合性…

微信小程序:5.数据绑定

在Data中定义数据早wxml中进行数据使用 在data中定义数据 在页面对应的js对象中找到data&#xff0c;然后把数据进行定义即可 Page({data: {motto: Hello World,userInfo: {avatarUrl: defaultAvatarUrl,nickName: ,},hasUserInfo: false,canIUseGetUserProfile: wx.canIUse…

牛客NC143 矩阵乘法【中等 矩阵 C++/Java/Go/PHP】

题目 题目链接&#xff1a; https://www.nowcoder.com/practice/bf358c3ac73e491585943bac94e309b0 思路 矩阵算法在图像处理、神经网络、模式识别等领域有着广泛的用途。在矩阵乘法中&#xff0c;A矩阵和B矩阵可以做乘法运算必须满足A矩阵的列的数量等于B矩阵的行的数量。运算…

架构师系列- 消息中间件(12)-kafka基础

1、应用场景 1.1 kafka场景 Kafka最初是由LinkedIn公司采用Scala语言开发&#xff0c;基于ZooKeeper&#xff0c;现在已经捐献给了Apache基金会。目前Kafka已经定位为一个分布式流式处理平台&#xff0c;它以 高吞吐、可持久化、可水平扩展、支持流处理等多种特性而被广泛应用…

【docker】安装openjdk

查看可用的 openjdk版本 docker hub 查看地址&#xff1a;https://hub.docker.com/_/openjdk 此图片已被正式弃用&#xff0c;建议所有用户尽快找到并使用合适的替代品。其他官方形象替代品的一些例子&#xff08;按字母顺序列出&#xff0c;没有有意或暗示的偏好&#xff09;…

第三节课,后端登录【1】.2--本人

一、视频链接 网址&#xff1a; 后端用户脱敏和session-CSDN直播 二、代码开始 2.1 新建一个request参数。完成用户登录态键 快捷建&#xff0c; 全局变量 代码&#xff1a; // 3.记录用户的登录态/*** 这段代码是Java Web开发中的一部分&#xff0c;用于在会话&#xff08…

jdk版本冲突,java.lang.UnsupportedClassVersionError: JVMCFRE003

主要是编辑器所用的jdk版本和项目用的不一致导致的&#xff0c;虽然编译通过了&#xff0c;但是运行是会报错 选好后点击Apply点击ok&#xff0c;然后重新编译一遍项目就可以了
最新文章