Docker容器管理及镜像制作

Docker容器管理及镜像制作

一:创建自己的镜像

1.将容器的文件系统打包成tar包

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

导出:

export    
    Export a container's filesystem as a tar archive
有两种方式(elated_lovelace为容器名):
第一种:
[root@ neko ~]# docker export -o elated_lovelace.tar elated_lovelace
第二种:
[root@ neko ~]# docker export 容器名称 > 镜像.tar

导入:

导入镜像归档文件到其他宿主机:
import    
    Import the contents from a tarball to create a filesystem image
[root@ neko ~]# docker import elated_lovelace.tar  elated_lovelace:v1  

注意:

如果导入镜像时没有起名字,随后可以单独起名字(没有名字和tag),可以手动加tag。

[root@ neko ~]# docker tag 镜像ID mycentos:7  

2.镜像迁移

保存一台宿主机上的镜像为tar文件,然后可以导入到其他的宿主机上。

save      
    Save an image(s) to a tar archive
    将镜像打包,与下面的load命令相对应
[root@ neko ~]# docker save -o nginx.tar nginx
load      
    Load an image from a tar archive or STDIN
    与上面的save命令相对应,将上面sava命令打包的镜像通过load命令导入
[root@ neko ~]# docker load < nginx.tar

注:

1.tar文件的名称和保存的镜像名称没有关系

2.导入的镜像如果没有名称,自己打tag起名字

扩展:export和save的区别

export:相当于容器快照,容器快照文件将丢弃所有的历史记录和元数据信息

save:没有这个现象,就是完整的

3.通过容器创建本地镜像

背景:

容器运行起来后,又在里面做了一些操作,并且要把操作结果保存到镜像里。

方案:

使用 docker commit 指令,把一个正在运行的容器,直接提交为一个镜像。commit 是提交的意思,类似告诉svn服务器我要生成一个新的版本。

例子:

在容器内部新建了一个文件

[root@ neko ~]# docker exec -it 4ddf4638572d /bin/sh  
root@4ddf4638572d:/app# touch test.txt
root@4ddf4638572d:/app# exit
#  将这个新建的文件提交到镜像中保存
[root@ neko ~]# docker commit 4ddf4638572d  neko/helloworld:v2

例子:

[root@ neko ~]# docker commit -m "my images version1" -a " neko" 108a85b1ed99 daocloud.io/ubuntu:v2
sha256:ffa8a185ee526a9b0d8772740231448a25855031f25c61c1b63077220469b057
    -m                        添加注释
    -a                        作者
    108a85b1ed99              容器环境id
    daocloud.io/ubuntu:v2     镜像名称:hub的名称/镜像名称:tag 
    -p,–pause=true           提交时暂停容器运行

二:利用Dockerfile创建镜像

通过Dockerfile创建镜像,虽然可以自己制作 rootfs(根文件系统),但Docker 提供了一种更便捷的方式,叫作 Dockerfile。

docker build命令用于根据给定的Dockerfile和上下文以构建Docker镜像。

docker build语法:

[root@ neko ~]# docker build [OPTIONS] <PATH | URL | ->

1. 常用选项说明

–build-arg,设置构建时的变量

–no-cache,默认false。设置该选项,将不使用Build Cache构建镜像

–pull,默认false。设置该选项,总是尝试pull镜像的最新版本

–compress,默认false。设置该选项,将使用gzip压缩构建的上下文

–disable-content-trust,默认true。设置该选项,将对镜像进行验证

–file, -f,Dockerfile的完整路径,默认值为‘PATH/Dockerfile’

–isolation,默认–isolation=“default”,即Linux命名空间;其他还有process或hyperv

–label,为生成的镜像设置metadata

–squash,默认false。设置该选项,将新构建出的多个层压缩为一个新层,但是将无法在多个镜像之间共享新层;设置该选项,实际上是创建了新image,同时保留原有image。

–tag, -t,镜像的名字及tag,通常name:tag或者name格式;可以在一次构建中为一个镜像设置多个tag

–network,默认default。设置该选项,Set the networking mode for the RUN instructions during build

–quiet, -q ,默认false。设置该选项,Suppress the build output and print image ID on success

–force-rm,默认false。设置该选项,总是删除掉中间环节的容器

–rm,默认–rm=true,即整个构建过程成功后删除中间环节的容器

2. PATH | URL | -说明

给出命令执行的上下文。

上下文可以是构建执行所在的本地路径,也可以是远程URL,如Git库、tarball或文本文件等。如果是Git库,如https://github.com/docker/rootfs.git#container:docker,则隐含先执行git clone --depth 1 --recursive,到本地临时目录;然后再将该临时目录发送给构建进程。

构建镜像的进程中,可以通过ADD命令将上下文中的任何文件(注意文件必须在上下文中)加入到镜像中。

-表示通过STDIN给出Dockerfile或上下文。

示例:

[root@ neko ~]#  docker build - < Dockerfile

说明:该构建过程只有Dockerfile,没有上下文

[root@ neko ~]#  docker build - < context.tar.gz

说明:其中Dockerfile位于context.tar.gz的根路径

[root@ neko ~]# docker build -t champagne/bbauto:lat
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值