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 //没做端口映射之前不能访问,现在可以了 ![](https://i-blog.csdnimg.cn/direct/75ccb446fdd047f89d3bf0870053af8b.png) ### 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 ![](https://i-blog.csdnimg.cn/direct/44989b8a7df549f48bbafd834d53ada8.png) ### 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 ![](https://i-blog.csdnimg.cn/direct/c61141dbcf4f460396422b21c9d97e1e.png) ## 五、数据存储 ### 挂载外部文件 \[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

相关推荐
果子⌂1 小时前
Docker-构建镜像并实现LNMP架构
mysql·nginx·docker·容器·架构·php
无敌糖果1 小时前
K8S数据流核心底层逻辑剖析
docker·容器·kubernetes·k8s架构·底层逻辑·k8s数据流
zkmall1 小时前
企业电商平台搭建:ZKmall开源商城服务器部署与容灾方案
运维·服务器·开源
华不完2 小时前
下一代防火墙混合模式部署
运维·服务器·网络
x县豆瓣酱2 小时前
ubuntu server配置静态IP
linux·运维·ubuntu
工藤新一¹2 小时前
Linux
linux·运维·服务器
互联网搬砖老肖2 小时前
运维打铁: 阿里云 ECS 实例的高效运维与管理
运维·阿里云·云计算
longze_72 小时前
frp内网穿透下创建FTP(解决FTP“服务器回应不可路由的地址。使用服务器地址替代”错误)
运维·服务器·网络
瓦力wow2 小时前
数据分析-名词
运维·服务器·数据分析
自由鬼2 小时前
正向代理服务器Squid:功能、架构、部署与应用深度解析
java·运维·服务器·程序人生·安全·架构·代理