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

news2024/11/15 7:39:07

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 --help

Usage:  docker save [OPTIONS] IMAGE [IMAGE...]

Save one or more images to a tar archive (streamed to STDOUT by default)

Aliases:
  docker image save, docker save

Options:
  -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 --help

Usage:  docker load [OPTIONS]

Load an image from a tar archive or STDIN

Aliases:
  docker image load, docker load

Options:
  -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 1500
        inet 172.17.0.2  netmask 255.255.0.0  broadcast 172.17.255.255
        ether 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 0
        TX packets 6207  bytes 348509 (340.3 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::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 0
        TX 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 --help

Usage:  docker inspect [OPTIONS] NAME|ID [NAME|ID...]

Return low-level information on Docker objects

Options:
  -f, --format string   Format output using a custom template:
                        'json':             Print in JSON
                        format
                        'TEMPLATE':         Print output using
                        the given Go template.
                        Refer to
                        https://docs.docker.com/go/formatting/
                        for more information about formatting
                        output with templates
  -s, --size            Display total file sizes if the type is
                        container
      --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 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::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 0
    inet 172.17.0.2/16 brd 172.17.255.255 scope global eth0
       valid_lft forever preferred_lft forever

[root@docker0 ~]# docker exec c101 ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.17.0.3  netmask 255.255.0.0  broadcast 172.17.255.255
        ether 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 0
        TX packets 163  bytes 9248 (9.0 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::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 0
        TX 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.coloradmin.cn/o/2075090.html

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

相关文章

查找3(红黑树、B树)

一、红黑树 1&#xff09;红黑树的定义和性质 不包括根节点本身的那个黑 2&#xff09;红黑树的查找 3&#xff09;红黑树的插入 4)删除操作 二、B树 1&#xff09;概念B树的查找 2&#xff09;B树的插入 3)B树的删除 三、B树 B树 B树 和OS相关 读磁盘时间开销大

别再为App安装唤起烦恼!Xinstall帮你轻松搞定

在移动互联网时代&#xff0c;App的推广和运营成为了开发者们面临的一大挑战。尤其是当用户通过各种渠道下载并安装App后&#xff0c;如何能够便捷地唤起App&#xff0c;提高用户的使用频率和粘性&#xff0c;成为了摆在推广者面前的一大难题。今天&#xff0c;我们就来揭秘一款…

wangeditor编辑器自定义按钮和节点,上传word转换html,文本替换

vue3ts 需求&#xff1a;在编辑器插入图片和视频时下方会有一个输入框填写描述&#xff0c;上传word功能 wangeditor文档wangEditor开源 Web 富文本编辑器&#xff0c;开箱即用&#xff0c;配置简单https://www.wangeditor.com/ 安装&#xff1a;npm install wangeditor/edit…

将标准输入stdin转换成命令行参数——Unix中的xargs指令

xargs是Unix中的复合指令加工机&#xff0c;联合管道符“|”将制造更加强大的“复杂”指令组合。 (笔记模板由python脚本于2024年08月22日 18:13:51创建&#xff0c;本篇笔记适合喜欢Linux的coder翻阅) 【学习的细节是欢悦的历程】 Python 官网&#xff1a;https://www.python.…

【数据结构与算法】使用哈夫曼编码压缩文本

哈夫曼编码原理 哈夫曼编码属于一种基于字符出现频率的贪心算法&#xff0c;其通过构建哈夫曼树&#xff0c;为文本中的每一个字符赋予独一无二的二进制编码。频率较高的字符会被分配较短的编码&#xff0c;而频率较低的字符则会被分配较长的编码&#xff0c;以此达成压缩数据…

通过模板级知识蒸馏进行掩模不变人脸识别

Mask-invariant Face Recognition through Template-level Knowledge Distillation 创新点 1.提出了一种掩模不变人脸识别解决方案&#xff08;MaskInv&#xff09;&#xff0c;该解决方案在训练范式中利用模板级知识蒸馏&#xff0c;旨在生成与相同身份的非蒙面人脸相似的蒙面…

上半年大模型遍地开花,大模型发展中有哪些经验和教训?

前言 过去一年里&#xff0c;大模型遍地开花&#xff0c;我自己也在做大模型训练相关的工作&#xff0c;踩过了很多很多坑&#xff0c;这里分享一些教训&#xff1a;用成熟的分布式训练框架&#xff1a; 多用 DeepSpeed&#xff0c;少用 Pytorch 原生的 torchrun。在节点数量较…

Android settings命令讲解和实战

1&#xff0c;简介 在Android系统中&#xff0c;settings命令用于管理设备设置。这些命令可以与Settings提供者&#xff08;Settings provider&#xff09;交互&#xff0c;后者是一个用于存储和检索系统设置的系统服务。Settings provider在Android系统中可以被看作是一个特殊…

垃圾目标检测数据集

垃圾目标检测数据集。数据集已经标注好&#xff0c;txt标注&#xff0c;YOLO格式&#xff0c;适用于训练YOLO系列目标检测模型&#xff08;YOLO5 YOLO8 YOLO9 YOLO10等&#xff09;数据集已经划分好训练集&#xff08;4526张图&#xff09;验证集&#xff08;1046张图片&#x…

Git 分支操作全解析:创建、切换、合并、删除及冲突解决

“ 在现代软件开发中&#xff0c;高效的版本控制是确保项目成功的关键。Git 提供了强大的分支管理功能&#xff0c;使得开发者能够独立地进行功能开发、修复 bug 和进行紧急修补。本文将深入探讨 Git 分支的基本操作&#xff0c;包括创建、切换、合并和删除分支&#xff0c;同时…

使命同心,六西格玛同行,顶尖人才扎堆来!——张驰咨询

在当今竞争激烈的商业环境中&#xff0c;顶尖人才不仅是企业创新与突破的源泉&#xff0c;更是决定企业成败的关键因素。如何有效吸引并长期留住这些宝贵资源&#xff0c;成为企业家们亟待解决的难题。企业文化、领导风格以及先进的管理方法&#xff0c;如六西格玛&#xff0c;…

两个视频如何合成一个视频?推荐8个视频合并方法

两个视频如何合成一个视频&#xff1f;在数字时代&#xff0c;视频内容的创作和编辑变得越来越普及。无论是在个人项目还是专业制作中&#xff0c;将两个视频合并成一个已成为常见需求。这一操作不仅能提高视频内容的连贯性&#xff0c;还能增强观众的观看体验。下面&#xff0…

大模型火了一年半,AI应用如何实现商业变现?

自ChatGPT走红后&#xff0c;国内AI大模型建设潮起&#xff0c;如今经过一年半的快速发展后&#xff0c;大模型商业化显著提速。自生成式AI席卷各行业以来&#xff0c;市场对AI应用发展的预期高涨&#xff0c;但AI应用似乎陷入“增长难题”&#xff0c;进展不及预期&#xff0c…

Java筑基之路:数组的深入了解学习!

&#x1f51d;&#x1f51d;&#x1f51d;&#x1f51d;&#x1f51d;&#x1f51d;&#x1f51d;&#x1f51d;&#x1f51d;&#x1f51d;&#x1f51d;&#x1f51d;&#x1f51d;&#x1f51d;&#x1f51d; &#x1f947;博主昵称&#xff1a;小菜元 &#x1f35f;博客主页…

科技温柔拥抱梦乡!康姿百德柔压磁性枕舒适与科技的甜蜜邂逅

解锁未来睡眠新姿势&#xff01;康姿百德柔压磁性枕&#xff0c;科技护航每一夜好梦 在现代家居产品的设计中&#xff0c;科技与舒适性的结合越来越受到人们的关注。康姿百德柔压磁性枕正是一款将科技与舒适结合的产品&#xff0c;为现代生活注入了新的活力。 康姿百德柔压磁性…

【发邮件】 在邮件中添加 (mailto:) 链接的返回电子邮件

&#x1f433;打工人给导师发邮件&#xff0c;注意格式中学到的一个东西&#xff0c;记录一下 发送邮件想达到点击这个邮件就能到收件人的位置&#xff0c;不用跳转。 也就是你点击这个邮件 就能直接给你蹦到发送这个人&#xff0c;然后直接发送 只需要在邮件那个位置 加入超…

语言大模型的分布式训练与高效微调指南

最近语言大模型&#xff08;LLM&#xff09;异常火爆&#xff0c;一个非常特别的开源社区正在探索在消费级硬件上微调、提供服务和进行推理的最佳方式。为满足上述需求&#xff0c;出现了许多出色的开源代码库&#xff0c;以HuggingFace生态系统为中心&#xff0c;这些代码库还…

【干货】看看我司消息队列用啥,全网最接地气pulsar教程(含业务解耦demo源码)

前言 &#x1f34a;缘由 消息队列一出手&#xff0c;pulsar就知有没有 &#x1f423;闪亮主角 大家好&#xff0c;我是JavaDog程序狗 今天跟大家分享pulsar&#xff0c;一个分布式的消息发布/订阅传递平台。 本狗以身入局&#xff0c;将pulsar的使用场景&#xff0c;结合实…

【flask框架搭建服务器demo】Python 使用轻量级 Flask 框架搭建 Web 服务器可视化数据库数据demo

本文适合刚入门flask框架用来熟悉项目的开发人员&#xff0c;关于flask框架的组成概念一些用法请参考下面的文章 https://blog.csdn.net/qq_47452807/article/details/122289200 本文主要给出一个可视化sqlite数据库数据的demo&#xff0c;先展示一下效果&#xff1a; 主要的…