Docker 镜像制作


一、环境

Docker 是一个开源项目,诞生于 2013 年初,最初是 dotCloud 公司内部的一个业余项目。它是基于 Google 公司推出的 Go 语言实现。项目后来加入了 Linux 基金会,遵从了 Apache 2.0 协议,项目代码在 GitHub 上进行维护。

OSDocker version
CentOS8.2.200420.10.5

CentOS资源下载:传送门

Docker资源下载:传送门

二、通过容器文件系统打包

将容器的文件系统打包成tar文件,也就是把正在运行的容器直接导出为tar包的镜像文件。

1、镜像制作

# 下载进行并运行容器
[root@zhurs ~]# docker pull centos:7.8.2003
[root@zhurs ~]# docker images
[root@zhurs ~]# docker run -itd -u root --privileged=true --name centos7.8 --restart=always centos:7.8.2003
[root@zhurs ~]# docker ps
[root@zhurs ~]# docker exec -it centos7.8 /bin/bash

# 容器中制作测试数据
[root@196669708a19 /]# cd /root/
[root@196669708a19 ~]# echo "test" > a.txt
[root@196669708a19 ~]# cat a.txt
test

# 将容器导出tar包
# 语法:docker export -o  自定义.tar  容器名或容器ID
[root@zhurs ~]# docker export -o centos7.8-1.tar centos7.8
或
# 语法:docker export 容器名或容器ID > 自定义.tar
[root@moscow-1 ~]# docker export centos7.8 > centos7.8-1.tar

2、导入镜像到宿主机(运行容器并验证)

# 导入镜像
[root@zhurs ~]# docker import centos7.8-1.tar centos:v7.8
[root@zhurs ~]# docker images
REPOSITORY   TAG        IMAGE ID       CREATED         SIZE
centos       v7.8       2b36201c960d   6 seconds ago   341MB

# 查看测试数据
[root@zhurs ~]# docker run -itd -u root --privileged=true --name centos7.8-test --restart=always centos:v7.8 /bin/bash
[root@zhurs ~]# docker exec -it centos7.8-test /bin/bash
[root@7eac1959940b /]# cd /root/
[root@7eac1959940b ~]# cat a.txt
test    # 数据保持一致

三、通过容器创建本地镜像

使用 docker commit 指令,把一个正在运行的容器,直接提交为一个本地镜像。

1、制作镜像

# 制作测试数据
[root@196669708a19 ~]# echo "abc" > b.txt

# 语法:docker commit -m "描述" -a "作者" 容器名或容器ID 自定义镜像名:tag
[root@zhurs ~]# docker commit -m "first images version" -a "zhurs" centos7.8 centos:v1

2、运行容器并验证

# 查看测试数据
[root@zhurs ~]# docker run -itd -u root --privileged=true --name centos7.8-v1 --restart=always centos:v1 /bin/bash
[root@zhurs ~]# docker exec -it centos7.8-v1 /bin/bash
[root@6ec514bc44c7 /]# cd root/
[root@6ec514bc44c7 ~]# cat b.txt
abc     # 数据保持一致

四、通过Dockerfile创建镜像

Dockerfile 是一个用来构建镜像的文本文件,docker build命令用于根据给定的Dockerfile构建Docker镜像。

1、创建 Dockerfile 文件

[root@zhurs ~]# mkdir dockertest
[root@zhurs ~]# cd dockertest/
[root@zhurs dockertest]# vim Dockerfile
#This is a test               # 注释
FROM centos:v7.8              # FROM 基础镜像(已存在)
MAINTAINER test test@zhurs    # MAINTAINER 描述 创建人
RUN yum install -y wget       # RUN shell命令       
RUN echo "hello" >> uu.txt
RUN mkdir /mytest
# 注:如果不加路径,则创建的文件默认在 / 下
# 此处仅做简单演示,还有很多语法指令,后续会再提到
# ...

2、创建镜像

[root@zhurs dockertest]# docker build -t centos:v2 . 

3、运行容器并验证

[root@zhurs dockertest]# docker run -itd -u root --privileged=true --restart=always --name centos-v2 centos:v2 /bin/bash
[root@zhurs dockertest]# docker exec -it centos-v2 /bin/bash    # 进入容器

在这里插入图片描述

五、镜像迁移

保存一台宿主机上的镜像为tar文件,然后可以导入到其他的宿主机上。很简单就两步:save打包和load导入。

1、save打包

[root@zhurs ~]# docker save -o nginx.tar daocloud.io/library/nginx 
# 会在当前目录生成nginx.tar包

2、load导入

[root@test ~]# docker load < nginx.tar
[root@test ~]# docker images
#导入后查看镜

<点击跳转至开头>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

云计算-Security

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

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

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

打赏作者

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

抵扣说明:

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

余额充值