36_綜合演示

鸟叔书發表於2024-03-13

1. 安裝依賴包
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
2. 配置 docker 源
~]# yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

# 檢視源是否配置上 docker-ce.repo
~]# cd /etc/yum.repos.d
yum.repos.d]# ls
bak  centos-addons.repo  centos.repo  docker-ce.repo

# 修改源地址
~]# sed -i 's+download.docker.com+mirrors.aliyun.com/docker-ce+' /etc/yum.repos.d/docker-ce.repo

# 安裝Docker
~]# yum -y install docker-ce

# 啟動docker
~]# systemctl enable docker && systemctl start docker

# 檢視docker服務狀態
~]# systemctl status docker
● docker.service - Docker Application Container Engine
     Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; preset: disabled)
     Active: active (running) since Mon 2024-02-26 21:11:02 CST; 52s ago
TriggeredBy: ● docker.socket
       Docs: https://docs.docker.com
   Main PID: 10609 (dockerd)
      Tasks: 17
     Memory: 37.9M
        CPU: 739ms
     CGroup: /system.slice/docker.service
             └─10609 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

# 配置映象加速
[root@docker ~]# cat >/etc/docker/daemon.json <<EOF
{
"registry-mirrors":[
   "https://bhtknto5.mirror.aliyuncs.com",
   "https://yo3sdl2l.mirror.aliyuncs.com",
   "https://blkjc4x3.mirror.aliyuncs.com",
   "https://gfmnzvu1.mirror.aliyuncs.com",
   "https://yxzrazem.mirror.aliyuncs.com",
   "http://hub-mirror.c.163.com",
   "https://registry.docker-cn.com",
   "https://docker.mirrors.ustc.edu.cn"
   ],
   "exec-opts": ["native.cgroupdriver=systemd"]
}
EOF
[root@docker ~]#
[root@docker ~]# cat /etc/docker/daemon.json
{
"registry-mirrors":[
   "https://bhtknto5.mirror.aliyuncs.com",
   "https://yo3sdl2l.mirror.aliyuncs.com",
   "https://blkjc4x3.mirror.aliyuncs.com",
   "https://gfmnzvu1.mirror.aliyuncs.com",
   "https://yxzrazem.mirror.aliyuncs.com",
   "http://hub-mirror.c.163.com",
   "https://registry.docker-cn.com",
   "https://docker.mirrors.ustc.edu.cn"
   ],
   "exec-opts": ["native.cgroupdriver=systemd"]
}
# 重啟使配置生效
[root@docker ~]# systemctl daemon-reload
[root@docker ~]# systemctl restart docker

# 檢視docker自動生成的網橋
[root@docker ~]# ifconfig
docker0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        inet 172.17.0.1  netmask 255.255.0.0  broadcast 172.17.255.255
        ether 02:42:f1:e3:a5:88  txqueuelen 0  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
2.常用命令
# 檢視docker概要資訊
docker info

# 檢視docker映象
~]# docker images

# 下載一個映象 比如:centos:7
[root@docker ~]# docker pull centos:7
7: Pulling from library/centos
2d473b07cdd5: Pull complete
Digest: sha256:9d4bcbbb213dfd745b58be38b13b996ebb5ac315fe75711bd618426a630e0987
Status: Downloaded newer image for centos:7
docker.io/library/centos:7
[root@docker ~]#
[root@docker ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
centos       7         eeb6ee3f44bd   2 years ago   204MB

# 使用映象,建立一個虛擬機器(容器)
[root@docker ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
centos       7         eeb6ee3f44bd   2 years ago   204MB

# it => 表示互動模式, rm => 表示退出容器的時候自動刪除容器, centos:7 映象名字:TAG, /bin/bash 容器的執行shell環境(ls,mv,cp)
[root@docker ~]# docker run -it --rm centos:7 /bin/bash
[root@11b92ff9a123 /]# ls
anaconda-post.log  bin  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
[root@11b92ff9a123 /]# ls /root/
anaconda-ks.cfg
[root@11b92ff9a123 /]# cat /etc/os-release
NAME="CentOS Linux"
VERSION="7 (Core)"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="7"
PRETTY_NAME="CentOS Linux 7 (Core)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:centos:centos:7"
HOME_URL="https://www.centos.org/"
BUG_REPORT_URL="https://bugs.centos.org/"

CENTOS_MANTISBT_PROJECT="CentOS-7"
CENTOS_MANTISBT_PROJECT_VERSION="7"
REDHAT_SUPPORT_PRODUCT="centos"
REDHAT_SUPPORT_PRODUCT_VERSION="7"


# 使用新映象ubuntu18,後臺模式執行容器
[root@docker ~]# docker pull ubuntu:20.04
20.04: Pulling from library/ubuntu
7b1a6ab2e44d: Pull complete
Digest: sha256:626ffe58f6e7566e00254b638eb7e0f3b11d4da9675088f4781a50ae288f3322
Status: Downloaded newer image for ubuntu:20.04
docker.io/library/ubuntu:20.04
[root@docker ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
ubuntu       20.04     ba6acccedd29   2 years ago   72.8MB
centos       7         eeb6ee3f44bd   2 years ago   204MB

[root@docker ~]# docker run -it -d ubuntu:20.04 /bin/bash # 後臺執行模式
07067ffcd9d5ecfbdf4d969f549ac018ca965e3ff33d408ad899819a8c37d8e6
[root@docker ~]#
[root@docker ~]# docker ps # 檢視正在執行的容器 -a => 檢視所有執行的或者關機的容器
CONTAINER ID   IMAGE          COMMAND       CREATED         STATUS         PORTS     NAMES
07067ffcd9d5   ubuntu:20.04   "/bin/bash"   4 seconds ago   Up 3 seconds             gallant_volhard
[root@docker ~]#
[root@docker ~]# docker exec -it 07067ffcd9d5 /bin/bash # 進入後臺執行的容器
root@07067ffcd9d5:/#
root@07067ffcd9d5:/#
root@07067ffcd9d5:/#
root@07067ffcd9d5:/#
root@07067ffcd9d5:/# cat /etc/os-release
NAME="Ubuntu"
VERSION="20.04.3 LTS (Focal Fossa)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 20.04.3 LTS"
VERSION_ID="20.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=focal
UBUNTU_CODENAME=focal
root@07067ffcd9d5:/# ls
bin  boot  dev  etc  home  lib  lib32  lib64  libx32  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
root@07067ffcd9d5:/#
root@07067ffcd9d5:/# exit  # 退出容器
exit
[root@docker ~]# docker ps # 容器依然執行著
CONTAINER ID   IMAGE          COMMAND       CREATED          STATUS          PORTS     NAMES
07067ffcd9d5   ubuntu:20.04   "/bin/bash"   54 seconds ago   Up 53 seconds             gallant_volhard

# 啟動mysql容器
[root@docker ~]# docker pull mysql
Using default tag: latest
latest: Pulling from library/mysql
72a69066d2fe: Pull complete
93619dbc5b36: Pull complete
99da31dd6142: Pull complete
626033c43d70: Pull complete
37d5d7efb64e: Pull complete
ac563158d721: Pull complete
d2ba16033dad: Pull complete
688ba7d5c01a: Pull complete
00e060b6d11d: Pull complete
1c04857f594f: Pull complete
4d7cfa90e6ea: Pull complete
e0431212d27d: Pull complete
Digest: sha256:e9027fe4d91c0153429607251656806cc784e914937271037f7738bd5b8e7709
Status: Downloaded newer image for mysql:latest
docker.io/library/mysql:latest
[root@docker ~]#
[root@docker ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
mysql        latest    3218b38490ce   2 years ago   516MB
ubuntu       20.04     ba6acccedd29   2 years ago   72.8MB
centos       7         eeb6ee3f44bd   2 years ago   204MB

[root@docker ~]# docker run -e MYSQL_ROOT_PASSWORD=root -d mysql:latest
d89bec2b9c711dff7586454725e74af74a6bf3f9e56d767d96d77f53b215fe7f
[root@docker ~]#
[root@docker ~]# docker ps
CONTAINER ID   IMAGE          COMMAND                  CREATED          STATUS          PORTS                 NAMES
d89bec2b9c71   mysql:latest   "docker-entrypoint.s…"   3 seconds ago    Up 3 seconds    3306/tcp, 33060/tcp   laughing_hypatia
07067ffcd9d5   ubuntu:20.04   "/bin/bash"              13 minutes ago   Up 13 minutes                         gallant_volhard
[root@docker ~]#
[root@docker ~]# docker exec -it d89bec2b9c71 /bin/bash
root@d89bec2b9c71:/#
root@d89bec2b9c71:/# mysql -uroot -proot
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.0.27 MySQL Community Server - GPL

Copyright (c) 2000, 2021, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.01 sec)

mysql>

# 建立一個nginx容器
[root@docker ~]# docker pull nginx
Using default tag: latest
latest: Pulling from library/nginx
a2abf6c4d29d: Pull complete
a9edb18cadd1: Pull complete
589b7251471a: Pull complete
186b1aaa4aa6: Pull complete
b4df32aa5a72: Pull complete
a0bcbecc962e: Pull complete
Digest: sha256:0d17b565c37bcbd895e9d92315a05c1c3c9a29f762b011a10c54a66cd53c9b31
Status: Downloaded newer image for nginx:latest
docker.io/library/nginx:latest
[root@docker ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
nginx        latest    605c77e624dd   2 years ago   141MB
mysql        latest    3218b38490ce   2 years ago   516MB
ubuntu       20.04     ba6acccedd29   2 years ago   72.8MB
centos       7         eeb6ee3f44bd   2 years ago   204MB
[root@docker ~]#
[root@docker ~]# docker run -it -d -p 10082:80 nginx:latest /bin/bash
c271ced3148106d01f52ab6f653b22fc916c53090fa5c6289ac967c09abc1923
[root@docker ~]#
[root@docker ~]# docker ps -a
CONTAINER ID   IMAGE          COMMAND                  CREATED          STATUS          PORTS                                     NAMES
c271ced31481   nginx:latest   "/docker-entrypoint.…"   7 seconds ago    Up 5 seconds    0.0.0.0:10082->80/tcp, :::10082->80/tcp   inspiring_cray
d89bec2b9c71   mysql:latest   "docker-entrypoint.s…"   7 minutes ago    Up 7 minutes    3306/tcp, 33060/tcp                       laughing_hypatia
07067ffcd9d5   ubuntu:20.04   "/bin/bash"              21 minutes ago   Up 21 minutes                                             gallant_volhard
[root@docker ~]#
[root@docker ~]# docker exec -it c271ced31481 /bin/bash
root@c271ced31481:/# echo "This is my web" > /usr/share/nginx/html/index.html
root@c271ced31481:/# nginx start
nginx: invalid option: "start"
root@c271ced31481:/# nginx
2024/02/26 14:12:25 [notice] 14#14: using the "epoll" event method
2024/02/26 14:12:25 [notice] 14#14: nginx/1.21.5
2024/02/26 14:12:25 [notice] 14#14: built by gcc 10.2.1 20210110 (Debian 10.2.1-6)
2024/02/26 14:12:25 [notice] 14#14: OS: Linux 5.14.0-375.el9.x86_64
2024/02/26 14:12:25 [notice] 14#14: getrlimit(RLIMIT_NOFILE): 1073741816:1073741816
2024/02/26 14:12:25 [notice] 15#15: start worker processes
2024/02/26 14:12:25 [notice] 15#15: start worker process 16
root@c271ced31481:/# 2024/02/26 14:12:25 [notice] 15#15: start worker process 17
2024/02/26 14:12:25 [notice] 15#15: start worker process 18
2024/02/26 14:12:25 [notice] 15#15: start worker process 19
2024/02/26 14:12:25 [notice] 15#15: start worker process 20
2024/02/26 14:12:25 [notice] 15#15: start worker process 21
2024/02/26 14:12:25 [notice] 15#15: start worker process 22
2024/02/26 14:12:25 [notice] 15#15: start worker process 23
2024/02/26 14:12:25 [notice] 15#15: start worker process 24
2024/02/26 14:12:25 [notice] 15#15: start worker process 25
2024/02/26 14:12:25 [notice] 15#15: start worker process 26
2024/02/26 14:12:25 [notice] 15#15: start worker process 27

# 宿主機檢視nginx
[root@docker ~]# curl 127.0.0.1:10082
This is my web

# 物理機瀏覽器直接訪問 
http://10.1.1.11:10082/

# 停止/刪除容器
[root@docker ~]# docker ps -a
CONTAINER ID   IMAGE          COMMAND                  CREATED          STATUS          PORTS                                     NAMES
c271ced31481   nginx:latest   "/docker-entrypoint.…"   6 minutes ago    Up 6 minutes    0.0.0.0:10082->80/tcp, :::10082->80/tcp   inspiring_cray
d89bec2b9c71   mysql:latest   "docker-entrypoint.s…"   14 minutes ago   Up 14 minutes   3306/tcp, 33060/tcp                       laughing_hypatia
07067ffcd9d5   ubuntu:20.04   "/bin/bash"              27 minutes ago   Up 27 minutes                                             gallant_volhard
[root@docker ~]#
[root@docker ~]#
[root@docker ~]# docker stop c271ced31481
c271ced31481
[root@docker ~]# docker ps -a
CONTAINER ID   IMAGE          COMMAND                  CREATED          STATUS                       PORTS                 NAMES
c271ced31481   nginx:latest   "/docker-entrypoint.…"   6 minutes ago    Exited (137) 2 seconds ago                         inspiring_cray
d89bec2b9c71   mysql:latest   "docker-entrypoint.s…"   14 minutes ago   Up 14 minutes                3306/tcp, 33060/tcp   laughing_hypatia
07067ffcd9d5   ubuntu:20.04   "/bin/bash"              28 minutes ago   Up 28 minutes                                      gallant_volhard
[root@docker ~]#
[root@docker ~]# docker rm c271ced31481
c271ced31481
[root@docker ~]# docker ps -a
CONTAINER ID   IMAGE          COMMAND                  CREATED          STATUS          PORTS                 NAMES
d89bec2b9c71   mysql:latest   "docker-entrypoint.s…"   15 minutes ago   Up 15 minutes   3306/tcp, 33060/tcp   laughing_hypatia
07067ffcd9d5   ubuntu:20.04   "/bin/bash"              28 minutes ago   Up 28 minutes                         gallant_volhard
[root@docker ~]#
[root@docker ~]#
[root@docker ~]# docker rm -f d89
d89
[root@docker ~]# docker ps -a
CONTAINER ID   IMAGE          COMMAND       CREATED          STATUS          PORTS     NAMES
07067ffcd9d5   ubuntu:20.04   "/bin/bash"   29 minutes ago   Up 29 minutes             gallant_volhard

# 容器網路卡
# -----------docker0:172.17.0.1 ------------------
#     |                     |
#     |                     |
# veth1f4bbf3             veth1f4bbf4
# 172.17.0.2               172.17.0.3
[root@docker ~]# docker run -it -d centos:7 /bin/bash
05fb15d4365f4b42cd41fa25df5a7fb5ab3e4cf39de6170d60b1f1dd8d1966cb
# 兩個容器
[root@docker ~]# docker ps
CONTAINER ID   IMAGE          COMMAND       CREATED          STATUS          PORTS     NAMES
05fb15d4365f   centos:7       "/bin/bash"   4 minutes ago    Up 4 minutes              laughing_ganguly
07067ffcd9d5   ubuntu:20.04   "/bin/bash"   41 minutes ago   Up 41 minutes             gallant_volhard
# 檢視兩個容器的網路卡
[root@docker ~]# ifconfig
docker0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.17.0.1  netmask 255.255.0.0  broadcast 172.17.255.255
        inet6 fe80::42:f1ff:fee3:a588  prefixlen 64  scopeid 0x20<link>
        ether 02:42:f1:e3:a5:88  txqueuelen 0  (Ethernet)

veth1f4bbf3: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet6 fe80::44eb:a3ff:fe24:41af  prefixlen 64  scopeid 0x20<link>
        ether 46:eb:a3:24:41:af  txqueuelen 0  (Ethernet)


vethcf0b6ea: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet6 fe80::9085:27ff:fe69:5e39  prefixlen 64  scopeid 0x20<link>
        ether 92:85:27:69:5e:39  txqueuelen 0  (Ethernet)


[root@docker ~]# docker exec -it 05 /bin/bash
# centos7 替換源 容器內部
[root@05fb15d4365f /]# curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
[root@05fb15d4365f /]# sed -i -e '/mirrors.cloud.aliyuncs.com/d' -e '/mirrors.aliyuncs.com/d' /etc/yum.repos.d/CentOS-Base.repo
[root@05fb15d4365f /]# yum -y install net-tools # ifconfig
[root@d5f22ddf98ef /]# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.17.0.3  netmask 255.255.0.0  broadcast 172.17.255.255
        ether 02:42:ac:11:00:03  txqueuelen 0  (Ethernet)

# 宿主機使用 inspect 檢視
[root@docker ~]# docker inspect d5f22ddf98ef
"Networks": {
      "bridge": {
         "IPAMConfig": null,
         "Links": null,
         "Aliases": null,
         "MacAddress": "02:42:ac:11:00:03",
         "NetworkID": "c44cee693844c821171759da4bd7a1e8cdbc8072c14a2e044ccd2a2c83ba0b9d",
         "EndpointID": "1e9da94dc6905376cc5bb83281c7bb0a4e44a4d50f9ff8d4c3ee3327b5288a51",
         "Gateway": "172.17.0.1",
         "IPAddress": "172.17.0.3",
         "IPPrefixLen": 16,
         "IPv6Gateway": "",
         "GlobalIPv6Address": "",
         "GlobalIPv6PrefixLen": 0,
         "DriverOpts": null,
         "DNSNames": null
      }
}

# ping 另外一個容器
[root@d5f22ddf98ef /]# 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.140 ms
64 bytes from 172.17.0.2: icmp_seq=2 ttl=64 time=0.139 ms
^C
--- 172.17.0.2 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1056ms
rtt min/avg/max/mdev = 0.139/0.139/0.140/0.011 ms

相關文章