8.26-docker创建容器+打包镜像+docker文件的学习

news2024/11/16 19:38:11

一、回顾

创建容器:docker run -it --name a1 centos:latest /bin/bash

查看容器:docker ps(查看正在up的容器)

docker ps -a(查看所有的容器)

切回宿主机:ctrl p q

启动容器:docker start a1

停止容器:docker stop a1

删除容器:docker rm a1

docker rm -f a1(强制删除容器)

如果容器正在运行,容器是无法删除的,如果容器没有删除,对应的镜像也无法删除

镜像的迁移:

save:docker save -o centos.tar centos:latest

load:docker load -i centos.tar

生成镜像:

export(通过容器生成tar包):docker export -o centos_httpd.tar a1

import(通过tar引入镜像):docker import -m httpd centos_httpd.tar centos:httpd

获得镜像的ip地址:

1、进入镜像的bash:yum -y install iprouter,net-tools

2、使用exec指令:dockers exec a1 yum -y install iprouter,net-tools

docker exec a1 ip add

3、直接使用inspect命令:docker inspect a1

端口映射 -p:

docker run -it --name a2 -p80:80 centos:latest /bin/bash

docker run -it --name a2 -p80 centos:latest /bin/bash 宿主会指定一个大于32767的端口给容器

docker ps -a 查看实际给予的端口

docker run -it --name a2 -p10.0.0.101::80 centos:latest /bin/bash

数据持久化:

docker run -it --name a2 -v /zhenji:/rongqi centos:latest /bin/bash

二、部署一个考试项目

  # 1、将资源上传到服务器
  [root@docker ~]# yum -y install unzip
  [root@docker ~]# rz -E
  rz waiting to receive.
  [root@docker ~]# unzip project_exam_system.zip 
  ​
  # 2、创建基础镜像
  [root@docker ~]# systemctl start docker
  [root@docker ~]# docker pull centos
  Using default tag: latest
  latest: Pulling from library/centos
  Digest: sha256:a27fd8080b517143cbbbab9dfb7c8571c40d67d534bbdee55bd6c473f432b177
  Status: Image is up to date for centos:latest
  docker.io/library/centos:latest
  ​
  # 3、在容器中修改yum源
  [root@docker ~]# docker run -it --name a0 centos:latest /bin/bash
  [root@d1d92bed0d9a /]# rm -rf /etc/yum.repos.d/*
  [root@d1d92bed0d9a /]# curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo
    % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                   Dload  Upload   Total   Spent    Left  Speed
  100  2495  100  2495    0     0   5898      0 --:--:-- --:--:-- --:--:--  5898
  [root@d1d92bed0d9a /]# yum clean all && yum makecache 
  ​
  # 4、在容器中安装epel
  [root@d1d92bed0d9a /]# yum -y install epel-release
  ​
  # 5、在容器中安装nginx
  [root@d1d92bed0d9a /]# yum -y install nginx
  ​
  # 6、ctrl p q退出容器
  [root@d1d92bed0d9a /]# [root@docker ~]# 
  ​
  # 7、导出tar包
  [root@docker ~]# docker export -o centos_nginx.tar a0
  [root@docker ~]# ls
  anaconda-ks.cfg         centos.tar      project_exam_system.sql        yum_httpd.tar
  application.properties  centos_yum.tar  Project_ExamSystem-V1.0.0.war
  centos_nginx.tar        dist            project_exam_system.zip
  ​
  # 8、引入tar包,成为镜像
  [root@docker ~]# docker import -m "nginx" centos_nginx.tar centos:nginx
  sha256:a0a4655eb590b16aace6c33d78862992ccdf615f1d517d236d173ff501086ff8
  ​
  # 9、查看镜像
  [root@docker ~]# docker images
  REPOSITORY   TAG       IMAGE ID       CREATED          SIZE
  centos       nginx     a0a4655eb590   18 seconds ago   366MB
  centos       httpd     92dfb2054854   3 days ago       310MB
  centos       yum       d79f0f2ff79e   3 days ago       260MB
  mysql        latest    a82a8f162e18   4 weeks ago      586MB
  centos       latest    5d0da3dc9764   2 years ago      231MB
  ​
  # 10、删除容器
  [root@docker ~]# docker rm -f a0
  a0
  ​
  # 11、创建新的容器,在创建的同时指定端口,以及挂载目录
  [root@docker ~]# docker run -it --name a0 -p80:80/tcp -v /opt/:/usr/share/nginx/html centos:nginx /bin/bash
  ​
  # 12、在容器内部启动nginx服务
  [root@8dea218de2f7 /]# nginx
  ​
  # 13、curl p q退出镜像
  [root@8dea218de2f7 /]# [root@docker ~]# 
  [root@docker ~]# ls /opt
  containerd
  ​
  # 14、在宿主机上把dist目录中的文件复制到opt目录下
  [root@docker ~]# cp -r dist/* /opt/
  [root@docker ~]# ls /opt/
  assets  containerd  favicon.ico  index.html
  [root@docker ~]# curl localhost
  <!DOCTYPE html>
  <html lang="en">
    <head>
      <meta charset="UTF-8">
      <link rel="icon" href="/favicon.ico">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <title>Vite App</title>
      <script type="module" crossorigin src="/assets/index-C4kAShR5.js"></script>
      <link rel="stylesheet" crossorigin href="/assets/index-CSz7ARPP.css">
    </head>
    <body>
      <div id="app"></div>
    </body>
  </html>
  [root@docker ~]# systemctl stop firewalld
  [root@docker ~]# systemctl disable firewalld
  # 15、浏览器查看并登录

三、mysql镜像管理

  
  [root@docker ~]# docker pull mysql
  Using default tag: latest
  latest: Pulling from library/mysql
  6e839ac3722d: Pull complete 
  ad912193ad5f: Pull complete 
  25d13d87fd8d: Pull complete 
  004d383c75ef: Pull complete 
  6d9bbc82a0b8: Pull complete 
  81fec07ea550: Pull complete 
  83357cb2d3a5: Pull complete 
  8ffe968b82c1: Pull complete 
  30dfd9a7ed57: Pull complete 
  35844ae33cbe: Pull complete 
  Digest: sha256:86cdfe832c81e39a89cfb63c3fde1683c41cc00ef91e67653c9c1df0ba80f454
  Status: Downloaded newer image for mysql:latest
  docker.io/library/mysql:latest
  [root@docker ~]# docker images
  REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
  centos       httpd     92dfb2054854   3 days ago    310MB
  centos       yum       d79f0f2ff79e   3 days ago    260MB
  mysql        latest    a82a8f162e18   4 weeks ago   586MB
  centos       latest    5d0da3dc9764   2 years ago   231MB
  [root@docker ~]# docker run -d --name mysql01 -e MYSQL_ROOT_PASSWORD=root -p 3306:3306 mysql:latest
  87136ab0b9a66e8d11be350cc11848db7bec4f914e45b889f77ff00aaa5b50fb
  ​
  [root@docker ~]# docker ps 
  CONTAINER ID   IMAGE          COMMAND                   CREATED       STATUS       PORTS                                                  NAMES
  87136ab0b9a6   mysql:latest   "docker-entrypoint.s…"   3 hours ago   Up 3 hours   0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp   mysql01
  ​
  [root@docker ~]# docker exec -it mysql01 mysql01 -uroot -proot
  OCI runtime exec failed: exec failed: unable to start container process: exec: "mysql01": executable file not found in $PATH: unknown
  [root@docker ~]# docker exec -it mysql01 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: 9.0.1 MySQL Community Server - GPL
  ​
  Copyright (c) 2000, 2024, 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> exit
  Bye
  ​

运行sql文件

查看数据库和表

  
  mysql> show databases;
  +---------------------+
  | Database            |
  +---------------------+
  | information_schema  |
  | mysql               |
  | performance_schema  |
  | project_exam_system |
  | sys                 |
  +---------------------+
  5 rows in set (0.00 sec)
  ​
  mysql> use project_exam_system
  Reading table information for completion of table and column names
  You can turn off this feature to get a quicker startup with -A
  ​
  Database changed
  mysql> show tables;
  +-------------------------------+
  | Tables_in_project_exam_system |
  +-------------------------------+
  | admin                         |
  | category                      |
  | com_city                      |
  | com_nation                    |
  | course                        |
  | dept                          |
  | dept_student                  |
  | exam                          |
  | exam_dept                     |
  | exam_process                  |
  | loginlog                      |
  | major                         |
  | menu                          |
  | paper                         |
  | paper_topic                   |
  | role                          |
  | role_admin                    |
  | role_menu                     |
  | semester                      |
  | student                       |
  | teacher                       |
  | topic                         |
  | user                          |
  +-------------------------------+
  23 rows in set (0.00 sec)
  ​
  mysql> select * from user;
  +-----+--------------+----------+--------+---------------------+----------+---------------------+--------+-------+
  | id  | userName     | password | status | createTime          | createOr | editTime            | editOr | isDel |
  +-----+--------------+----------+--------+---------------------+----------+---------------------+--------+-------+
  |   1 | 21001189     | 111111   |      0 | 2024-08-21 09:45:05 | NULL     | 2024-08-22 22:04:44 | NULL   |     0 |
  |   2 | 21001190     | 111111   |      0 | 2024-08-21 09:45:05 | NULL     | 2024-08-21 09:45:05 | NULL   |     0 |
  |   3 | 21001191     | 111111   |      0 | 2024-08-21 09:45:05 | NULL     | 2024-08-21 09:45:05 | NULL   |     0 |
  |   4 | 21001192     | 111111   |      0 | 2024-08-21 09:45:05 | NULL     | 2024-08-21 09:45:05 | NULL   |     0 |
  |   5 | 21001193     | 111111   |      0 | 2024-08-21 09:45:05 | NULL     | 2024-08-21 09:45:05 | NULL   |     0 |
  |   6 | 21001194     | 111111   |      0 | 2024-08-21 09:45:05 | NULL     | 2024-08-21 09:45:05 | NULL   |     0 |
  |   7 | 21001195     | 111111   |      0 | 2024-08-21 09:45:05 | NULL     | 2024-08-21 09:45:05 | NULL   |     0 |
  |   8 | 21001196     | 111111   |      0 | 2024-08-21 09:45:05 | NULL     | 2024-08-21

四、让容器和宿主机时间一致

让容器共享宿主机的/etc/localtime

  
  [root@docker ~]# docker run -it --name c8 -v /etc/localtime:/etc/localtime centos:latest /bin/bash
  [root@08f5525f8d55 /]# date
  Mon Aug 26 14:39:46 CST 2024
  ​

五、exec语句

  
  [root@docker ~]# docker run -it --name c8 -v /etc/localtime:/etc/localtime centos:latest /bin/bash
  [root@08f5525f8d55 /]# [root@docker ~]# 
  [root@docker ~]# docker exec c8 ls /
  bin
  dev
  etc
  home
  lib
  lib64
  lost+found
  media
  mnt
  opt
  proc
  root
  run
  sbin
  srv
  sys
  tmp
  usr
  var
  [root@docker ~]# docker exec c8  yum clean all && yum makecache
  0 files removed
  已加载插件:fastestmirror
  Loading mirror speeds from cached hostfile
  epel/x86_64/metalink                                           | 5.1 kB  00:00:00     
   * base: mirrors.aliyun.com
   * epel: repo.jing.rocks
   * extras: mirrors.aliyun.com
   * updates: mirrors.aliyun.com
  a                                                              | 3.6 kB  00:00:00     
  base                                                           | 3.6 kB  00:00:00     
  docker-ce-stable                                               | 3.5 kB  00:00:00     
  extras                                                         | 2.9 kB  00:00:00     
  updates                                                        | 2.9 kB  00:00:00     
  (1/13): a/other_db                                             | 2.5 MB  00:00:00     
  (2/13): a/filelists_db                                         | 6.9 MB  00:00:01     
  (3/13): docker-ce-stable/7/x86_64/filelists_db                 |  66 kB  00:00:00     
  (4/13): docker-ce-stable/7/x86_64/other_db                     | 145 kB  00:00:01     
  (5/13): epel/x86_64/prestodelta                                |  592 B  00:00:01     
  (6/13): extras/7/x86_64/filelists_db                           | 305 kB  00:00:01     
  (7/13): extras/7/x86_64/other_db                               | 154 kB  00:00:01     
  (8/13): base/7/x86_64/other_db                                 | 2.6 MB  00:00:08     
  (9/13): updates/7/x86_64/other_db                              | 1.6 MB  00:00:09     
  (10/13): base/7/x86_64/filelists_db                            | 7.2 MB  00:00:34     
  (11/13): updates/7/x86_64/filelists_db                         |  15 MB  00:00:59     
  epel/x86_64/filelists_db       FAILED                                          07 ETA 
  (12/13): epel/x86_64/other_db                                  | 4.1 MB  00:08:03     
  (13/13): epel/x86_64/filelists_db                              |  15 MB  00:05:49     
  元数据缓存已建立
  ​
  ​

六、容器之间的依赖

容器域名

容器的ip不稳定

加link模块

  
  --link  容器名:别名
  
  [root@docker ~]# docker ps -all
  CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
  [root@docker ~]# docker run -d --name m0 -e MYSQL_ROOT_PASSWORD=root mysql:latest 
  e6390afa961b4a3d8a3b3ff1e204073c0af4c8fed96198441d58f775e982c1e1
  [root@docker ~]# docker inspect m0
                      "Gateway": "172.17.0.1",
                      "IPAddress": "172.17.0.2",
                      "IPPrefixLen": 16,
                      "IPv6Gateway": "",
                      "GlobalIPv6Address": "",
                      "GlobalIPv6PrefixLen": 0,
                      "DriverOpts": null,
                      "DNSNames": null
              
  [root@docker ~]# docker run -it --name c0 --link m0:mysqldb centos:latest  /bin/bash
  ​
  [root@6c8098650212 /]# ping mysqldb
  PING mysqldb (172.17.0.2) 56(84) bytes of data.
  64 bytes from mysqldb (172.17.0.2): icmp_seq=1 ttl=64 time=0.063 ms
  64 bytes from mysqldb (172.17.0.2): icmp_seq=2 ttl=64 time=0.081 ms
  ^C
  --- mysqldb ping statistics ---
  2 packets transmitted, 2 received, 0% packet loss, time 1002ms
  rtt min/avg/max/mdev = 0.063/0.072/0.081/0.009 ms
  [root@6c8098650212 /]# cat etc/hosts
  127.0.0.1   localhost
  ::1   localhost ip6-localhost ip6-loopback
  fe00::0  ip6-localnet
  ff00::0  ip6-mcastprefix
  ff02::1  ip6-allnodes
  ff02::2  ip6-allrouters
  172.17.0.2  mysqldb e6390afa961b m0
  172.17.0.3  6c8098650212
  [root@6c8098650212 /]# [root@docker ~]# 
  [root@docker ~]# docker ps --all
  CONTAINER ID   IMAGE           COMMAND                   CREATED         STATUS         PORTS                 NAMES
  6c8098650212   centos:latest   "/bin/bash"               3 minutes ago   Up 3 minutes                         c0
  e6390afa961b   mysql:latest    "docker-entrypoint.s…"   5 minutes ago   Up 5 minutes   3306/tcp, 33060/tcp   m0
  [root@docker ~]# docker stop m0
  m0
  [root@docker ~]# docker run -it --name c1 centos:latest  /bin/bash
  [root@337a08b8a20a /]# [root@docker ~]# 
  [root@docker ~]# docker inspect c1
                      "Gateway": "172.17.0.1",
                      "IPAddress": "172.17.0.2",
                      "IPPrefixLen": 16,
                      "IPv6Gateway": "",
                      "GlobalIPv6Address": "",
                      "GlobalIPv6PrefixLen": 0,
                      "DriverOpts": null,
                      "DNSNames": null
  [root@docker ~]# docker start m0
  m0
  [root@docker ~]# docker inspect m0
                      "Gateway": "172.17.0.1",
                      "IPAddress": "172.17.0.4",
                      "IPPrefixLen": 16,
                      "IPv6Gateway": "",
                      "GlobalIPv6Address": "",
                      "GlobalIPv6PrefixLen": 0,
                      "DriverOpts": null,
                      "DNSNames": null
  [root@docker ~]# docker attach c0
  [root@6c8098650212 /]# ping mysqldb
  PING mysqldb (172.17.0.4) 56(84) bytes of data.
  64 bytes from mysqldb (172.17.0.4): icmp_seq=1 ttl=64 time=0.111 ms
  64 bytes from mysqldb (172.17.0.4): icmp_seq=2 ttl=64 time=0.052 ms
  64 bytes from mysqldb (172.17.0.4): icmp_seq=3 ttl=64 time=0.101 ms
  ^C
  --- mysqldb ping statistics ---
  3 packets transmitted, 3 received, 0% packet loss, time 2000ms
  rtt min/avg/max/mdev = 0.052/0.088/0.111/0.025 ms
  [root@6c8098650212 /]# cat etc/hosts
  127.0.0.1   localhost
  ::1   localhost ip6-localhost ip6-loopback
  fe00::0  ip6-localnet
  ff00::0  ip6-mcastprefix
  ff02::1  ip6-allnodes
  ff02::2  ip6-allrouters
  172.17.0.4  mysqldb e6390afa961b m0
  172.17.0.3  6c8098650212
  [root@6c8098650212 /]# read escape sequence
  [root@docker ~]# docker ps --all
  CONTAINER ID   IMAGE           COMMAND                   CREATED          STATUS         PORTS                 NAMES
  337a08b8a20a   centos:latest   "/bin/bash"               5 minutes ago    Up 5 minutes                         c1
  6c8098650212   centos:latest   "/bin/bash"               9 minutes ago    Up 9 minutes                         c0
  e6390afa961b   mysql:latest    "docker-entrypoint.s…"   11 minutes ago   Up 3 minutes   3306/tcp, 33060/tcp   m0
  [root@docker ~]# docker stop c0
  c0
  [root@docker ~]# docker stop c1
  c1
  [root@docker ~]# docker stop m0
  m0
  ​
  # 因为c0依赖m0,所以先启动被依赖的
  [root@docker ~]# docker start c0
  Error response from daemon: Cannot link to a non running container: /m0 AS /c0/mysqldb
  Error: failed to start containers: c0
  ​
  # 先启动被依赖的容器
  [root@docker ~]# docker start m0
  m0
  ​
  # 再启动主动依赖的容器
  [root@docker ~]# docker start c0
  c0

小结:docker容器的ip地址不固定,如果要作为服务器使用,就必须能够直接访问服务,不能直接使用ip,为容器设置域名,做端口映射也能保证,确定是一旦停用之后端口被占用,就无法再次启动了

2.doker run --link ,容器的名称或者是id:自定义域名

3.被link容器必须处于启动状态,否则当前容器无法启

七、docker文件

 

  
  [root@docker ~]# systemctl stop docker
  Warning: Stopping docker.service, but it can still be activated by:
    docker.socket
  [root@docker ~]# cd /var/lib/docker/
  [root@docker docker]# ls
  buildkit    engine-id  network   plugins   swarm  volumes
  containers  image      overlay2  runtimes  tmp
  [root@docker docker]# cd overlay2/
  [root@docker overlay2]# ls
  00332a9bd8355d76ca2d7273fc36abc55005c3f7e9ea99de4f28cc0f8d671c70
  0e3f2d728c00d19f087019b9c153cb64e545733396b74552ba291cba3bfd0179
  2fd26d35d6b387e52918f623dd35ebf137bdf660811fca395878d0f1a8cb0cb2
  4448856ec7b6f553a449484292e7d7e428146e741b0443eae3bbddecc8d8954a
  4448856ec7b6f553a449484292e7d7e428146e741b0443eae3bbddecc8d8954a-init
  45a913457c95069ec4ee6c661fed0550de5e47264d04dc87975125bc4e97028f
  60266e2b47ee1c7aae2cd1357f4dc5cac79042838a826fe1f9614dca8a8f948a
  629bd34c6a92d5cb2b14fbbde998e2ad8e1fa3082d606589711d19781aabd43d
  6f4cc31b4373e6edc88448de17eadcb7305279a61426b6463ff73e36f128e9a4
  7b1ebd4b9c0adff07edfe76ff1a9ee30cf8800086dd955e923d3de349a59e6ad
  7b1ebd4b9c0adff07edfe76ff1a9ee30cf8800086dd955e923d3de349a59e6ad-init
  8cc2d6fcd7fd4102bbc47d61e2c804bfe3df6e945ba1ab09958dfbb9d51b35d1
  8cc2d6fcd7fd4102bbc47d61e2c804bfe3df6e945ba1ab09958dfbb9d51b35d1-init
  98021934d740dcde71e3cc6f1b6e6d2d4ccb829100600fec612e186fedf6ca02
  9c7e62ffb3fa89bc9cc947020fd8c94a2b09401aa0ace4748bbef9f9cca8da4f
  a2a47749e86aded67a82094e63c639a43bcb48c83e561cbb8096fb04fa11d23c
  backingFsBlockDev
  c1276ed5fa7657bf06ab97225ac522057bfbe0532db3b733455d3fa68d44344a
  c1276ed5fa7657bf06ab97225ac522057bfbe0532db3b733455d3fa68d44344a-init
  c69ce12a6a86fbf63f1efbc20aa7a1609834a2bb66b665b4c1c28e2ecc8ce886
  d7985a6af5f182bf09f004ad9cbd578d3b2775821c4d1569ca10bdc9390dbea9
  eed0e720b5b09a7840b16e666f10bd2bb16d00dc465cf414fd72bdf3c6fd9f49
  eed0e720b5b09a7840b16e666f10bd2bb16d00dc465cf414fd72bdf3c6fd9f49-init
  f538b28aac30b79bd465d6628306db7cf148b227b987a2fdead5b1f9aae6f16d
  f9271f08918724184b1bdb5c22157def0fb7ac8569a59de9df953e1d79d32092
  l
  [root@docker overlay2]# cd
  [root@docker ~]# rm -rf /var/lib/docker/
  [root@docker ~]# systemctl start docker
  [root@docker ~]# ls /var/lib/docker/
  buildkit    engine-id  network   plugins   swarm  volumes
  containers  image      overlay2  runtimes  tmp
  [root@docker ~]# docker images
  REPOSITORY   TAG       IMAGE ID   CREATED   SIZE
  [root@docker ~]# docker ps --all
  CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
  [root@docker ~]# ls /var/lib/docker/overlay2/
  backingFsBlockDev  l
  [root@docker ~]# docker pull centos
  Using default tag: latest
  latest: Pulling from library/centos
  a1d0c7532777: Pull complete 
  Digest: sha256:a27fd8080b517143cbbbab9dfb7c8571c40d67d534bbdee55bd6c473f432b177
  Status: Downloaded newer image for centos:latest
  docker.io/library/centos:latest
  [root@docker ~]# ls /var/lib/docker/overlay2/
  951ab11df405924a3e43fc6b1f56b20b528152a937aaa863c6203305794520a5  l
  backingFsBlockDev
  [root@docker ~]# ls /var/lib/docker/overlay2/951ab11df405924a3e43fc6b1f56b20b528152a937aaa863c6203305794520a5/
  diff  link
  [root@docker ~]# ls /var/lib/docker/overlay2/951ab11df405924a3e43fc6b1f56b20b528152a937aaa863c6203305794520a5/diff
  bin  etc   lib    lost+found  mnt  proc  run   srv  tmp  var
  dev  home  lib64  media       opt  root  sbin  sys  usr
  [root@docker ~]# docker run -it --name c0 centos:latest /bin/bash
  [root@d854380d0f54 /]# [root@docker ~]# 
  [root@docker ~]# ls /var/lib/docker/overlay2/
  951ab11df405924a3e43fc6b1f56b20b528152a937aaa863c6203305794520a5
  backingFsBlockDev
  f893e9d148c1ca1c5ed9e950eb1217c2aef1b89457a7407ffcd35a51f67a99f7
  f893e9d148c1ca1c5ed9e950eb1217c2aef1b89457a7407ffcd35a51f67a99f7-init
  l
  [root@docker ~]# ls /var/lib/docker/overlay2/f893e9d148c1ca1c5ed9e950eb1217c2aef1b89457a7407ffcd35a51f67a99f7
  diff  link  lower  merged  work
  [root@docker ~]# docker exec c0 dd if=/dev/zero of=/zhangsan.txt bs=10M count=100
  100+0 records in
  100+0 records out
  1048576000 bytes (1.0 GB, 1000 MiB) copied, 1.16346 s, 901 MB/s
  [root@docker ~]# ls /var/lib/docker/overlay2/f893e9d148c1ca1c5ed9e950eb1217c2aef1b89457a7407ffcd35a51f67a99f7/merged/
  bin  etc   lib    lost+found  mnt  proc  run   srv  tmp  var
  dev  home  lib64  media       opt  root  sbin  sys  usr  zhangsan.txt
  [root@docker ~]# 
  ​

小结:

1.在docker daemon初始状态(没有状态的时候)/var/lib/docker不存在

2.当docker daemon服务器自启动创建docker目录

3.在没有镜像的情况下,查看overlay2这个目录是只有两个文件,管道文件,目录(管理镜像和容器的软链接的目录)

4.当我们pull一个镜像之后 /var/lib/docker/overlay2 下就有一个新的目录,这个目录就是镜像的基础目录,这个新的目录就是镜像,就是不可读的层

八、基础镜像制作

1.进程目录

  [root@localhost ~]# ls /proc/
  1     1531  279  385  5    657        crypto       kmsg          scsi
  10    1535  28   386  512  664        devices      kpagecount    self
  1014  1554  281  387  560  673        diskstats    kpageflags    slabinfo
  1016  16    282  388  562  677        dma          loadavg       softirqs
  1017  17    285  389  564  693        driver       locks         stat
  11    18    286  390  565  7          execdomains  mdstat        swaps
  1175  19    288  391  567  8          fb           meminfo       sys
  1181  2     29   392  569  88         filesystems  misc          sysrq-trigger
  1288  20    3    393  57   9          fs           modules       sysvipc
  13    21    30   394  574  acpi       interrupts   mounts        timer_list
  1316  263   359  40   578  asound     iomem        mpt           timer_stats
  14    265   360  41   616  buddyinfo  ioports      mtrr          tty
  15    268   370  42   639  bus        irq          net           uptime
  1506  27    371  44   642  cgroups    kallsyms     pagetypeinfo  version
  1511  275   38   460  643  cmdline    kcore        partitions    vmallocinfo
  1529  276   383  483  644  consoles   keys         sched_debug   vmstat
  1530  277   384  494  647  cpuinfo    key-users    schedstat     zoneinfo
  ​

2.sys目录是内核文件保存位置,不允许修改

  [root@localhost ~]# cd /sys/
  [root@localhost sys]# mkdir abc
  mkdir: 无法创建目录"abc": 不允许的操作
  [root@localhost sys]# 
  ​

3.排除以上两个目录

远程打包镜像

  [root@localhost~]# tar --numeric-owner --exclude=/proc --exclude=/sys -cvf haha.tar /
  ​
  # 将打包好的镜像传到docker主机上
  [root@localhost~]# scp haha.tar root@192.1638.2.30:~

4.加载镜像

  [root@docker ~]# ls
  anaconda-ks.cfg         haha.tar    
  [root@docker ~]# docker import -m "维护世界和平" haha.tar ha:v0

5.查看镜像

  [root@docker ~]# docker images

6.使用镜像创建容器

  
  [root@docker ~]# docker run -it --name ha01 ha:v0 /bin/bash
  [root@5eaf8dd31774 /]# ls
  bin  etc   lib   lost+found  mnt  proc  run   srv  tmp  var
  dev  home  lib64  media       opt  root  sbin  sys  usr
  [root@5eaf8dd31774 /]# cd
  [root@5eaf8dd31774 ~]# ls
  anaconda-ks.cfg  anaconda-post.log  original-ks.cfg
  [root@5eaf8dd31774 ~]# cd /etc/yum.repos.d/
  [root@5eaf8dd31774 yum.repos.d]# ls
  CentOS-Base.repo   epel-playground.repo       epel-testing.repo
  epel-modular.repo  epel-testing-modular.repo  epel.repo
  ​

九、应用镜像

将容器导出镜像-commit

  [root@docker ~]# ls /var/lib/docker/overlay2/
  951ab11df405924a3e43fc6b1f56b20b528152a937aaa863c6203305794520a5  l
  backingFsBlockDev
  [root@docker ~]# docker run -it --name c0 centos:latest /bin/bash
  ​
  [root@200554f77ada /]# rm -rf /etc/yum.repos.d/*
  [root@200554f77ada /]# curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo
    % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                   Dload  Upload   Total   Spent    Left  Speed
  100  2495  100  2495    0     0   4137      0 --:--:-- --:--:-- --:--:--  4130
  [root@200554f77ada /]# yum clean all && yum makecache
  Failed to set locale, defaulting to C.UTF-8
  0 files removed
  Failed to set locale, defaulting to C.UTF-8
  CentOS-8.5.2111 - Base - mirrors.aliyun.com           591 kB/s | 4.6 MB     00:07    
  CentOS-8.5.2111 - Extras - mirrors.aliyun.com         9.7 kB/s |  10 kB     00:01    
  CentOS-8.5.2111 - AppStream - mirrors.aliyun.com      406 kB/s | 8.4 MB     00:21    
  Metadata cache created.
  [root@200554f77ada /]# yum -y install epel-release
  [root@200554f77ada /]# yum -y install httpd 
  [root@200554f77ada /]# [root@docker ~]# 
  [root@docker ~]# docker commit c0 centos:httpd
  sha256:5fa4e3480590e0548419b770a52acf565729c1795cba386315a484e05a5c1e4d
  [root@docker ~]# ls /var/lib/docker/overlay2/
  4364fe8cf78dd976b842e3d6f7832640b8fd624928665cff2fa4b3d57506490c
  951ab11df405924a3e43fc6b1f56b20b528152a937aaa863c6203305794520a5
  backingFsBlockDev
  d94e1199536123c1dfb61d7de10b9d599898e59bf627005939d8392cb1da526f
  d94e1199536123c1dfb61d7de10b9d599898e59bf627005939d8392cb1da526f-init
  l
  [root@docker ~]# docker stop c0
  c0
  [root@docker ~]# ls /var/lib/docker/overlay2/
  4364fe8cf78dd976b842e3d6f7832640b8fd624928665cff2fa4b3d57506490c
  951ab11df405924a3e43fc6b1f56b20b528152a937aaa863c6203305794520a5
  backingFsBlockDev
  d94e1199536123c1dfb61d7de10b9d599898e59bf627005939d8392cb1da526f
  d94e1199536123c1dfb61d7de10b9d599898e59bf627005939d8392cb1da526f-init
  l
  [root@docker ~]# docker rmi c0
  Error response from daemon: No such image: c0:latest
  [root@docker ~]# docker rm c0
  c0
  [root@docker ~]# ls /var/lib/docker/overlay2/
  4364fe8cf78dd976b842e3d6f7832640b8fd624928665cff2fa4b3d57506490c  backingFsBlockDev
  951ab11df405924a3e43fc6b1f56b20b528152a937aaa863c6203305794520a5  l
  [root@docker ~]# docker images
  REPOSITORY   TAG       IMAGE ID       CREATED              SIZE
  centos       httpd     5fa4e3480590   About a minute ago   320MB
  centos       latest    5d0da3dc9764   2 years ago          231MB
  [root@docker ~]# ls /var/lib/docker/overlay2/4364fe8cf78dd976b842e3d6f7832640b8fd624928665cff2fa4b3d57506490c/diff/
  etc  run  tmp  usr  var
  [root@docker ~]# ls /var/lib/docker/overlay2/4364fe8cf78dd976b842e3d6f7832640b8fd624928665cff2fa4b3d57506490c/diff/etc/yum.repos.d/
  CentOS-Base.repo                     CentOS-Linux-Media.repo
  CentOS-Linux-AppStream.repo          CentOS-Linux-Plus.repo
  CentOS-Linux-BaseOS.repo             CentOS-Linux-PowerTools.repo
  CentOS-Linux-ContinuousRelease.repo  CentOS-Linux-Sources.repo
  CentOS-Linux-Debuginfo.repo          epel-modular.repo
  CentOS-Linux-Devel.repo              epel-playground.repo
  CentOS-Linux-Extras.repo             epel.repo
  CentOS-Linux-FastTrack.repo          epel-testing-modular.repo
  CentOS-Linux-HighAvailability.repo   epel-testing.repo
  ​

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Furion+SqlSugar环境配置与项目创建

一、速通一图流 二、安装 .NET 8 1. 下载与安装 .NET 8 SDK 访问 .NET 下载页面 并下载最新版本的 .NET 8 SDK。根据操作系统选择适合的安装包&#xff08;如 Windows、macOS 或 Linux&#xff09;&#xff0c;并按照提示完成安装。 2. 验证安装 打开终端或命令提示符&…

SpringMVC - 第一个 SpringMVC 程序

MVC: 模块 视图 控制器 的简写&#xff0c;表示层 属于 C V&#xff0c;业务层和逻辑层属于 M SpringMVC 是对 web 使用的一套框架&#xff0c;可以更加快捷高效的管理 web应用 所有的请求都会经过 DispatcherServlet 这一个 Servlet 支持 IoC 和 AOP 统一处理请求 可以解析多…

找工作——行秋24届求职面试经验汇总

前言 求职记录&#xff1a;本人bg双9&#xff08;末流&#xff09;&#xff0c;共投岗位200&#xff0c;收到5个offer&#xff0c;求职方向偏向于国企&#xff0c;求职城市青睐新一线城市。个人求职记录 (qq.com)https://docs.qq.com/sheet/DSlBBVWRKZVZ5TWlD?tabBB08J2&…

C 06 编译4阶段

c语言编译的4个阶段&#xff1a;预处理、 编译、 汇编、 链接 预处理阶段会在源代码中查找预编译指令&#xff0c;其中主要是头文件展开&#xff08;include)&#xff0c;宏定义&#xff08;defind&#xff09;&#xff0c;选择性编译&#xff08;ifdef&#xff09;三种指令 预…

Claude 3.5 Sonnet引入了LaTeX公式渲染功能!!

终于&#xff0c;Claude 也引入了LaTeX公式渲染功能&#xff0c;消息一出&#xff0c;评论区的网友们热议不断。 【最新版】手把手Claude 3.5 Sonnet 详细步骤注册方法&#xff01;_claude 3.5 sonnet 注册 早在 ChatGPT 率先支持 LaTeX 语言用于输入和显示数学公式时&#xf…

[从0开始AIGC][LLM]:LLM中Encoder-Only or Decoder-Only?为什么主流LLM是Decoder-Only?

LLM中Encoder-Only or Decoder-Only & 为什么主流LLM是Decoder-Only&#xff1f; 文章目录 LLM中Encoder-Only or Decoder-Only & 为什么主流LLM是Decoder-Only&#xff1f;1. 什么是Encoder-only、Decoder-Only2. 为什么当前主流的LLM都是Decoder-only的架构低秩问题 …

欧瑞康oerlikon PECVD 系统 KAI MT R1.0 模块化 操作说明

欧瑞康oerlikon PECVD 系统 KAI MT R1.0 模块化 操作说明

HTML5手机端通用网站模板源码

文章目录 1.设计来源1.1 主界面1.2 文章信息界面1.3 文章列表界面1.4 双列文章列表界面1.5 通用标签界面1.6 联系我界面1.7 折叠框标签界面1.8 相关界面 2.效果和源码2.1 动态效果2.2 源代码 源码下载万套模板&#xff0c;程序开发&#xff0c;在线开发&#xff0c;在线沟通 作…

如何给笔记本或台式机顺利升级内存条

先查一下主板还有无剩下卡槽 win r 输入命令 taskmgr 调用后台查看 获取两个关键信息 速度 2666MHZ &#xff0c;卡槽 2/4 意味着还剩下两个空卡槽 接下来 用鲁大师纯净版查一下主板型号 鲁大师 v5.21.1300 绿色纯净版 - 果核剥壳 (ghxi.com) 查完之后&#xff0…

如何使用双重IP代理实现更安全的网络访问

在进行网络爬虫或其他需要隐匿真实IP的操作时&#xff0c;单一的代理IP有时并不能完全满足我们的需求。为了进一步提高安全性和隐私保护&#xff0c;我们可以使用双重IP代理。本文将详细介绍如何使用Java实现双重IP代理&#xff0c;帮助你在网络环境中更加游刃有余。 什么是双重…

TOMCAT “tom小猫”向你招手!!赶紧学起来!

一、WEB技术 1.1HTTP协议和B/S 结构 操作系统有进程子系统&#xff0c;使用多进程就可以充分利用硬件资源。进程中可以多个线程&#xff0c;每一个线程可以被CPU调度执行&#xff0c;这样就可以让程序并行的执行。这样一台主机就可以作为一个服务器为多个客户端提供计算服务。…

文件系统 -文件的基本了解

文章目录 一、文件的基本了解1. 文件 内容 属性2. 文件被访问之前&#xff0c;要被打开3. 谁在打开文件&#xff1f; 二、fopen()w 方式打开文件① 基本使用&#xff1a;② 标准重定向&#xff1a; a 方式打开文件① 基本使用&#xff1a;② 重定向&#xff1a; fopen&#x…

Runtime:源码解析Golang 的map实现原理

go version 1.15.6 map作为一种常见的 key-value 数据结构&#xff0c;不同语言的实现原理基本差不多。首先在系统里分配一段连接的内存地址作为数组&#xff0c;然后通过对map键进行hash算法(最终将键转换成了一个整型数字)定位到不同的桶bucket(数组的索引位置)&#xff0c;然…

【国产游戏行业的崛起与挑战:技术革新与全球市场机遇】

近年来&#xff0c;国产游戏行业确实取得了显著的发展&#xff0c;不仅在技术水平上不断提升&#xff0c;而且在国际市场上也崭露头角。然而&#xff0c;面对全球游戏市场的激烈竞争&#xff0c;国产游戏技术仍面临一些挑战和机遇。 首先&#xff0c;国产游戏在原创IP方面存在…

Autodesk系列软件批量激活工具出现许可证管理器版本不被支持问题解决方案!

使用Autodesk系列软件批量激活工具时&#xff0c;如果出现许可证管理器版本不被支持。 解决办法&#xff1a; 1、确定您安装的最高Autodesk软件版本。 例如&#xff0c;如果您同时安装了AutoCAD2020和Inventor 2022,那么您应该下载2022版对应的AdskLicensing。 说明&#xf…

汽车信息安全--攻破SecOC,就在今天!

目录 1.SecOC和系统安全&#xff1f; 2.破解实录 2.1 破解安全访问授权 2.2 程序控制的漏洞 3.小结 2020年左右&#xff0c;汽车信息安全开始在业内普及。 对于这种新概念&#xff0c;部分OEM仍采取以往开发模式&#xff0c;在不影响软件架构的大背景下&#xff0c;直接进…

企业级NoSql数据库Redis集群

一、关系型数据库和 NoSQL 数据库 1.1 数据库主要分为两大类&#xff1a;关系型数据库与 NoSQL 数据库 关系型数据库&#xff0c;是建立在关系模型基础上的数据库&#xff0c;其借助于集合代数等数学概念和方法来处理数据库中的数据主流的 MySQL、Oracle、MS SQL Server 和 …

OpenHarmony中的fastjson gson应该这样用

【问题背景】 随着越来越多的开发者开始投入北向应用的开发&#xff0c;无数的人开始问我&#xff1a;鸿蒙三方库是否有fastjson&#xff0c;是否有gson&#xff0c;当前json和对象的转换要怎么搞。 作为程序员&#xff0c;我的每个项目都逃不掉fastjson/gson等三方库&#x…

C++基础知识5 string

string 1. string类1.1 C语言中的字符串 2. 标准库中的string类2.1 string类(了解)2.2 auto和范围for2.3 string类的常用接口说明 3. string类对象的访问及遍历操作4. string类对象的修改操作5. string类非成员函数6. vs和g下string结构的说明7. string类的模拟实现8.写时拷贝(…

认知杂谈35

今天分享 有人说的一段争议性的话 I 《日常藏宝&#xff0c;多留意》 嘿&#xff0c;你想想看哈&#xff0c;生活里那些让咱佩服得不行的小窍门&#xff0c;其实都藏在咱平常的小事儿里呢。 I 就好比啊&#xff0c;很多有用的道理其实就在咱身边晃悠&#xff0c;就看咱有没有…