8.23-docker基础命令学习

docker

1.docker容器

  [root@docker ~]# systemctl start docker
  [root@docker ~]# docker images
  REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
  centos       latest    5d0da3dc9764   2 years ago   231MB
  ​
  # 容器执行完就退出了
  ​
  [root@docker ~]# docker run -it --name=a0 centos:latest echo "abc"
  abc
  ​
  # 没有正在运行的进程
  ​
  [root@docker ~]# docker ps 
  CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
  ​
  # 容器已经创建了,但是是exiting状态
  ​
  [root@docker ~]# docker ps --all
  CONTAINER ID   IMAGE           COMMAND       CREATED          STATUS                        PORTS     NAMES
  ba5a978343c1   centos:latest   "echo abc"    34 seconds ago   Exited (0) 33 seconds ago               a0
  21d6b0b5e067   centos:latest   "/bin/bash"   19 hours ago     Exited (255) 17 minutes ago             c1
  ​
  # 启动a0容器
  [root@docker ~]# docker start a0
  a0
  ​
  # a0容器没有启动成功
  ​
  [root@docker ~]# docker ps
  CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
  ​
  # 删除容器
  ​
  [root@docker ~]# docker rm a0
  a0
  [root@docker ~]# docker ps -all
  CONTAINER ID   IMAGE           COMMAND       CREATED        STATUS                        PORTS     NAMES
  21d6b0b5e067   centos:latest   "/bin/bash"   19 hours ago   Exited (255) 26 minutes ago             c1
  [root@docker ~]# docker start c1
  c1
  [root@docker ~]# docker ps
  CONTAINER ID   IMAGE           COMMAND       CREATED        STATUS         PORTS     NAMES
  21d6b0b5e067   centos:latest   "/bin/bash"   19 hours ago   Up 4 seconds             c1
  ​
  [root@docker ~]# docker attach c1
  [root@21d6b0b5e067 /]# 
  ​
  # ctrl+p+q退出容器但不中断进程
  ​
  [root@21d6b0b5e067 /]# curl localhostread escape sequence
  ​
  # 进程一直在
  ​
  [root@docker ~]# docker ps
  CONTAINER ID   IMAGE           COMMAND       CREATED        STATUS         PORTS     NAMES
  21d6b0b5e067   centos:latest   "/bin/bash"   19 hours ago   Up 4 minutes             c1
  ​
  # 容器进程运行的时候删不掉
  [root@docker ~]# docker rm c1
  Error response from daemon: cannot remove container "/c1": container is running: stop the container before removing or force remove
  ​
  # 帮助指令
  ​
  docker --help

2.镜像打包

  
  # 查看现有镜像
  [root@docker ~]# docker images
  REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
  centos       latest    5d0da3dc9764   2 years ago   231MB
  ​
  # 将镜像保存为一个tar包
  [root@docker ~]# docker save -o centos.tar centos:latest 
  ​
  # 打包镜像成功
  [root@docker ~]# ls
  anaconda-ks.cfg  centos.tar

3.删除镜像

  
  [root@docker ~]# docker ps
  CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
  [root@docker ~]# docker ps --all
  CONTAINER ID   IMAGE           COMMAND       CREATED        STATUS                      PORTS     NAMES
  21d6b0b5e067   centos:latest   "/bin/bash"   20 hours ago   Exited (0) 8 seconds ago              c1
  62dd0916fd92   centos:latest   "/bin/bash"   20 hours ago   Exited (127) 20 hours ago             c0
  ​
  # 如果有这个镜像生成的容器,就无法移除镜像
  [root@docker ~]# docker rmi centos:latest 
  Error response from daemon: conflict: unable to remove repository reference "centos:latest" (must force) - container 62dd0916fd92 is using its referenced image 5d0da3dc9764
  ​

4.删除容器

  
  # 删除容器,要退出容器up状态、
  [root@docker ~]# docker ps
  CONTAINER ID   IMAGE           COMMAND       CREATED        STATUS          PORTS     NAMES
  21d6b0b5e067   centos:latest   "/bin/bash"   20 hours ago   Up 44 minutes             c1
  ​
  [root@docker ~]# docker attach c1
  [root@21d6b0b5e067 /]# exit          
  exit
  ​
  ​
  # 使用docker ps --all确定没有镜像
  ​
  [root@docker ~]# docker ps --all
  CONTAINER ID   IMAGE           COMMAND       CREATED        STATUS                      PORTS     NAMES
  21d6b0b5e067   centos:latest   "/bin/bash"   20 hours ago   Exited (0) 6 minutes ago              c1
  62dd0916fd92   centos:latest   "/bin/bash"   20 hours ago   Exited (127) 20 hours ago             c0
  [root@docker ~]# docker rm c1
  c1
  [root@docker ~]# docker rm c0
  c0
  [root@docker ~]# docker ps --all
  CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
  ​

5.成功删除镜像

  
  [root@docker ~]# docker rmi centos:latest 
  Untagged: centos:latest
  Untagged: centos@sha256:a27fd8080b517143cbbbab9dfb7c8571c40d67d534bbdee55bd6c473f432b177
  Deleted: sha256:5d0da3dc976460b72c77d94c8a1ad043720b0416bfc16c52c45d4847e53fadb6
  Deleted: sha256:74ddd0ec08fa43d09f32636ba91a0a3053b02cb4627c35051aff89f853606b59
  [root@docker ~]# docker images
  REPOSITORY   TAG       IMAGE ID   CREATED   SIZE
  ​

6.上传镜像

  
  [root@docker ~]# ls
  anaconda-ks.cfg  centos.tar
  [root@docker ~]# docker load -i centos.tar 
  74ddd0ec08fa: Loading layer  238.6MB/238.6MB
  Loaded image: centos:latest
  [root@docker ~]# docker images
  REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
  centos       latest    5d0da3dc9764   2 years ago   231MB
  ​

7.打包配置好阿里云镜像的容器

  
  [root@docker ~]# docker ps --all
  CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
  [root@docker ~]# docker run -it --name c0 centos:latest /bin/bash
  ​
  [root@db931a8ef3c8 /]# cd /etc/yum.repos.d/
  [root@db931a8ef3c8 yum.repos.d]# ls
  CentOS-Linux-AppStream.repo        CentOS-Linux-FastTrack.repo
  CentOS-Linux-BaseOS.repo        CentOS-Linux-HighAvailability.repo
  CentOS-Linux-ContinuousRelease.repo  CentOS-Linux-Media.repo
  CentOS-Linux-Debuginfo.repo        CentOS-Linux-Plus.repo
  CentOS-Linux-Devel.repo         CentOS-Linux-PowerTools.repo
  CentOS-Linux-Extras.repo        CentOS-Linux-Sources.repo
  [root@db931a8ef3c8 yum.repos.d]# cd       
  [root@db931a8ef3c8 ~]# rm -rf /etc/yum.repos.d/*
  [root@db931a8ef3c8 ~]# 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
    0     0    0     0    0     0      0      0 --:--:--  0:01:06 --:--:--     0^C
  [root@db931a8ef3c8 ~]# 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    411      0  0:00:06  0:00:06 --:--:--   520
  [root@db931a8ef3c8 ~]# ls /etc/yum.repos.d/
  CentOS-Base.repo
  [root@db931a8ef3c8 ~]# 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           157 kB/s | 4.6 MB     00:29    
  CentOS-8.5.2111 - Extras - mirrors.aliyun.com         7.4 kB/s |  10 kB     00:01    
  CentOS-8.5.2111 - AppStream - mirrors.aliyun.com      140 kB/s | 8.4 MB     01:01    
  Metadata cache created.
  [root@db931a8ef3c8 ~]# yum -y install epel-release
  ​
  [root@db931a8ef3c8 ~]# # [root@docker ~]# 
  [root@docker ~]# docker ps --all
  CONTAINER ID   IMAGE           COMMAND       CREATED          STATUS          PORTS     NAMES
  db931a8ef3c8   centos:latest   "/bin/bash"   31 minutes ago   Up 30 minutes             c0
  [root@docker ~]# docker ps 
  CONTAINER ID   IMAGE           COMMAND       CREATED          STATUS          PORTS     NAMES
  db931a8ef3c8   centos:latest   "/bin/bash"   31 minutes ago   Up 31 minutes             c0
  ​
  # 从容器导出tar包
  [root@docker ~]# docker export -o centos_yum.tar c0 
  [root@docker ~]# ls
  anaconda-ks.cfg  centos.tar  centos_yum.tar

8.将带有阿里云镜像的容器的tar包导入成镜像

  
  [root@docker ~]# ls
  anaconda-ks.cfg  centos.tar  centos_yum.tar
  ​
  # 导入镜像
  [root@docker ~]# docker import -m yum centos_yum.tar centos:yum
  sha256:d79f0f2ff79e8b04b1eab2167c84d1723721af8139d92961de6bd66024487779
  ​
  ​
  [root@docker ~]# docker images
  REPOSITORY   TAG       IMAGE ID       CREATED          SIZE
  centos       yum       d79f0f2ff79e   20 seconds ago   260MB
  centos       latest    5d0da3dc9764   2 years ago      231MB
  ​

9.将配置好httpd服务的容器打包成镜像

  
  [root@docker ~]# docker stop c0
  c0
  [root@docker ~]# docker ps --all
  CONTAINER ID   IMAGE           COMMAND       CREATED          STATUS                     PORTS     NAMES
  db931a8ef3c8   centos:latest   "/bin/bash"   45 minutes ago   Exited (0) 8 seconds ago             c0
  ​
  [root@docker ~]# docker rm c0
  c0
  [root@docker ~]# docker ps --all
  CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
  [root@docker ~]# docker run -it --name c0 centos:yum /bin/bash
  [root@9a56387c522c /]# ls
  bin  etc   lib   lost+found  mnt  proc  run   srv  tmp  var
  dev  home  lib64  media       opt  root  sbin  sys  usr
  [root@9a56387c522c /]# ls /etc/yum.repos.d/
  CentOS-Base.repo   epel-playground.repo       epel-testing.repo
  epel-modular.repo  epel-testing-modular.repo  epel.repo
  [root@9a56387c522c /]# yum -y install httpd 
  ​
  [root@9a56387c522c /]# yum -y install net-tools
  ​
  [root@9a56387c522c /]# yum list installed|grep httpd
  Failed to set locale, defaulting to C.UTF-8
  centos-logos-httpd.noarch          85.8-2.el8                             @base     
  httpd.x86_64                       2.4.37-43.module_el8.5.0+1022+b541f3b1 @AppStream
  httpd-filesystem.noarch            2.4.37-43.module_el8.5.0+1022+b541f3b1 @AppStream
  httpd-tools.x86_64                 2.4.37-43.module_el8.5.0+1022+b541f3b1 @AppStream
  [root@9a56387c522c /]# echo "docker_httpd_server" > /var/www/html/index.html
  ​
  [root@9a56387c522c /]# httpd -k start
  AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using 172.17.0.2. Set the 'ServerName' directive globally to suppress this message
  [root@9a56387c522c /]# curl localhost
  docker_httpd_server
  [root@9a56387c522c /]# [root@docker ~]#                  
  [root@docker ~]# docker ps
  CONTAINER ID   IMAGE        COMMAND       CREATED         STATUS         PORTS     NAMES
  9a56387c522c   centos:yum   "/bin/bash"   5 minutes ago   Up 5 minutes             c0
  [root@docker ~]# docker export -o yum_httpd.tar c0
  [root@docker ~]# ls
  anaconda-ks.cfg  centos.tar  centos_yum.tar  yum_httpd.tar
  [root@docker ~]# docker import -m httpd yum_httpd.tar centos:httpd
  sha256:92dfb2054854eb00daf758c5c571dd89b458564afdf4039cc441f95d3aca64b9
  [root@docker ~]# docker images
  REPOSITORY   TAG       IMAGE ID       CREATED          SIZE
  centos       httpd     92dfb2054854   11 seconds ago   310MB
  centos       yum       d79f0f2ff79e   15 minutes ago   260MB
  centos       latest    5d0da3dc9764   2 years ago      231MB
  ​

10.使用配置好httpd环境的容器(打包成镜像)创建一个容器

创建的容器里也有httpd服务

  
  [root@docker ~]# docker run -it --name c2 centos:httpd /bin/bash
  ​
  [root@f71014720c36 /]# httpd -k start
  AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using 172.17.0.3. Set the 'ServerName' directive globally to suppress this message
  [root@f71014720c36 /]# curl localhost
  docker_httpd_server
  ​
  [root@f71014720c36 /]# 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)
          RX packets 8  bytes 648 (648.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
  ​
  lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
          inet 127.0.0.1  netmask 255.0.0.0
          inet6 ::1  prefixlen 128  scopeid 0x10<host>
          loop  txqueuelen 1000  (Local Loopback)
          RX packets 12  bytes 1011 (1011.0 B)
          RX errors 0  dropped 0  overruns 0  frame 0
          TX packets 12  bytes 1011 (1011.0 B)
          TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
  ​
  [root@f71014720c36 /]# [root@docker ~]# ping 172.17.0.3
  PING 172.17.0.3 (172.17.0.3) 56(84) bytes of data.
  64 bytes from 172.17.0.3: icmp_seq=1 ttl=64 time=0.208 ms
  64 bytes from 172.17.0.3: icmp_seq=2 ttl=64 time=0.138 ms
  ^C
  --- 172.17.0.3 ping statistics ---
  2 packets transmitted, 2 received, 0% packet loss, time 999ms
  rtt min/avg/max/mdev = 0.138/0.173/0.208/0.035 ms
  [root@docker ~]# docker ps
  CONTAINER ID   IMAGE          COMMAND       CREATED         STATUS         PORTS     NAMES
  f71014720c36   centos:httpd   "/bin/bash"   3 minutes ago   Up 3 minutes             c2
  9a56387c522c   centos:yum     "/bin/bash"   3 hours ago     Up 3 hours               c0
  [root@docker ~]# docker ps -all
  CONTAINER ID   IMAGE          COMMAND       CREATED         STATUS         PORTS     NAMES
  f71014720c36   centos:httpd   "/bin/bash"   3 minutes ago   Up 3 minutes             c2
  ​
  [root@docker ~]# curl 172.17.0.3
  docker_httpd_server
  ​

11.查看ip地址

(1)进入到容器,使用指令

  
  [root@docker ~]# docker start c2
  c2
  [root@docker ~]# docker attach c2
  [root@f71014720c36 /]# yum -y install net-tools,iprout
  [root@f71014720c36 /]# ip a s
  [root@f71014720c36 /]# ifconfigread escape sequence
  [root@f71014720c36 /]# ifconfig
  ​

(2)使用docker指令·inspect

  
  [root@docker ~]# docker inspect c2​

(3)在外部调用指令

  
  [root@docker ~]# docker exec c2 ifconfig
  [root@docker ~]# docker exec c0 ip a
  ​

(4)联系测试 使用exec创建一个文件

  
  [root@docker ~]# docker exec c2 touch /opt/test.txt
  [root@docker ~]# docker exec c2 ls /opt
  test.txt
  ​

12.端口映射

(1)指定端口映射

将容器中的80端口映射到宿主机(docker主机)80端口

  
  ​
  [root@docker ~]# docker run -it --name c1 -p80:80/tcp centos:httpd /bin/bash
  [root@7d2073518aef /]# curl 172.17.0.2
  docker_httpd_server
  [root@7d2073518aef /]# curl localhost 
  curl: (7) Failed to connect to localhost port 80: Connection refused
  [root@7d2073518aef /]# httpd -k start
  AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using 172.17.0.4. Set the 'ServerName' directive globally to suppress this message
  [root@7d2073518aef /]# curl localhost
  docker_httpd_server
  ​
  ​

  
  [root@docker ~]# docker run -it --name c4 -p12345:80 centos:httpd /bin/bash
  [root@f1383acb6cb2 /]# curl localhost
  curl: (7) Failed to connect to localhost port 80: Connection refused
  [root@f1383acb6cb2 /]# httpd -k start
  AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using 172.17.0.2. Set the 'ServerName' directive globally to suppress this message
  [root@f1383acb6cb2 /]# curl localhost
  docker_httpd_server
  [root@f1383acb6cb2 /]# [root@docker ~]# 
  [root@docker ~]# docker ps
  CONTAINER ID   IMAGE          COMMAND       CREATED              STATUS              PORTS                                     NAMES
  f1383acb6cb2   centos:httpd   "/bin/bash"   About a minute ago   Up About a minute   0.0.0.0:12345->80/tcp, :::12345->80/tcp   c4
  ​

(2).随机端口映射

  [root@docker ~]# docker run -it --name c5 -p80 centos:httpd /bin/bash
  [root@40f35d8764f6 /]# httpd -k start
  AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using 172.17.0.3. Set the 'ServerName' directive globally to suppress this message
  [root@40f35d8764f6 /]# curl localhost
  docker_httpd_server
  [root@40f35d8764f6 /]# [root@docker ~]# 
  [root@docker ~]# docker ps
  CONTAINER ID   IMAGE          COMMAND       CREATED          STATUS          PORTS                                     NAMES
  40f35d8764f6   centos:httpd   "/bin/bash"   46 seconds ago   Up 45 seconds   0.0.0.0:32768->80/tcp, :::32768->80/tcp   c5
  f1383acb6cb2   centos:httpd   "/bin/bash"   4 minutes ago    Up 4 minutes    0.0.0.0:12345->80/tcp, :::12345->80/tcp   c4
  ​

(3)通过其他的ip地址的端口映射容器的端口

  [root@docker ~]# ifconfig ens33:0 192.168.2.31 broadcast 192.168.2.31 netmask 255.255.255.255 up
  [root@docker ~]# docker run -it --name c6 -p192.168.2.31::80 centos:httpd /bin/bash
  [root@e6177cbb3400 /]# httpd -k start
  AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using 172.17.0.4. Set the 'ServerName' directive globally to suppress this message
  [root@e6177cbb3400 /]# curl localhost
  docker_httpd_server
  [root@e6177cbb3400 /]# [root@docker ~]# 
  [root@docker ~]# docker ps
  CONTAINER ID   IMAGE          COMMAND       CREATED          STATUS          PORTS                                     NAMES
  e6177cbb3400   centos:httpd   "/bin/bash"   48 seconds ago   Up 47 seconds   192.168.2.31:32769->80/tcp                c6
  40f35d8764f6   centos:httpd   "/bin/bash"   7 minutes ago    Up 7 minutes    0.0.0.0:32768->80/tcp, :::32768->80/tcp   c5
  f1383acb6cb2   centos:httpd   "/bin/bash"   11 minutes ago   Up 11 minutes   0.0.0.0:12345->80/tcp, :::12345->80/tcp   c4
  ​

13.卷的映射

  
  [root@docker ~]# mkdir /source
  [root@docker ~]# ls /
  bin   dev  home  lib64  mnt  proc  run   source  sys  usr
  boot  etc  lib   media  opt  root  sbin  srv     tmp  var
  ​
  ​
  [root@docker ~]# docker run -it --name c3 -v /source:/data centos:httpd /bin/bash
  [root@a41482a44fd1 /]# ls
  bin   dev  home  lib64       media  opt   root  sbin  sys  usr
  data  etc  lib  lost+found  mnt    proc  run srv   tmp  var
  # ctrl +p +q 退出容器不中断容器的进程
  ​
  [root@a41482a44fd1 /]# [root@docker ~]# 
  # 在宿主机器上的共享目录里创建文件
  [root@docker ~]# touch /source/wangchuqin
  ​
  # 宿主机中创建的文件会共享到容器的data目录中
  [root@docker ~]# docker exec c3 ls /data
  wangchuqin
  ​

14.总结:

1.镜像的迁移

​(1).打包

  docker save -o centos.tar centos:latest

​(2).加载

  docker load -i  centos.tar
  ​
  docker images

​(3).删除镜像

  docker rmi centos:latest

2.创建镜像

​(1).创建容器

  docker run -it --name c0 centos:latest /bin/bash

​(2).下载阿里云仓库

  epel
  ​
  ctrl p q

​(3).容器打包

  docker export -o centos_yum.tar c0

​(4).引入镜像

  docker import  -m "update yum repo" centos_yum.tar centos:yum
  ​
  docker image ls

3.ip网络

​(1).交互式

  docker start c0
  ​
  docker attach c0
  ​
  yum -y install iproute
  ​
  ip a

​(2).inspect

  docker inspect c0

​(3).exec

  docker exec c0 yum -y install net-tools
  ​
  docker exec c0 ifconfig

4.端口

​(1).指定端口映射

  docker run -it --name c0 -p70:80 centos:httpd /bin/bash

​(2).随机端口映射

  docker run -it --name c1 -p80 centos:httpd /bin/bash

​(3).指定其他ip的端口映射

  ifconfig ens33:0 192.168.2.71.51 broadcast 192.168.71.21 netmask 255.255.255.255  up
  ​
  docker run -it --name c2 -p192.168.71.51::80 centos:httpd /bin/bash 

5.持久化

挂载

  docker run -it --name c3 -v /adc:/def centos:httpd /bin/bash
  ​
  touch /abc/aaa.txt
  ​
  docker exec c3 ls /def

  • 24
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值