Docker镜像的修改和自定义

一、docker镜像的更新

(1)启动镜像,写入一些文件或者更新软件

docker run -it 3afd47092a0e
[root@44652ba46352 /]# ls

(2)更新镜像

docker commit -m="test update" -a="wangsir" 44652ba46352 wangsir/centos-test:7.4.1708
sha256:7853e6064af8b218bbfb44cc2421dffbba0eeace561392eaea995d4cf8b0f301

参数解释:

-m:提交的描述信息

-a:指定镜像作者

44652ba46352:容器ID

wangsir/centos-test:7.4.1708:指定要创建的目标镜像名

(3)查看更新是否成功

docker images

二、修改镜像标签tag

docker tag 7853e6064af8 wangsir/centos-test:7.4.1708

三、自定义制作docker镜像

1、docker build从镜像源制作镜像

(1)选择目录创建一个Dockerfile,编辑镜像配置文件

vi Dockerfile

FROM    centos:6.7
MAINTAINER      Fisher "wangsir@sudops.com"

RUN     /bin/echo 'root:rootpswd' |chpasswd
RUN     useradd runoob
RUN     /bin/echo 'wangsir:123456' |chpasswd
RUN     /bin/echo -e "LANG=\"en_US.UTF-8\"" >/etc/default/local
EXPOSE  22
EXPOSE  80
CMD     /usr/sbin/sshd -D
参数解释:

FROM--基于哪个镜像

RUN--安装软件用

MAINTAINER--镜像创建者
CMD--container启动时执行的命令,但是一个Dockerfile中只能有一条CMD命令,多条则只执行最后一条CMD

[注意]:当docker run command的命令匹配到CMD command时,会替换CMD执行的命令

ENTRYPOINT--container启动时执行的命令,但是一个Dockerfile中只能有一条ENTRYPOINT命令,如果多条,则只执行最后一条,ENTRYPOINT没有CMD的可替换特性

USER--使用哪个用户跑container

EXPOSE--container内部服务开启的端口。主机上要用还得在启动container时,做host-container的端口映射:

docker run -d -p 127.0.0.1:33301:22 centos-img
container ssh服务的22端口被映射到主机的33301端口
ENV--用来设置环境变量

ADD--将和Dockerfile同目录的文件拷贝到container的文件系统对应的路径<dest>,所有拷贝到container中的文件和文件夹权

限为0755,uid和gid为0,ADD只有在build镜像的时候运行一次,后面运行container的时候不会再重新加载了

VOLUME--可以将本地文件夹或者其他container的文件夹挂载到container中。

WORKDIR--切换目录用,可以多次切换(相当于cd命令),对RUN,CMD,ENTRYPOINT生效
ONBUILD--ONBUILD指定的命令在构建镜像时并不执行,而是在它的子镜像中执行

(2)构建镜像docker build -t [生成的镜像名] [Dockerfile的相对路径/绝对路径]

docker build -t wangsir/centos:6.7 .

#运行错误

[1]docker run -it 9df5b75bdd28

/bin/sh: /usr/sbin/sshd: No such file or directory

2、febootstrap根据源码制作镜像[febootstrap在centos7已更改为supermin,yum源无法安装,需要先下载rpm包通过rpm安装]

(1)下载rpm安装febootstrap

rpm -ivh *.rpm

(2)获取要制作镜像的源文件

febootstrap -i [要安装的软件] [生成镜像名] [镜像源文件存储位置] [获取镜像源文件的远程地址/本地路径]

febootstrap -i bash -i wget -i yum -i iputils -i iproute -i man -i vim -i openssh-server -i openssh-clients -i tar -i gzip centos6 /usr/local/MyDockerImage/centos6-image  http://mirrors.aliyun.com/centos/6/os/x86_64/

可以看到生成的文件夹centos6-image

(3)打包成tar包生成镜像[类似于import导入tar包镜像]

tar -c . | docker import - centos6-img:6.5

docker images即可查看到镜像centos6-img:6.5

#错误

[1]febootstrap执行后显示:
/bin/bash: /usr/local/MyDockerImage/centos6-image/lib64/libc.so.6: version `GLIBC_2.14' not found (required by /bin/bash)
/bin/bash: /usr/local/MyDockerImage/centos6-image/lib64/libc.so.6: version `GLIBC_2.15' not found (required by /bin/bash)
rm: /usr/local/MyDockerImage/centos6-image/lib64/libc.so.6: version 'GLIBC_2.14' not found (required by rm)

3、#错误

参考博客:http://blog.csdn.net/wsscy2004/article/details/25878223

原文:https://blog.csdn.net/zhongyuemengxiang/article/details/79120748 
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值