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

news2024/11/14 21:25:36

内网私有仓库

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.coloradmin.cn/o/2068026.html

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

相关文章

2、spring生态圈

咱们打开spring.io网站 可以看到spring的功能是很强大的,再看看它的生态圈

即用型封闭容器市场规模:未来几年年复合增长率CAGR为8.3%

一、市场趋势演变 即用型封闭容器行业近年来呈现出快速增长的趋势,这主要得益于其在制药、生物科技、食品加工等多个领域的广泛应用。随着全球对产品质量和安全性的要求不断提高,即用型封闭容器因其便捷性、高效性和可靠性而备受青睐。预计未来几年&…

PMBOK® 第六版 控制范围

目录 读后感—PMBOK第六版 目录 结果固然重要,过程同样不可或缺。过程不仅是通往预期成果的途径,也是个人和团队能力提升与经验积累的关键阶段。过程中的每一步都是学习和成长的机会,每一次尝试都能激发创新,而公正透明的流程更增…

《黑神话:悟空》的开发语言与开发团队揭秘

在国产游戏领域,《黑神话:悟空》无疑是一颗璀璨的新星,它以独特的视角重新诠释了中国古典名著《西游记》中的孙悟空形象,并以其惊人的视觉效果、深邃的游戏剧情以及精湛的技术实现,赢得了国内外玩家的广泛关注与期待。…

粘包现象 | wireshark抓包的使用

在TCP协议的通信过程中,由于其面向流的特性,数据在传输过程中可能会发生粘包现象,即多个发送的数据包被接收方一次性接收,导致应用层无法正确解析数据。 1.粘包现象概述 TCP协议为了保证传输效率,可能会将多次send调…

java 实体常用校验注解方法

1、常用注解: 注解说明Null只能为nullNotNull(message “id不能为空”)必须不为null,可以为空字符串Min(value)必须为一个不小于指定值的数字Max(value)必须为一个不大于指定值的数字NotBlank(message “姓名不能为空”)验证注解的元素值不为空&#…

vscode中Vue别名路径提示的实现

配置文件中配置别名: 在对应的jsconfig 或者 tsconfig文件中 配置: 文件中使用时候就会出现相应提示:

计算机毕业设计选题推荐-高校学术交流平台-Java/Python项目实战

✨作者主页:IT毕设梦工厂✨ 个人简介:曾从事计算机专业培训教学,擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Py…

从HTTP到HTTPS:SSL加密如何重塑互联网安全格局

从HTTP到HTTPS:SSL加密如何重塑互联网安全格局 随着互联网技术的飞速发展,网络安全问题日益凸显,保护用户数据的安全性和隐私性成为了不可忽视的重要议题。从HTTP(超文本传输协议)到HTTPS(超文本传输安全协…

webrtc ns 降噪之粉红噪声参数推导

webrtc中降噪中,前50帧需要进行简单噪声估计,使用白噪声和粉红噪声模型估算。 首先我们 复习 有色噪声(包含白噪声)的一般模型: S(f) 是频率 f 处的功率谱密度。f是频率。α 是一个频谱指数,通常在1左右。…

如何使用ssm实现海鲜自助餐厅系统+vue

TOC ssm068海鲜自助餐厅系统vue 绪论 1.1 选题背景 网络技术和计算机技术发展至今,已经拥有了深厚的理论基础,并在现实中进行了充分运用,尤其是基于计算机运行的软件更是受到各界的关注。计算机软件可以针对不同行业的营业特点以及管理需…

【C++ Primer Plus习题】3.3

问题: 解答: #include <iostream> using namespace std;const int DE_TO_MI 60; const int MI_TO_SE 60;int main() {int degree 0, minute 0, second 0;float degrees 0;cout << "请输入度:";cin >> degree;cout << "请输入分…

Selenium + Python 自动化测试23(综合实战)

我们的目标是:按照这一套资料学习下来,大家可以独立完成自动化测试的任务。 上一篇我们讨论了PO模式和unittest框架、数据驱动结合起来使用。 本篇文章我们综合一下之前学习的内容,试着编写实际项目易用的测试用例脚本。 今天应该是此项目最后一次分享,大家快看,有完整的…

IntelliJ IDEA的maven配置

前言 在 IntelliJ IDEA 中&#xff0c;Maven 的默认配置文件是 settings.xml&#xff0c;它通常位于以下路径&#xff1a; 配置文件位置 全局配置文件&#xff1a; Windows: %USER_HOME%\.m2\settings.xmlmacOS/Linux: ~/.m2/settings.xml 这个文件是 Maven 的全局配置文件。…

闲鱼IP属地地址:去外地会自动变化吗?解析实时更新机制

在数字化时代&#xff0c;网络交易平台如闲鱼已成为我们日常生活中不可或缺的一部分。在进行二手交易时&#xff0c;了解对方的地理位置信息成为许多买家和卖家的关切点。那么&#xff0c;去外地闲鱼IP会变吗&#xff1f;闲鱼IP属地地址是实时更新吗&#xff1f;本文将深入探讨…

C#开发基础之I/O 异步和多线程异步:本质上的区别与使用场景

前言 在桌面软件开发中&#xff0c;异步编程是一种至关重要的技巧&#xff0c;尤其是在需要提高应用程序响应性和并发处理能力时。常见的异步编程模式主要包括 I/O 异步和多线程异步&#xff0c;这两者虽然都实现了非阻塞操作&#xff0c;但在本质上有着显著的区别。理解它们的…

USB分析仪USB3.2日志分析

1.简介 USB2.0总线采用轮询模式&#xff0c;即总线事务开始时&#xff0c;都要先发送IN或者OUT令牌包&#xff0c;以通知端点或者查询端点是否准备好。而USB3.2采用了异步通知模式&#xff0c;若端点没有准备好&#xff0c;则主机无需轮询&#xff0c;端点准备好后会通知主机&…

进程创建:fork函数

fork函数 在Linux系统中&#xff0c;fork函数是用于创建一个新的进程的函数。调用fork函数会创建一个新的进程。 fork函数的原型如下&#xff1a; #include <unistd.h>pid_t fork(void);fork函数没有参数&#xff0c;返回值是一个pid_t类型的值。在成功创建新的进程后…

Python酷库之旅-第三方库Pandas(094)

目录 一、用法精讲 401、pandas.Series.to_string方法 401-1、语法 401-2、参数 401-3、功能 401-4、返回值 401-5、说明 401-6、用法 401-6-1、数据准备 401-6-2、代码示例 401-6-3、结果输出 402、pandas.Series.to_clipboard方法 402-1、语法 402-2、参数 40…

【精选】基于python的影片数据爬取与数据分析

博主介绍&#xff1a; ✌我是阿龙&#xff0c;一名专注于Java技术领域的程序员&#xff0c;全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师&#xff0c;我在计算机毕业设计开发方面积累了丰富的经验。同时&#xff0c;我也是掘金、华为云、阿里云、InfoQ等平台…