Docker中镜像文件的打包传输、容器导出镜像及虚拟机端口映射的实现

内网私有仓库

1、Docker 私有仓库 是集中存放镜像的地⽅,⽽注册服务器 (Registry)是存放仓库的具体服务器。仓库可以被认为是⼀个具体 的项⽬或⽬录。

Docker 公共仓库:https://hub.docker.com

2、Docker 私有仓库的作⽤:

1)镜像上传到公共仓库不⽅便管理,且仅需要局域⽹⽤户之间传递 镜像的情况,需要使⽤私有仓库。

2)节省⽹络带宽,不需要都去公共仓库下载镜像,只需要从私有仓 库下载即可。

3)提供镜像资源利⽤,针对公司内部开发,不能联⽹情况下,有⼀ 些使⽤到的镜像可以推送到本地的私有仓库中,以供内部开发⼈ 员便捷下载使⽤。

3、搭建 Docker 私有仓库的⽅案

1)docker 官⽅提供的搭建私有仓库⼯具 registry。

2)harbor 私有仓库。

镜像文件的打包传输

[root@docker ~]# docker save --help

Options:

  -o, --output string   Write to a file,

                        instead of STDOUT

[root@docker ~]# docker save -o cetos.tar centos:latest

[root@docker ~]# ls

anaconda-ks.cfg  centos.tar  soft

# 查看现有的镜像

[root@docker ~]# docker images

REPOSITORY   TAG       IMAGE ID       CREATED       SIZE

centos       latest    5d0da3dc9764   2 years ago   231MB

# 如果有该镜像生成的容器正在使用,无法使用rmi移除镜像,删除容器时先退出up状态

[root@2315e0c58cf2 /]# read escape sequence

[root@docker ~]# docker ps -a

CONTAINER ID   IMAGE           COMMAND       CREATED          STATUS          PORTS     NAMES

2315e0c58cf2   centos:latest   "/bin/bash"   41 minutes ago   Up 38 minutes

[root@docker ~]# docker rm c0

[root@docker ~]# docker rmi centos:latest

# 可以将tar包发给别人,也可以做备份

[root@docker ~]# docker load -help

[root@docker ~]# docker load -i centos.tar centos:latest  

Loaded image: centos:latest

容器导出镜像

1、从容器导出tar包

# 查看帮助文档

[root@docker ~]# docker export --help

Options:

  -o, --output string   Write to a file,

                        instead of STDOUT

# 使用指令

[root@docker ~]# docker export -o centos_yum.tar c0

# 查看新生成的tar包

[root@docker ~]# ls

anaconda-ks.cfg  centos_yum.tar  centos.tar  soft

               【容器包】   【镜像包】

2、从tar包导入镜像

# 查看帮助

[root@docker ~]# docker import --help

Usage:  docker import [OPTIONS] file|URL|- [REPOSITORY[:TAG]]

# 导入格式 docker import -m 说明内容 centos_yum.tar centos:yum

[root@docker ~]# docker import -m yum centos_yum.tar centos:yum

sha256:2bc7103237afec105becf835eff717f84e3e0bb137f57c2f4a5e8c3201a770e1

# 查看新镜像,此镜像不需要配置yum仓库

[root@docker ~]# docker images

REPOSITORY   TAG       IMAGE ID       CREATED          SIZE

centos       yum       2bc7103237af   22 seconds ago   260MB

centos       latest    5d0da3dc9764   2 years ago      231MB

案例:

1、启动创建容器

# 删除原有的容器

[root@docker001 ~]# docker ps --all CONTAINER ID   IMAGE           COMMAND       CREATED         STATUS                     PORTS     NAMES 0b24d60a94c5   centos:latest   "/bin/bash"   11 minutes ago   Exited (0) 11 minutes ago             c1 9fb6f46b3809   centos:latest   "/bin/bash"   12 minutes ago   Exited (0) 12 minutes ago             c0 [root@docker001 ~]# docker rm c0 c0

[root@docker001 ~]# docker rm c1 c1

[root@docker001 ~]# docker ps --all

CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS   PORTS     NAMES

 # 创建并启动服务

[root@docker001 ~]# docker run -it --name=c0 centos:latest /bin/bash

2、配置yum源

#查看版本

[root@2dc8e93c2c86 /]# cat /etc/redhat-release

CentOS Linux release 8.4.2105

# 阿⾥云开发者社区

https://developer.aliyun.com/mirror/centos? spm=a2c6h.13651102.0.0.3e221b11NPSvpg

# 下载repo⽂件

rm -rf /etc/yum.repos.d/*

curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault8.5.2111.repo

yum clean all && yum makecache

yum -y install epel-release

3、导出为镜像

# 查看帮助⽂件 ,找到导出的指令

[root@docker001 ~]# docker --help

#查看export帮助

[root@docker001 ~]# docker export --help

# 导出tar CONTAINER ID   IMAGE           COMMAND       CREATED         STATUS                     PORTS     NAMES 2dc8e93c2c86   centos:latest   "/bin/bash"   17 minutes ago   Exited (0) 6 minutes ago             c0

[root@docker001 ~]# docker export --output centos_aliyun_yum.tar c0

[root@docker001 ~]# ls anaconda-ks.cfg centos_aliyun_yum.tar centos.tar frp initserver.sh

4、从tar包导入镜像

#查看import帮助

[root@docker001 ~]# docker --help

# 查看 import帮助

[root@docker001 ~]# docker import --help

# 导⼊为镜像

[root@docker001 ~]# docker import -m aliyun_yum centos_aliyun_yum.tar centos_yum:v0 sha256:191d9c84f461ccd06c249fbefad169fdbc6f22e60eba b410b428814b2e690d0c

[root@docker001 ~]# docker images REPOSITORY   TAG       IMAGE ID       CREATED         SIZE centos_yum   v0       191d9c84f461   48 seconds ago   260MB centos       latest   5d0da3dc9764   2 years ago     231MB

[root@docker001 ~]# docker history centos_yum:v0 IMAGE         CREATED         CREATED BY   SIZE     COMMENT 191d9c84f461   3 minutes ago               260MB     aliyun_yum

 ##练习:创建一个镜像,包含httpd服务名称 centos,版本为http

[root@docker ~]# docker ps -a

CONTAINER ID   IMAGE           COMMAND       CREATED         STATUS                     PORTS     NAMES

80e2c487c9ed   centos:yum      "/bin/bash"   3 minutes ago   Exited (0) 3 minutes ago             c1

4f60d6296a26   centos:latest   "yum"         5 minutes ago   Exited (0) 5 minutes ago             c0

# c0容器时基于yum镜像的容器,这样省去了每次要配置yum

[root@docker ~]# docker export -o centos_httpd.tar c0  

[root@docker ~]# ls

anaconda-ks.cfg   centos_yum.tar  soft

centos_httpd.tar  cetos.tar

[root@docker ~]# docker import -m httpd centos_httpd.tar centos:http

sha256:bd158f51103991b4f4b46be0403db16542ce20b87aa0e96ab8485788d74ac0db

[root@docker ~]# docker images

REPOSITORY   TAG       IMAGE ID       CREATED          SIZE

centos       http      bd158f511039   6 seconds ago    232MB

centos       yum       2bc7103237af   14 minutes ago   260MB

centos       latest    5d0da3dc9764   2 years ago      231MB

数据的持久化存储

背景:因为docker容器只是⼀个⼯具,不需要保存数据,不需要做持 久化,如果要做持久化,那么就需要保存到宿主机上,需要宿主机 和容器之间有⼀个共享卷。

格式:docker run -it --name c0 -v /source:/data centos:httpd /bin/bash

                                         【宿主机文件】【容器内部文件内】

案例:

# 在宿主机上创建目录/static,挂载到容器的/data/目录,不管在宿主机还是dokcer中创建文件,互相可见

[root@docker ~]# mkdir /static

[root@docker ~]# docker run -it --name c0 -v /static/:/data/ centos:http /bin/bash

[root@61ae74fcf69b /]# ls

bin   etc   lib64 mnt   root  srv  usr

data  home  lost+found opt   run   sys  var

dev   lib   media proc  sbin  tmp

[root@docker ~]# touch /static/xy.txt

[root@docker ~]# docker exec c0 ls /data/

xy.txt

[root@docker ~]# docker attach c0

[root@61ae74fcf69b /]# touch /data/mn.txt

[root@61ae74fcf69b /]# read escape sequence

[root@docker ~]# ls /static/

mn.txt  xy.txt

查看容器ip地址的方式

 1、进入容器,使用指令查看

[root@docker ~]# docker start c1

c1

[root@docker ~]# docker attach c1

[root@80e2c487c9ed /]# yum -y install net-tools  |  iproute

[root@80e2c487c9ed /]# ifconfig | ip a s

2、在容器外使用docker指令的inspect查看

[root@docker ~]# docker inspect --help

[root@docker ~]# docker inspect c1

[root@docker ~]# docker inspect centos:http

3、在外部调用指令

[root@docker ~]# docker exec c1 ifconfig

虚拟机端口映射

说明:

1、Docker允许通过外部访问容器或者容器之间互联的⽅式来提供⽹络服务。

2、容器启动之后,容器中可以运⾏⼀些⽹络应⽤,通过-p或-P参数来 指定端⼝映射。 /3、宿主机的⼀个端⼝只能映射到容器内部的某⼀个端⼝上,⽐如: 8080->80之后,就不能8080->81。

4、容器内部的某个端⼝可以被宿主机的多个端⼝映射,⽐如: 8080- >80,8090->80,8099->80。

5、-p ⼩写p表示docker会选择⼀个具体的宿主机端⼝映射到容器 内部开放的⽹络端⼝上。

     -P ⼤写P表示docker会随机选择⼀个宿主机端⼝映射到容器内 部开放的⽹络端⼝上

1、指定端口映射

格式:

docker run -it --name c0 -p80:80/tcp centos:httpd /bin/bash   //将容器中的80端⼝映射到宿主机(docker主机)80端⼝

# 查看容器状态:

# 查看使⽤的端⼝

[root@docker001 ~]# less /etc/services

注意:端⼝号,属于稀缺资源,随机给⼀个端⼝⼤于等于32768

案例:

[root@docker001 ~]# docker images

REPOSITORY     TAG       IMAGE ID       CREATED             SIZE centos_httpd   v0       fffc96d791d5   52 minutes ago     309MB centos_yum     v0       191d9c84f461   About an hour ago   260MB centos         latest   5d0da3dc9764   2 years ago         231MB

[root@docker001 ~]# docker run -it --name c0 -p 80:80/tcp centos_httpd:v0 /bin/bash

                                                           【容器内端口】:【宿主机端口】

# 启动httpd服务

[root@3265f84cd9c2 /]# 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@3265f84cd9c2 /]# curl http://localhost:80

docker httpd test ----

# 在宿主机上是可以访问的

[root@docker001 ~]# curl http://172.17.0.1:80

docker httpd test ----

# 访问⾃⼰的80端⼝也可以访问httpd服务

[root@docker001 ~]# curl http://localhost:80

docker httpd test ----

# 远程主机也可以访问服务

2、随机端口映射,映射端⼝>=32768

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

案例:

[root@docker001 ~]# docker run -it --name c0 -p 80 centos_htd:v0 /bin/bash [root@1451df257a8e /]# [root@docker001 ~]#

[root@docker001 ~]# docker ps

CONTAINER ID   IMAGE             COMMAND       CREATED         STATUS         PORTS                                     NAMES 1451df257a8e   centos_httpd:v0   "/bin/bash"   18 seconds ago   Up 18 seconds   0.0.0.0:32770- >80/tcp, :::32770->80/tcp   c0

3、指定其他ip的端口映射,添加一块虚拟网卡,ip地址设置为192.168.2.51

格式:docker run -it --name c0 -p192.168.2.51 centos:httpd /bin/bash

192.168.71.51:32768

案例:

[root@docker001 ~]# ifconfig ens33:0 192.168.2.51 broadcast 192.168.2.51 netmask 255.255.255.255 up

[root@docker001 ~]# docker run -it --name c0 - p192.168.251::80 centos_httpd:v0 /bin/bash oot@e6649818d033 /]#

ctrl +p+q 

[root@docker001 ~]# docker ps

CONTAINER ID   IMAGE             COMMAND       CREATED             STATUS             PORTS                     NAMES e6649818d033   centos_httpd:v0   "/bin/bash"   About a minute ago   Up About a minute   192.168.2.51:32768->80/tcp   c0 

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

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

相关文章

C语言试题(含答案解析)

单选 1.下面C程序的运行结果为&#xff08;&#xff09; int main(void) {printf("%d", B < A);return 0; }A.编译错误 B.1 C.0 D.运行错误 A’的ascii码值为65&#xff0c;‘B’的ascii码值为66&#xff0c;‘B’<‘A’是不成立的&#xff0c;返回0&#xf…

[嵌入式 C 语言] 知识库

一、数据类型 1.1 基本数据类型 自定义类型基础类型占用字节数取值范围描述mls8char1-128 to 1278 位有符号整数mlu8unsigned char10 to 2558 位无符号整数mlvu8volatile unsigned char10 to 2558 位无符号整数&#xff0c;具有 volatile 属性mls16short2-32768 to 3276716 位…

看图学sql之sql 中的UNION 和union all

UNION 用于合并两个或者多个 SELECT 语句的结果集 语法&#xff1a; SELECT column1, column2 ... FROM table1, table2 [WHERE condition1]UNION / UNION ALLSELECT column1, column2 ... FROM table1, table2 [WHERE condition2] 数据分析社区直达 免费数据分析资料下载。…

电机启动对单片机重启的影响

单片机使用ASM1117对9V电压降压供电&#xff0c;IO口接三极管控制电机 &#xff0c;接9V&#xff1b;每次启动瞬间&#xff0c;单片机重启 试进行分析 网上参考&#xff0c;添加滤波&#xff0c;电容&#xff0c;阻容&#xff1b;分开电源处理&#xff08;双电源&#xff09;&…

Qt坐标系统之三个坐标系和两个变换

前言 Qt坐标系统由QPainter类控制。它和QPaintDevice和QPaintEngine类一起构成Qt绘图系统的基础。QPainter用于执行绘图操作&#xff0c;QPaintDevice是QPainter用来绘制的一个二维空间的抽象&#xff0c;QPaintEngine提供在不同设备绘图的接口。 Qt 的坐标分为逻辑坐标和物理…

True XML cookbook

打开题目 看到登录口 随便输入admin&#xff0c;123456&#xff0c;然后抓包试一下 先按原来那道题的payload进行测试&#xff0c;payload和结果如下&#xff1a; <?xml version"1.0" ?> <!DOCTYPE llw [ <!ENTITY file SYSTEM "file:///flag&…

k8s教程

1. k8s框架 - kubernetes的架构- Control Plane: 控制K8S集群的组件。- Api Server: 集群的访问入口。- etcd: 存储集群的数据。一般情况下&#xff0c;只有API-SERVER会访问.- Control Manager: 维护集群的状态。- Scheduler: 负责Pod的调度功能。- Wor…

性能测试常见故障和解决思路

一、性能问题分析流程 1、查看服务器的CPU、内存 、负载等情况&#xff0c;包括应用服务器和数据库服务器 2、查看数据库健康状态&#xff0c;数据库死锁、连接池不释放 3、查看项目日志&#xff08;查看无报错现象&#xff09; 4、查看jvm的gc等情况 二、内存溢出 &…

SSL/TLS协议信息泄露漏洞修复

概述&#xff1a;CVE-2016-2183 是一个涉及 SSL/TLS 协议信息泄露的漏洞&#xff0c;也被称为 "SWEET32" 攻击。该漏洞利用了某些对称加密算法&#xff08;如 3DES&#xff09;的弱点&#xff0c;攻击者可以通过捕获和分析大量的加密流量&#xff0c;可能会恢复明文数…

Sqlite3数据库表内数据批量读取操作---sqlite3_stmt机制

0、引言 在前面两篇文章已经对数据环境搭建、数据批量写入库中进行了较为详细的讲解。因此&#xff0c;基于前两篇文章内容的基础上&#xff0c;本文主要从数据库中批量数据读取操作进行梳理讲解。 嵌入式数据库SQLite 3配置使用详细笔记教程_sqlite3-CSDN博客 SQLite 3 优化批…

【机器学习】4. 相似性比较(二值化数据)与相关度(correlation)

SMC Simple Matching Coefficient 评估两组二进制数组相似性的参数 SMC (f11 f00) / (f01f10f11f00) 其中&#xff0c;f11表示两组都为1的组合个数&#xff0c;f10表示第一组为1&#xff0c;第二组为0的组合个数。 这样做会有一个缺点&#xff0c;假设是比较稀疏的数据&…

<数据集>流水线纸箱识别数据集<目标检测>

数据集格式&#xff1a;VOCYOLO格式 图片数量&#xff1a;1395张 标注数量(xml文件个数)&#xff1a;1395 标注数量(txt文件个数)&#xff1a;1395 标注类别数&#xff1a;2 标注类别名称&#xff1a;[GreenCarton,RedCarton] 序号类别名称图片数框数1GreenBox131728482R…

力扣 | 最长公共子序列 | 动态规划 | 最长公共子序列长度、最长公共子序列

文章目录 一、1143. 最长公共子序列二、求最长公共子序列三、变式一、1035. 不相交的线二、1312. 让字符串成为回文串的最少插入次数 一、1143. 最长公共子序列 LeetCode&#xff1a;1143. 最长公共子序列 这是一道典型的二维动态规划问题&#xff0c;甚至面试都能被面到。 这…

C#关于多线程的线程问题

using System.Text; ​ namespace 平时练习8._19day06 {internal class Program{static async Task Main(string[] args){Console.WriteLine(Thread.CurrentThread.ManagedThreadId );StringBuilder sb new StringBuilder();for (int i 0; i < 10000; i){sb.Append("…

坚持绿色发展的上海智算中心,稳步推进中

自今年年初正式封顶以来&#xff0c;云端股份上海智算中心在外墙及内部的建设进展顺利。这座智算中心地理位置优越&#xff0c;正逐步成为推动数字经济发展的重要力量。 位置优势 云端股份上海智算中心毗邻智慧岛数据产业园&#xff0c;是崇明区目前建设的唯一一座智算中心&am…

多功能秒达工具箱全开源源码,可自部署且完全开源的中文工具箱

简介&#xff1a; 多功能秒达开源工具箱源码&#xff0c;&#xff0c;可自部署且完全开源的中文工具箱&#xff0c;永远的自由软件&#xff0c;轻量级运行&#xff0c;全平台支持&#xff08;包括ARMv8&#xff09;&#xff0c;完全类似 GPT 的支持&#xff0c;与高效的 UI 高…

简化登录流程,助力应用建立用户体系

随着智能手机和移动应用的普及&#xff0c;用户需要在不同的应用中注册和登录账号&#xff0c;传统的账号注册和登录流程需要用户输入用户名和密码&#xff0c;这不仅繁琐而且容易造成用户流失。 华为账号服务&#xff08;Account Kit&#xff09;提供简单、快速、安全的登录功…

一文5000字从0到1使用Jmeter实现轻量级的接口自动化测试

接口测试虽然作为版本的一环&#xff0c;但是也是有一套完整的体系&#xff0c;有接口的功能测试、性能测试、安全测试&#xff1b;同时&#xff0c;由于接口的特性&#xff0c;接口的自动化低成本高收益的&#xff0c;使用一些开源工具或一些轻量级的方法&#xff0c;在测试用…

【Kotlin设计模式】Kotlin实现工厂模式

前言 工厂模式&#xff08;Factory Pattern&#xff09;是一种创建型设计模式&#xff0c;提供一个创建对象的接口&#xff0c;不暴露对象的创建过程。它将实例化对象的任务交给子类或具体实现&#xff0c;从而使得客户端代码与具体类解耦。 工厂模式主要分为以下三类&#xf…

图像处理之:Video Processing Subsystem(一)

免责声明&#xff1a; 本文所提供的信息和内容仅供参考。作者对本文内容的准确性、完整性、及时性或适用性不作任何明示或暗示的保证。在任何情况下&#xff0c;作者不对因使用本文内容而导致的任何直接或间接损失承担责任&#xff0c;包括但不限于数据丢失、业务中断或其他经济…