Docker实现导入导出镜像(Image)文件的代码示例例子解析

在这里插入图片描述

代码示例:

要使用Docker安装ELK(Elasticsearch、Logstash、Kibana)单节点,可以按照以下步骤进行:

  1. 创建Docker网络

    docker network create -d bridge elastic
    
  2. 拉取Elasticsearch镜像(以8.4.3版本为例):

    docker pull elasticsearch:8.4.3
    
  3. 运行Elasticsearch容器(第一次运行时不要使用-d参数,以便查看初始密码和token):

    docker run -it \
    -p 9200:9200 \
    -p 9300:9300 \
    --name elasticsearch \
    --net elastic \
    -e ES_JAVA_OPTS="-Xms1g -Xmx1g" \
    -e "discovery.type=single-node" \
    -e LANG=C.UTF-8 \
    -e LC_ALL=C.UTF-8 \
    elasticsearch:8.4.3
    

    运行后,记录控制台显示的elastic用户的密码和enrollment token。

  4. 创建Elasticsearch数据和配置的挂载目录

    mkdir -p /data/apps/elk8.4.3/elasticsearch
    
  5. 将Elasticsearch容器内的配置文件复制到主机

    docker cp elasticsearch:/usr/share/elasticsearch/config /data/apps/elk8.4.3/elasticsearch/
    docker cp elasticsearch:/usr/share/elasticsearch/data /data/apps/elk8.4.3/elasticsearch/
    docker cp elasticsearch:/usr/share/elasticsearch/plugins /data/apps/elk8.4.3/elasticsearch/
    docker cp elasticsearch:/usr/share/elasticsearch/logs /data/apps/elk8.4.3/elasticsearch/
    
  6. 删除旧的Elasticsearch容器

    docker rm -f elasticsearch
    
  7. 使用挂载卷重新运行Elasticsearch容器

    docker run -it \
    -d \
    -p 9200:9200 \
    -p 9300:9300 \
    --name elasticsearch \
    --net elastic \
    -e ES_JAVA_OPTS="-Xms1g -Xmx1g" \
    -e "discovery.type=single-node" \
    -e LANG=C.UTF-8 \
    -e LC_ALL=C.UTF-8 \
    -v /data/apps/elk8.4.3/elasticsearch/config:/usr/share/elasticsearch/config \
    -v /data/apps/elk8.4.3/elasticsearch/data:/usr/share/elasticsearch/data \
    -v /data/apps/elk8.4.3/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
    -v /data/apps/elk8.4.3/elasticsearch/logs:/usr/share/elasticsearch/logs \
    elasticsearch:8.4.3
    
  8. 拉取并运行Kibana容器(以8.4.3版本为例):

    docker run -it \
    -d \
    --restart=always \
    --log-driver json-file \
    --log-opt max-size=100m \
    --log-opt max-file=2 \
    --name kibana \
    -p 5601:5601 \
    --net elastic \
    -v /data/apps/elk8.4.3/kibana/config:/usr/share/kibana/config \
    -v /data/apps/elk8.4.3/kibana/data:/usr/share/kibana/data \
    -v /data/apps/elk8.4.3/kibana/plugins:/usr/share/kibana/plugins \
    -v /data/apps/elk8.4.3/kibana/logs:/usr/share/kibana/logs \
    kibana:8.4.3
    
  9. 访问Kibana
    打开浏览器访问 http://<你的服务器IP>:5601,使用步骤3中记录的elastic用户密码进行认证。

  10. (可选)配置Filebeat

    • 拉取Filebeat镜像:
      docker pull elastic/filebeat:8.4.3
      
    • 运行Filebeat容器:
      docker run -it \
      -d \
      --name filebeat \
      --network host \
      -e TZ=Asia/Shanghai \
      -v /data/apps/elk8.4.3/filebeat/filebeat.yml:/usr/share/filebeat/filebeat.yml \
      -v /data/apps/elk8.4.3/filebeat/data:/usr/share/filebeat/data \
      -v /data/apps/elk8.4.3/filebeat/logs:/usr/share/filebeat/logs \
      elastic/filebeat:8.4.3 \
      filebeat -e  -c /usr/share/filebeat/filebeat.yml
      

请注意,以上步骤中的数据目录和配置目录路径需要根据实际情况进行调整。此外,确保Docker服务正在运行,并且你有足够的权限来执行这些命令。

喜欢本文,请点赞、收藏和关注!
在这里插入图片描述

代码示例:

在Docker中,导入和导出镜像是常见的操作,可以通过两种不同的方式完成:使用docker savedocker load命令,或者使用docker exportdocker import命令。

使用docker savedocker load

  1. 导出镜像
    使用docker save命令可以将指定的镜像保存成tar归档文件。

    docker save -o myimage.tar myimage:tag
    

    其中myimage:tag是你想要导出的镜像名和标签,myimage.tar是导出文件的名称。

  2. 导入镜像
    使用docker load命令可以将tar归档文件导入为镜像。

    docker load --input myimage.tar
    

    或者使用管道直接导入:

    docker load < myimage.tar
    

使用docker exportdocker import

  1. 导出容器
    使用docker export命令可以将容器的文件系统导出为tar归档文件。

    docker export container_id > container.tar
    

    其中container_id是容器的ID。

  2. 导入容器
    使用docker import命令可以将tar归档文件导入为镜像。

    docker import container.tar myimage:newtag
    

    或者使用管道直接导入:

    cat container.tar | docker import - myimage:newtag
    

    其中container.tar是导出的容器文件,myimage:newtag是导入后镜像的名称和标签。

注意事项

  • docker savedocker load操作的是镜像,而docker exportdocker import操作的是容器。
  • 使用docker export导出的文件体积通常小于docker save导出的镜像文件体积。
  • docker import可以为导入的镜像指定新的名称和标签,而docker load不能对载入的镜像重命名。
  • docker save支持将多个镜像打包到一个文件中,而docker export不支持。
  • docker export导出的镜像会丢失所有的历史记录和元数据信息,而docker save保存的镜像包含完整的历史记录,可以进行回滚操作。
  • docker export适合用来制作基础镜像,docker save适合在没有外网连接的环境中部署使用多个镜像的应用。

请根据你的具体需求选择合适的命令进行操作。

喜欢本文,请点赞、收藏和关注!

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

乔丹搞IT

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值