docke进阶---镜像迁移、容器的ip地址、端口映射和持久化

1.镜像的迁移

1.镜像打包

#查看镜像有一个centos的镜像
[root@docker0 ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
centos       latest    5d0da3dc9764   2 years ago   231MB
3查看帮助文件
docker --help
save        Save one or more images to a tar archive (streamed to STDOUT by default)
#找到save,可以将镜像保存为一个tar包
#查看save使用方式
[root@docker0 ~]# docker save --helpUsage:  docker save [OPTIONS] IMAGE [IMAGE...]Save one or more images to a tar archive (streamed to STDOUT by default)Aliases:docker image save, docker saveOptions:-o, --output string   Write to a file, instead of STDOUT
#打包镜像
[root@docker0 ~]# docker save -o centos.tar centos:latest
#查看镜像包
[root@docker0 ~]# ls
anaconda-ks.cfg  centos.tar  initserver.sh
#可以将tar发送给其他用户或者做备份

2.镜像加载

[root@docker0 ~]# docker --help
import      Import the contents from a tarball to create a filesystem image
load        Load an image from a tar archive or STDIN
#查看load的用法
[root@docker0 ~]# docker load --helpUsage:  docker load [OPTIONS]Load an image from a tar archive or STDINAliases:docker image load, docker loadOptions:-i, --input string   Read from tar archive file, instead of STDIN-q, --quiet          Suppress the load output
#加载镜像
[root@docker0 ~]# docker load -i centos.tar 
74ddd0ec08fa: Loading layer  238.6MB/238.6MB
Loaded image: centos:latest

#查看镜像
[root@docker0 ~]# docker image ls
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
centos       latest    5d0da3dc9764   2 years ago   231MB

 停用关闭容器

docker stop c0 c1
docker rm c0 c1

删除镜像

docker rmi centos:latest

3.容器导出镜像

运行一个容器

[root@docker0 ~]# docker ps --all
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
[root@docker0 ~]# docker run -it --name c0 centos:latest /bin/bash
[root@2d3ce2feba40 /]# 

 配置yum源

[root@2d3ce2feba40 ~]# rm -rf /etc/yum.repos.d/*
[root@2d3ce2feba40 ~]# cat /etc/redhat-release
CentOS Linux release 8.4.2105
[root@2d3ce2feba40 /]# curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo

 查看yum源并建立缓存

[root@2d3ce2feba40 /]# ls /etc/yum.repos.d/
CentOS-Base.repo
[root@2d3ce2feba40 /]# 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.aliy 446 kB/s | 4.6 MB     00:10    
CentOS-8.5.2111 - Extras - mirrors.al  13 kB/s |  10 kB     00:00    
CentOS-8.5.2111 - AppStream - mirrors 303 kB/s | 8.4 MB     00:28    
Metadata cache created.

 创建一个yum源镜像

[root@docker0 ~]# docker export -o centos_yum.tar c0
[root@docker0 ~]# ls
anaconda-ks.cfg  centos.tar  centos_yum.tar  initserver.sh

下载一个epel源

[root@2d3ce2feba40 /]# yum -y install epel-release.noarch

 查看镜像会出现一个有yum的新镜像

[root@docker0 ~]# docker image ls
REPOSITORY   TAG       IMAGE ID       CREATED          SIZE
centos       yum       06a31e228ee1   39 seconds ago   260MB
centos       latest    5d0da3dc9764   2 years ago      231MB

 使用新镜像

[root@docker0 ~]# docker ps --all
CONTAINER ID   IMAGE           COMMAND       CREATED          STATUS                      PORTS     NAMES
2d3ce2feba40   centos:latest   "/bin/bash"   39 minutes ago   Exited (0) 13 minutes ago             c0
[root@docker0 ~]# docker rm c0
c0
[root@docker0 ~]# docker ps --all
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
[root@docker0 ~]# docker run -it --name c0 centos:yum /bin/bash
[root@53017a519e3c /]# ls /etc/yum.repos.d/
CentOS-Base.repo   epel-playground.repo       epel-testing.repo
epel-modular.repo  epel-testing-modular.repo  epel.repo
[root@53017a519e3c /]# 

练习:制作一个httpd镜像

#查看运行的容器c0
[root@docker0 ~]# docker ps --all
CONTAINER ID   IMAGE        COMMAND       CREATED       STATUS                   PORTS     NAMES
53017a519e3c   centos:yum   "/bin/bash"   3 hours ago   Exited (0) 2 hours ago             c0
#删除c0
[root@docker0 ~]# docker rm c0
c0
[root@docker0 ~]# docker ps --all
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

 运行一个容器并进入容器

[root@docker0 ~]# docker run -it --name c100 centos:yum /bin/bash

 下载httpd

[root@66afe850d388 /]# yum -y install httpd
centos:httpd

 修改index.html

[root@66afe850d388 /]#echo "aaabbbccc" > /var/www/html/index.html

启动服务

[root@66afe850d388 /]# 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@66afe850d388 /]# curl localhost
aaabbbccc

Ctrl p q暂时退出容器,查看容器正在运行

[root@docker0 ~]# docker ps --all
CONTAINER ID   IMAGE        COMMAND       CREATED         STATUS         PORTS     NAMES
66afe850d388   centos:yum   "/bin/bash"   6 minutes ago   Up 6 minutes             c100

导出httpd镜像

[root@docker0 ~]# docker export -o centos_httpd.tar c100
[root@docker0 ~]# ls
anaconda-ks.cfg   centos.tar      initserver.sh
centos_httpd.tar  centos_yum.tar

 引入httpd镜像

[root@docker0 ~]# docker import -m httpd centos_httpd.tar centos:httpdsha256:6e62dbf29499e0f2728ec12c86f18824aee2c2c7ee4e8356c9ad898edc939cb4
[root@docker0 ~]# docker image ls
REPOSITORY   TAG       IMAGE ID       CREATED          SIZE
centos       httpd     6e62dbf29499   16 seconds ago   309MB
centos       yum       06a31e228ee1   3 hours ago      260MB
centos       latest    5d0da3dc9764   2 years ago      231MB

3.IP地址

1.进入容器查看

[root@docker0 ~]# docker attach c100
[root@66afe850d388 /]# yum -y install net-tools
[root@66afe850d388 /]# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500inet 172.17.0.2  netmask 255.255.0.0  broadcast 172.17.255.255ether 02:42:ac:11:00:02  txqueuelen 0  (Ethernet)RX packets 10902  bytes 18719264 (17.8 MiB)RX errors 0  dropped 0  overruns 0  frame 0TX packets 6207  bytes 348509 (340.3 KiB)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536inet 127.0.0.1  netmask 255.0.0.0inet6 ::1  prefixlen 128  scopeid 0x10<host>loop  txqueuelen 1000  (Local Loopback)RX packets 16  bytes 1240 (1.2 KiB)RX errors 0  dropped 0  overruns 0  frame 0TX packets 16  bytes 1240 (1.2 KiB)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0[root@66afe850d388 /]# curl 127.17.0.2
aaabbbccc
[root@66afe850d388 /]# curl 127.17.0.3
aaabbbccc
[root@66afe850d388 /]# read escape sequence

2.使用docker指令inspect

#inspect用法
inspect     Return low-level information on Docker objects
[root@docker0 ~]# docker inspect --helpUsage:  docker inspect [OPTIONS] NAME|ID [NAME|ID...]Return low-level information on Docker objectsOptions:-f, --format string   Format output using a custom template:'json':             Print in JSONformat'TEMPLATE':         Print output usingthe given Go template.Refer tohttps://docs.docker.com/go/formatting/for more information about formattingoutput with templates-s, --size            Display total file sizes if the type iscontainer--type string     Return JSON for specified type[root@docker0 ~]# docker inspect c100

3.外部调用指令

docker exec c100 ip a

docker exec c101 ifconfig

[root@docker0 ~]# docker exec c100 ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft foreverinet6 ::1/128 scope host valid_lft forever preferred_lft forever
4: eth0@if5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default link/ether 02:42:ac:11:00:02 brd ff:ff:ff:ff:ff:ff link-netnsid 0inet 172.17.0.2/16 brd 172.17.255.255 scope global eth0valid_lft forever preferred_lft forever[root@docker0 ~]# docker exec c101 ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500inet 172.17.0.3  netmask 255.255.0.0  broadcast 172.17.255.255ether 02:42:ac:11:00:03  txqueuelen 0  (Ethernet)RX packets 257  bytes 345445 (337.3 KiB)RX errors 0  dropped 0  overruns 0  frame 0TX packets 163  bytes 9248 (9.0 KiB)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536inet 127.0.0.1  netmask 255.0.0.0inet6 ::1  prefixlen 128  scopeid 0x10<host>loop  txqueuelen 1000  (Local Loopback)RX packets 22  bytes 1861 (1.8 KiB)RX errors 0  dropped 0  overruns 0  frame 0TX packets 22  bytes 1861 (1.8 KiB)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

4.端口映射

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

[root@docker0 ~]# docker ps --all
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
[root@docker0 ~]# 
[root@docker0 ~]# docker run -it --name c0 -p80:80/tcp centos:httpd /bin/bash
[root@12c584d32bf9 /]# 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@12c584d32bf9 /]# curl localhost
aaabbbccc
[root@12c584d32bf9 /]# [root@docker0 ~]# 
[root@docker0 ~]# curl 172.17.0.2
aaabbbccc
[root@docker0 ~]# curl localhost
aaabbbccc
[root@docker0 ~]# curl 192.168.1.50
aaabbbccc

 

 2.随机为容器指定映射一个端口,映射端口大于等于32768

[root@docker0 ~]# docker ps --all
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
[root@docker0 ~]# docker run -it --name c0 -p80 centos:httpd /bin/bash
[root@ad4aa342a339 /]# 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@ad4aa342a339 /]# curl localhost
aaabbbccc
[root@ad4aa342a339 /]# [root@docker0 ~]# 
[root@docker0 ~]# docker ps
CONTAINER ID   IMAGE          COMMAND       CREATED          STATUS          PORTS                                     NAMES
ad4aa342a339   centos:httpd   "/bin/bash"   29 seconds ago   Up 29 seconds   0.0.0.0:32769->80/tcp, :::32769->80/tcp   c0
[root@docker0 ~]# curl 192.168.1.50:80
curl: (7) Failed connect to 192.168.1.50:80; 拒绝连接
[root@docker0 ~]# curl 192.168.1.50:32769
aaabbbccc

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

 docker run -it --name c0 -p129.168.1.51 centos:httpd /bin/bash

5.持久化

挂载

在创建容器的时候挂载

[root@docker0 ~]# docker ps --all
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
#创建一个挂载目录
[root@docker0 ~]# mkdir /source[root@docker0 ~]# docker run -it --name c0 -v /source:/data centos:httpd /bin/bash
#查看容器就会有一个data目录
[root@76f17e18485d /]# ls
bin   etc   lib64	mnt   root  srv  usr
data  home  lost+found	opt   run   sys  var
dev   lib   media	proc  sbin  tmp
#暂时退出容器
[root@76f17e18485d /]# [root@docker0 ~]# 
#在容器外面创建一个文档
[root@docker0 ~]# touch /source/abc.txt
[root@docker0 ~]# ls /source/
abc.txt
#查看容器里面也出现了这个文档
[root@docker0 ~]# docker exec c0 ls /data
abc.txt
#同样在容器里面创建一个,外面的挂载目录也会出现
[root@docker0 ~]# docker exec c0 touch /data/def.txt
[root@docker0 ~]# ls /source/
abc.txt  def.txt

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

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

相关文章

【Unity】移动端草海解决方案

草海是开放大世界渲染的必不可少的因素&#xff0c;Unity 原生的 Terrain 草海效率较低&#xff0c;而且无法与 RVT 结合起来&#xff0c;无法在移动端上实现。因此我们自己搓出来一套草海系统&#xff0c;使用 C# 多线程辅助运算&#xff0c;并能支持割草、烧草等进阶玩法。草…

数据库内容保密检查系统:及时发现“潜在”安全威胁

日前&#xff0c;国内专注于保密与非密领域的分级保护、等级保护、业务连续性安全和大数据安全产品解决方案与相关技术研究开发的领军企业——国联易安自主研发的国联数据库内容保密检查系统V1.0通过国保局涉密检测&#xff0c;获得涉密信息系统产品检测证书。其主要具备以下主…

输入名字转换成对象

<!DOCTYPE html> <html lang"zh-CN"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>输入名字转换成对象</title> </head>…

力扣算法总结

直接放别人简单易懂的总结&#xff0c;比我自己描述得好 代码随想录 (programmercarl.com) 崔添翼 (Tianyi Cui) 背包问题九讲 2.0 beta1.2 - jggnice! - 博客园 (cnblogs.com) 1.01背包 优化成一维就是利用之前上一维计算出来的数据&#xff0c;在不损害后面还要用的上一维…

【前端基础篇】JavaScript之BOM介绍

文章目录 浏览器对象模型&#xff08;BOM&#xff09;介绍1. 什么是BOM&#xff1f;2. Window 对象2.1 弹出框2.1.1 警告框2.1.2 确认框2.1.3 提示框 2.2 定时事件2.2.1 延时器2.2.2 定时器 2.3 Window 对象其他常用属性与方法2.3.1 获取窗口尺寸2.3.2 打开新窗口与关闭窗口2.3…

【JS|第25期】探索HTTP POST请求:请求体的演变与应用

日期&#xff1a;2024年8月16日 作者&#xff1a;Commas 签名&#xff1a;(ง •_•)ง 积跬步以致千里,积小流以成江海…… 注释&#xff1a;如果您觉得有所帮助&#xff0c;帮忙点个赞&#xff0c;也可以关注我&#xff0c;我们一起成长&#xff1b;如果有不对的地方&#xf…

iOS RunLoop

一:什么是Runloop Runloop&#xff0c;正如其名&#xff0c;loop表示某种循环&#xff0c;和run放在一起就表示一直在运行着的循环 二:Runloop的创建? iOS并没有提供Runloop的创建方法,因为创建了现场自然会有一个Runloop. 所以只有获取Runloop的方法: NSRunLoop * runloo…

C# 循环访问目录树详解与示例

文章目录 一、目录树遍历的概念二、使用System.IO命名空间三、DirectoryInfo和FileInfo类四、递归遍历目录树五、示例&#xff1a;列出目录树中的所有文件和文件夹六、异常处理七、迭代方法八、总结 在C#中&#xff0c;访问文件系统是常见的需求之一。有时我们需要遍历目录树以…

kafak集群搭建-基于zookeeper方式

kafak集群搭建-基于zookeeper方式 1、准备3个kafka2、修改配置文件2.1、修改配置文件 3、启动测试3.1、先启动zookeeper3.2、再启动三台kafka 4、SpringBoot集成kafka集群4.1、项目配置文件application.yml4.2、kafka配置类4.3、启动SpringBoot程序 5、kafka集群架构分析6、查看…

【kubernetes】相关pod的创建和命令

【书写方法】&#xff1a; 管理使用k8s集群时&#xff0c;创建资源的Yaml文件非常重要&#xff0c;如何快速手写呢&#xff1f; 根据命令提示书写&#xff1a; kubectl explain [资源名称]例如打算写pod资源文件时&#xff0c;可查看如下&#xff1a; # 查看pod下所有字段 …

Google Colab快速使用

Google Colab快速使用 1. 引言2. Jupyter笔记本的创建3. 上传代码和数据集4. Colab常规指令 1. 引言 Google Colab是谷歌提供的免费Jupyter&#xff0c;很类似于Linux系统这些在终端界面操纵的感觉&#xff0c;不需要深度学习环境配置就可以使用&#xff0c;完全基于云端运行。…

在Windows Server 2012 R2上安装.NET Framework 3.5

在Windows Server 2012 R2上安装.NET Framework 3.5&#xff0c;可以按照以下步骤进行&#xff1a; 打开服务器管理器&#xff1a; 首先&#xff0c;登录到Windows Server 2012 R2的服务器。然后&#xff0c;打开“服务器管理器”。添加角色和功能&#xff1a; 在“服务器管理…

针对防火墙IPSec业务不通或业务丢包问题,防火墙如何做流量统计、远程抓包、报文示踪

问题描述 针对防火墙IPSec业务不通或业务丢包问题&#xff0c;防火墙如何做流量统计、远程抓包、报文示踪 解决方案 1&#xff09;配置流统和远程抓包用的ACL&#xff1b; system [sysname] acl 3555 [sysname-acl-adv-3555] rule permit icmp source 10.82.100.215 0 destin…

结构型模式之代理模式

一、概述 1、代理模式&#xff1a;给某一个对象提供一个代理或占位符&#xff0c;并由代理对象来控制对原对象的访问。 2、代理对象在客户端和目标对象之间起到中介作用 3、引入一个新的代理对象&#xff0c;代理模式的主要目的是在不改变原始对象接口的前提下&#xff0c;增…

[C语言]一、C语言基础(函数)

G:\Cpp\C语言精讲 6. 函数 6.1函数的基本使用 6.1.1 为什么需要函数 《街霸》游戏中&#xff0c;每次人物出拳、出脚或跳跃等动作都需要编写50-80行的代码&#xff0c;在每次出拳、出脚或跳跃的地方都需要重复地编写这50-80行代码&#xff0c;这样程序会变得很臃肿&#xff…

通过Python绘制不同数据类型适合的可视化图表

在数据可视化中&#xff0c;对于描述数值变量与数值变量之间的关系常见的有散点图和热力图&#xff0c;以及描述数值变量与分类变量之间的关系常见的有条形图&#xff0c;饼图和折线图&#xff0c;可以通过使用Python的matplotlib和seaborn库来绘制图表进行可视化表达&#xff…

如何使用ssm实现ssm框架的购物网站+vue

TOC ssm113ssm框架的购物网站vue 绪论 1.1 研究背景 当前社会各行业领域竞争压力非常大&#xff0c;随着当前时代的信息化&#xff0c;科学化发展&#xff0c;让社会各行业领域都争相使用新的信息技术&#xff0c;对行业内的各种相关数据进行科学化&#xff0c;规范化管理。…

如何评估Redis的性能

如果系统中出现了大 key、热 key 等&#xff0c;往往会导致 Redis 变慢&#xff0c;但是这个慢该如何界定&#xff1f;多久算慢&#xff1f;1秒还是3秒&#xff1f; 这个肯定是没有标准答案&#xff0c;因为这个和你的硬件设备有关。 硬件差一些&#xff0c;平时响应时间都是…

[C++] 初识 智能指针

标题&#xff1a;[C] 初识 智能指针 水墨不写bug 目录 一、前言 二、智能指针 1. 什么是RAII&#xff1f; 2.智能指针分类 三、智能指针简介 1.std::auto_ptr 2.std::unique_ptr 3.std::shared_ptr 正文开始&#xff1a; 一、前言 C智能指针的出现是有一定的背景的&am…

今天你City了吗?维乐Angel Revo带你穿梭都市自由随风~

当7月的热浪在都市中翻滚&#xff0c;你是否渴望逃离钢筋水泥的束缚&#xff0c;寻找一片属于自己的绿意盎然&#xff1f;今天你City了吗&#xff1f;快带上VELO Angel Revo一起抓住夏日的尾巴&#xff0c;用一场骑行与这座城市的风景共舞&#xff01;      轻巧出行&#…