docker镜像,ip,端口映射,持久化

docker

镜像的迁移:导出和导入镜像

查看镜像:

[root@docker ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
centos       latest    5d0da3dc9764   2 years ago   231MB

打包

将镜像打包,找到save,可以将镜像保存为一个tar包,可以将tar发送给其他用户,也可以作为备份
[root@docker ~]# docker save -o centos.tar centos:latest 
[root@docker ~]# ls
anaconda-ks.cfg  centos.tar  RHEL7-extras.iso  RHEL7OSP-10.iso
[root@docker ~]# docker ps 
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
[root@docker ~]# docker ps -all
CONTAINER ID   IMAGE           COMMAND       CREATED        STATUS                      PORTS     NAMES
b9d46da21fe3   centos:latest   "/bin/bash"   20 hours ago   Exited (0) 10 minutes ago             c0

删除镜像:

删除镜像时,如果有这个镜像生成的容器正在使用(exited时也不能删除),那么就无法使用rmi移除镜像

[root@docker ~]# docker rmi centos:latest 
Error response from daemon: conflict: unable to remove repository reference "centos:latest" (must force) - container b9d46da21fe3 is using its referenced image 5d0da3dc9764
删除容器,退出容器up状态

docker stop c0

[root@docker ~]# docker rm c0
c0

使用docker ps -all 确定没有镜像

[root@docker ~]# docker ps -all
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
[root@docker ~]# docker rmi centos:latest 
Untagged: centos:latest
Untagged: centos@sha256:a27fd8080b517143cbbbab9dfb7c8571c40d67d534bbdee55bd6c473f432b177
Deleted: sha256:5d0da3dc976460b72c77d94c8a1ad043720b0416bfc16c52c45d4847e53fadb6
Deleted: sha256:74ddd0ec08fa43d09f32636ba91a0a3053b02cb4627c35051aff89f853606b59
[root@docker ~]# docker images
REPOSITORY   TAG       IMAGE ID   CREATED   SIZE

加载

从tar中引入镜像:将tar文件加载到镜像中

docker  --help

docker load --help
[root@docker ~]# ls
anaconda-ks.cfg  centos.tar  RHEL7-extras.iso  RHEL7OSP-10.iso
[root@docker ~]# docker load -i centos.tar 
74ddd0ec08fa: Loading layer  238.6MB/238.6MB
Loaded image: centos:latest
[root@docker ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
centos       latest    5d0da3dc9764   2 years ago   231MB

创建镜像

1.从容器导出tar包

查看帮助文档

     docker --help

     docker export --help

使用指令

     docker  export -o centos_yum.tar  c0

查看新生成的tar包

2.从tar包导入镜像

查看帮助文档

     docker --help

     docker  import --help 

使用导入

     Usage:  docker import [OPTIONS] file|URL|- [REPOSITORY[:TAG]]
     docker  import -m 说明内容  centos_yum.tar  centos:yum

查看镜像,这个镜像不需要我们配置yum

创建容器c0,在c0容器中配置了阿里云镜像和epel-release,ctrl+p+q在后台运行容器

容器打包:

[root@docker ~]# docker export -o centos_yum.tar c0
[root@docker ~]# ls
anaconda-ks.cfg  centos_yum.tar    RHEL7OSP-10.iso
centos.tar       RHEL7-extras.iso

引入镜像:
[root@docker ~]# docker import -m yum centos_yum.tar centos:yum
sha256:c03efa37a8dc3ab41a31a56f9a12c80374c8ccb321d57a617bd2b53a07d4f71e

[root@docker ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED          SIZE
centos       yum       c03efa37a8dc   22 seconds ago   260MB
centos       latest    5d0da3dc9764   2 years ago      231MB

验证:

[root@docker ~]# docker stop c0
c0
[root@docker ~]# docker ps -a
CONTAINER ID   IMAGE           COMMAND       CREATED          STATUS                     PORTS     NAMES
882870618b17   centos:latest   "/bin/bash"   15 minutes ago   Exited (0) 6 seconds ago             c0
[root@docker ~]# docker rm c0
c0
[root@docker ~]# docker ps -a
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
[root@docker ~]# docker run -it --name c0 centos:yum /bin/bash
[root@860c52d03ab9 /]# ls /etc/yum.repos.d
CentOS-Base.repo   epel-playground.repo       epel-testing.repo
epel-modular.repo  epel-testing-modular.repo  epel.repo


ip网络:查看ip

1.交互式:进入到容器,使用指令

docker start c0

docker attach c0

yum -y install net-tools或者iproute

ifconfig或ip a  s 来查看地址

2.使用docker指令inspect

[root@docker ~]# docker inspect c100

3.在外部调用指令:exec

前提是在容器上下载相关的工具或者

docker exec c100 yum -y install net-tools

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

[root@docker ~]# docker exec c100 ifconfig

使用exec指令touch一个文件

[root@docker ~]# docker exec c100 touch /opt/test.txt
[root@docker ~]# docker exec c100 ls /opt
test.txt
 

启动容器并端口映射

不做端口映射的话,在物理机上无法查看docker容器发布的服务

1.指定端口映射

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

docker run -it --name c0 -p80(宿主机):80(容器)  centos:httpd /bin/bash

2.随机端口映射

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

docker run -it --name c1 -p80(容器) centos:httpd /bin/bash

crtl+p+q

docker  ps

3.指定其他ip的端口映射

通过其他的ip地址的端口映射容器的端口

通过ifconfig添加一个ip

docker run -it --name c0 -pIP地址::80 centos:httpd /bin/bash

[root@docker ~]# ifconfig ens33:0 192.168.118.56 broadcast 192.168.118.56 netmask 255.255.255.255 up
[root@docker ~]# docker run -it --name c0 -p192.168.118.56::80 centos:httpd /bin/bash
[root@91b858d59851 /]# httpd -k start
[root@91b858d59851 /]# curl localhost
i am httpd
[root@91b858d59851 /]# [root@docker ~]# 
[root@docker ~]# docker ps --all
CONTAINER ID   IMAGE          COMMAND       CREATED          STATUS          PORTS                          NAMES
91b858d59851   centos:httpd   "/bin/bash"   50 seconds ago   Up 50 seconds   192.168.118.56:32768->80/tcp   c0
 

[root@docker ~]# curl 192.168.118.56:32768
i am httpd

持久化:共享卷,挂载

将宿主机上的source目录与容器中的data目录共享:
[root@docker ~]# ls /
bin   dev  home  lib64  mnt  proc  run   source  sys  usr
boot  etc  lib   media  opt  root  sbin  srv     tmp  var
[root@docker ~]# docker run -it --name c0 -v /source:/data centos:httpd /bin/bash
[root@805a80743684 /]# ls
bin   dev  home  lib64         media  opt   root    sbin  sys  usr
data  etc  lib     lost+found  mnt    proc  run    srv   tmp  var
[root@805a80743684 /]# [root@docker ~]# 
[root@docker ~]# touch /source/abc.txt
[root@docker ~]# ls /source
abc.txt
[root@docker ~]# docker exec c0 ls /data
abc.txt
[root@docker ~]# docker exec c0 touch /data/def.txt
[root@docker ~]# ls /source
abc.txt  def.txt
 

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

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

相关文章

【非常困难】 猿人学web第一届 第10题 js 混淆 - 重放攻击对抗

文章目录 调试干扰第一个 debuggerHook 代码 第二个 debuggerHook 代码 第三个 Function.constructor.prototype 检测Hook 代码 完整的 Hook 代码 接口分析加密参数 m 生成位置加密参数还原加密点扣代码提示_yrxyA\$()var _yrxmEu _yrxWKg(_yrxyHJ...._yrxWKg() let result _…

半枚玄月照见人间空荡荡

半枚玄月照见人间空荡荡 昨夜玄月昨夜风,轻吹往事落心中。 众里寻他为何事?鸡鸣月落一场空。玄月 沙发上刷短视频笑得不经意抬头,忽而瞥见窗口防盗网挂着半枚月亮,玄黄色的,温润而冷冽,引人注目。 手机里…

国货之光|暴雨机推出面向大模型训练的AI服务器

当前,“百模大战”带来了算力需求的爆发,尤其是以ChatGPT为代表的多模态AI大模型,‌其参数规模和训练数据量均达到了前所未有的规模。‌GPT-3.5、‌GPT-4等模型的参数规模突破了万亿级别,‌训练数据量达到了TB级别,‌这…

zdppy+vue3+onlyoffice文档管理系统实战 20240823上课笔记 zdppy_cache框架的低代码实现

遗留问题 1、封装API2、有账号密码3、查询所有有效的具体数据,也就是缓存的所有字段 封装查询所有有效具体数据的方法 基本封装 def get_all(self, is_activeTrue, limit100000):"""遍历数据库中所有的key,默认查询所有没过期的:para…

基于GPT回答:结合不同专业,论述GIS应用的关键技术问题

1. 智能化数据质量管理 **技术挑战:** - 自动化数据清洗与补全 - 自适应数据标准化 **解决方案:** - **AI驱动的数据处理**:利用深度学习进行数据修复和格式转换,提高数据质量和一致性。 2. 高效空间数据集成 **技术挑战&a…

【Tools】区块链技术的应用场景和优势

紧紧握着 青花信物 信守着承诺 离别总在 失意中度过 记忆油膏 反复涂抹 无法愈合的伤口 你的回头 划伤了沉默 🎵 周传雄《青花》 区块链技术的应用场景和优势是多样且广泛的。以下是一些常见的应用场景和优势: 金融服务&#xff1a…

51单片机——LED灯控制

1、LED介绍 中文名:发光二极管 外文名:Light Emitting Diode 简称:LED 用途:照明、广告灯、指引灯、屏幕 2、LED原理图 电阻在原理图上标注为1k,表示这是1千欧的电阻,实际在电路板上的表示是102 102解…

Godot《躲避小兵》实战之创建游戏主场景

游戏主场景 现在是时候将我们所做的一切整合到一个可玩的游戏场景中了。 创建新场景并添加一个 Node节点,命名为 Main。(我们之所以使用 Node 而不是 Node2D,是因为这个节点会作为处理游戏逻辑的容器使用。本身是不需要 2D 功能的。&#x…

C\C++ Sqlite3使用详解

C\C++ Sqlite3使用详解 一、源码下载二、sqlite3接口说明C++2.1 项目创建以及sqlite3使用2.1 连接数据库2.2 sqlite创建表2.2.1 示例代码2.2.2 注意事项2.3 sqlite插入数据2.3.1 示例代码2.3.2 注意事项2.4 sqlite数据删除2.5 sqlite数据查询一、源码下载 下载地址: https://…

oneapi 获取通义千问模型密钥

1、打开 阿里云百炼大模型平台,点击开通,登录账号 2、获取密钥 3、查看模型名称,可以添加到 oneapi 的渠道中 别忘了添加向量模型

python库(21):

1 TextBlob简介 TextBlob 是一个基于 Python 的文本处理库,能够让基础的自然语言处理任务变得异常简单。 它提供了一个简单直观的 API,让你能够轻松执行词性标注、名词短语提取、情感分析、文本分类和关键词提取等功能。 值得一提的是,Tex…

[Linux]如何在虚拟机安装Ubuntu?(小白向)

一、我们为什么要在虚拟机中安装Ubuntu? 在虚拟机中安装系统主要是为了让一个系统与我们原本的系统隔离,不管是想运行一些不安全的软件,或者是想运行一些独特的操作系统,我们都可以选择使用虚拟机来安装和隔离这些操作系统。如果你是一位Lin…

编译报错declaration may not appear after executable statement in block

这个错误是因为在代码块中,声明语句不能出现在可执行语句之后。也就是说,如果你在一个代码块中先写了一些可执行语句,再写了一 些声明语句,就会出现这个错误。 解决方法:将声明语句放在可执行语句之前,或者…

跨越语言障碍:2024四款实用在线翻译工具评测!

随着技术的不断进步,各种在线翻译工具层出不穷,帮助我们轻松跨越语言的鸿沟。今天,让我们一起探索几款非常实用的在线翻译工具! 福昕在线翻译 直达链接: https://fanyi.pdf365.cn/ 福昕在线翻译是一款专注于文档翻…

【C++】函数模板特化:深度解析与应用场景

📢博客主页:https://blog.csdn.net/2301_779549673 📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正! 📢本文由 JohnKi 原创,首发于 CSDN🙉 📢未来很长&#…

[LeetCode]46.全排列(python)

1.代码 from typing import List class Solution:def permute(self, nums: List[int]) -> List[List[int]]:result: List[List[int]] [] length len(nums)def fill(n: int, nums: List[int]):if n length:result.append(nums[:]) returnfor i in range(n, length):num…

JVM-Java的四种引用

引用分析 无论是通过引用计数算法判断对象的引用数量,还是通过可达性分析算法判断对象是否可达,判定对象是否可被回收都与引用有关,Java 提供了四种强度不同的引用类型 强引用: 被强引用关联的对象不会被回收,只有所…

SQLite 插入数据并返回自增ID

要插入数据并返回自增ID,我们可以使用SQLite的last_insert_rowid()函数。这个函数返回了最后一次插入操作的自增ID。 下面我们通过一个示例来演示如何插入数据并返回自增ID。 首先,创建一个表来存储学生信息: CREATE TABLE students (id I…

【drools】8.44 例子ubuntu24.04 运行;IntelliJ 修复java: 错误: 不支持发行版本 5

首先是要有jdk 安装:这里是oracle的,不是openjdk ,【ubuntu24.04】安装oracle javasdk– 官方说可以直接跑 root@k8s-master-pfsrv:/home/zhangbin/perfwork/drools/drools-distribution-8.44.0.Final/examples# ./runExamples.sh Usage: ./runExamples.sh For example: .…

dubbo:dubbo+nacos整合springcloud gateway实现网关(三)

文章目录 0. 引言1. 集成gateway网关1.1 实操步骤1.2 dubbo提供者注册到nacos出现两个实例的问题 2. 源码3. 总结 0. 引言 上次我们讲到使用zookeeper作为注册中心搭建dubbo微服务框架,但是我们还缺少一个服务总入口,也就是我们的网关服务。所以今天我们…