Docker续1:

一、打包传输

1.打包

[root@localhost ~]# systemctl start docker
[root@localhost ~]# docker save -o centos.tar centos:latest 
[root@localhost ~]# ls
anaconda-ks.cfg  centos.tar

2.传输

[root@localhost ~]# scp centos.tar root@192.168.1.100:/root

3.删除镜像

[root@localhost ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
centos       latest    5d0da3dc9764   2 years ago   231MB
[root@localhost ~]# docker start c0                   //启动容器
c0
[root@localhost ~]# docker attach c0                     //进入容器
[root@207ca7680ecc /]# exit
exit
[root@localhost ~]# docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
[root@localhost ~]# docker ps --all                         //查看全部
CONTAINER ID   IMAGE           COMMAND       CREATED        STATUS                     PORTS     NAMES
207ca7680ecc   centos:latest   "/bin/bash"   20 hours ago   Exited (0) 4 seconds ago             c0
[root@localhost ~]# docker rmi centos:latest                               //这里看到没有删掉,因为有容器正在使用
Error response from daemon: conflict: unable to remove repository reference "centos:latest" (must force) - container 207ca7680ecc is using its referenced image 5d0da3dc9764
[root@localhost ~]# docker rm c0                                  //删除容器
c0
[root@localhost ~]# docker ps --all
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
[root@localhost ~]# docker rmi centos:latest                                   //成功删除
Untagged: centos:latest
Untagged: centos@sha256:a27fd8080b517143cbbbab9dfb7c8571c40d67d534bbdee55bd6c473f432b177
Deleted: sha256:5d0da3dc976460b72c77d94c8a1ad043720b0416bfc16c52c45d4847e53fadb6
Deleted: sha256:74ddd0ec08fa43d09f32636ba91a0a3053b02cb4627c35051aff89f853606b59
[root@localhost ~]# docker images
REPOSITORY   TAG       IMAGE ID   CREATED   SIZE

4.导入到本地目录

[root@localhost ~]# docker load -i centos.tar
74ddd0ec08fa: Loading layer
[==================================================
>] 238.6MB/238.6MB
Loaded image: centos:latest
[root@localhost ~]# docker image ls          //这里看到已经导入成功了
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
centos       latest    5d0da3dc9764   2 years ago   231MB


二、容器导出镜像(导出一个有yum源的镜像)

1.有yum源的

[root@localhost ~]# docker run -it --name=c0 centos:latest /bin/bas               //创建并启动服务
配置yum源
[root@70f41b63c128 /]# rm -rf /etc/yum.repos.d/*
[root@70f41b63c128 /]# curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo                 
[root@70f41b63c128 /]# yum clean all && yum makecache
[root@70f41b63c128 /]#yum -y install epel-release
ctrl+p+q退出
[root@localhost ~]# docker ps --all
CONTAINER ID   IMAGE           COMMAND       CREATED         STATUS         PORTS     NAMES
70f41b63c128   centos:latest   "/bin/bash"   8 minutes ago   Up 8 minutes             c0
[root@localhost ~]# docker export -o centos_yum.tar c0                     //导出tar
[root@localhost ~]# ls
anaconda-ks.cfg  centos.tar  centos_yum.tar
[root@localhost ~]# docker import -m yum centos_yum.tar centos:yum            //导入为镜像
sha256:9d43e5c9d7e41b8ed7ec287ad1cde2e56297808cab66618e25f25b6962b869fa
[root@localhost ~]# docker image ls                                  //生成了新的镜像
REPOSITORY   TAG       IMAGE ID       CREATED              SIZE
centos       yum       9d43e5c9d7e4   About a minute ago   260MB
centos       latest    5d0da3dc9764   2 years ago          231MB

2.有httpd的

[root@localhost ~]# docker run -it --name c100 centos:yum /bin/bash
[root@1fe0d666d8b9 /]# yum -y install httpd

[root@1fe0d666d8b9 /]# echo "i am tdr" > /usr/share/httpd/noindex/index.html 
退出
[root@localhost ~]# docker export -o centos_httpd.tar c100
[root@localhost ~]# ls
anaconda-ks.cfg  centos_httpd.tar  centos.tar  centos_yum.tar
[root@localhost ~]# docker import -m httpd centos_httpd.tar centos:httpd
[root@localhost ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED             SIZE
centos       httpd     55b1539d5cd6   About an hour ago   309MB
centos       yum       9d43e5c9d7e4   4 hours ago         260MB
centos       latest    5d0da3dc9764   2 years ago         231MB


三、IP地址

查看ip

1.进入容器,安装net-tools或iproute,直接使用命令ifconfig

[root@6e9839616992 /]# yum -y install net-tools
[root@6e9839616992 /]# ifconfig 
[root@6e9839616992 /]# yum -y install iproute
[root@6e9839616992 /]# ip a s

2.在外面使用docker指令inspect

[root@localhost ~]# docker inspect c100
[root@localhost ~]# docker inspect centos:httpd 

3.在外部调用指令

[root@localhost ~]# docker exec c100 ip a s
[root@localhost ~]# docker exec c100 ifconfig

4.使用exec创建一个文件

[root@localhost ~]# docker exec c100 touch /root/tdr.txt
[root@localhost ~]# docker attach c100
[root@6e9839616992 /]# ls /root
anaconda-ks.cfg  anaconda-post.log  original-ks.cfg  tdr.txt


四、虚拟机端口映射

1.将容器中的80端口映射到宿主机的80端口

[root@localhost ~]# docker stop c100 c101                          //停用容器 
c100
c101
[root@localhost ~]# docker rm c100 c101                          //删除容器
c100
c101
[root@localhost ~]# docker run -it --name c0 -p80:80/tcp centos:httpd /bin/bash                //创建启动并映射端口,将容器中的80端口映射给宿主机的80端口,前面是宿主机的端口,后面是容器的端口
[root@1fe0d666d8b9 /]# httpd -k start
[root@1fe0d666d8b9 /]# echo "tdr" > /usr/share/httpd/noindex/index.html 
ctrl+p+q退出
[root@localhost ~]# curl localhost                            //宿主机访问,没做端口映射之前就是可以访问的
tdr           
去真机浏览器访问虚拟机IP:192.168.1.76                  //没做端口映射之前不能访问,现在可以了


2.随机的为容器指定映射端口,映射端口>=32768

[root@localhost ~]# docker ps --all 
CONTAINER ID   IMAGE          COMMAND       CREATED          STATUS          PORTS                               NAMES
1fe0d666d8b9   centos:httpd   "/bin/bash"   19 minutes ago   Up 19 minutes   0.0.0.0:80->80/tcp, :::80->80/tcp   c0
[root@localhost ~]# docker stop c0                 //停止
c0
[root@localhost ~]# docker rm c0                   //删除
c0
[root@localhost ~]# docker run -it --name c1 -p80 centos:httpd /bin/bash  //这里只有80,是容器的80端口
[root@dce0e427f4d6 /]# httpd -k start
[root@dce0e427f4d6 /]# curl localhost
i am tdr
ctrl+p+q退出
[root@localhost ~]# docker ps                   
CONTAINER ID   IMAGE          COMMAND       CREATED              STATUS              PORTS                                     NAMES
dce0e427f4d6   centos:httpd   "/bin/bash"   About a minute ago   Up About a minute   0.0.0.0:32768->80/tcp, :::32768->80/tcp   c1
[root@localhost ~]# curl 192.168.1.76:32768
i am tdr
去真机浏览器访问虚拟机IP:192.168.1.76:32768


3.通过其他的IP地址的端口映射容器的端口

[root@localhost ~]# ifconfig ens33:0 192.168.1.77 broadcast 192.168.1.77 netmask 255.255.255.255 up
[root@localhost ~]# docker run -it --name c0 -p192.168.1.77::80 centos:httpd /bin/bash
[root@1775f9c8e015 /]# httpd -k start
[root@1775f9c8e015 /]# curl localhost
i am tdr
ctrl+p+q退出
[root@localhost ~]# docker ps
CONTAINER ID   IMAGE          COMMAND       CREATED              STATUS              PORTS                                     NAMES
1775f9c8e015   centos:httpd   "/bin/bash"   About a minute ago   Up About a minute   192.168.1.77:32769->80/tcp                c0
dce0e427f4d6   centos:httpd   "/bin/bash"   17 minutes ago       Up 17 minutes       0.0.0.0:32768->80/tcp, :::32768->80/tcp   c1
[root@localhost ~]# curl 192.168.1.77:32769
i am tdr
去真机浏览器访问虚拟机IP:192.168.1.77:32769

五、数据存储

挂载外部文件

[root@localhost ~]# mkdir /source                           //创建挂载点
[root@localhost ~]# docker run -it --name c2 -v /source:/data centos:httpd /bin/bash       //创建启动并挂载,这个data目录不需要在容器中新建,这里写了它就出现了
[root@db49f398a619 /]# ls                          //data目录出现了
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@localhost ~]# touch /source/abc.txt                         //宿主机挂载目录下创建文件
[root@localhost ~]# ls /source/
abc.txt
[root@localhost ~]# docker exec c2 ls /data                       //查看容器/data目录
abc.txt
[root@localhost ~]# docker exec c2 touch /data/def.txt           //在容器的/data目录下创建文件
[root@localhost ~]# ls /source/                                          //在宿主机也是可以查到的
abc.txt  def.txt

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值