Docker镜像的修改和自定义

一、docker镜像的更新

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

docker run -it 3afd47092a0e
[[email protected] /]# 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 "[email protected]"

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)

原文地址:https://www.cnblogs.com/cangqinglang/p/10676013.html

时间: 2024-10-08 22:43:46

Docker镜像的修改和自定义的相关文章

Centos7 的Docker 镜像地址修改

安装docker后,docker默认镜像地址是国外docker官网地址,由于国内网速的原因,下载镜像非常慢,且容易断网,所以安装docker 后我们一般需要将docker改成国内的镜像地址,其方法如下:1.vi /etc/docker/daemon.json{"registry-mirrors":["https//registry.docker-cn.com"]}2.加载docker镜像配置 Systemctl daemon-reload 3.重启docker服务S

Dockerfile创建自定义Docker镜像以及CMD与ENTRYPOINT指令的比较

1.概述 创建Docker镜像的方式有三种 docker commit命令:由容器生成镜像: Dockerfile文件+docker build命令: 从本地文件系统导入:OpenVZ的模板. 关于这三种方式的大致说明请参考yeasy/docker_practice的创建镜像. 最近学习了Dockerfile文件的相关配置,这里做一下简单的总结,并对之前一直感到有些迷惑的CMD和ENTRYPOINT指令做个差异对比. 2.Dockerfile文件总结 Dockerfile 由一行行命令语句组成,

利用Docker volume修改Nginx Docker镜像里index.html

通过这个小例子我们可以进一步加深对Docker volume概念的理解和使用方法. 我们都知道运行基于Docker的Nginx镜像后,访问localhost能看到Nginx默认的首页,这个首页的位置是Nginx镜像内的/usr/share/nginx/html目录下面. 假设我们有个需求,修改Nginx默认的首页成下面的内容: <html> <head> <title>Custom Website from my container</title> <

构建自定义Docker镜像使用ApacheHttp服务的代理功能

1,修改httpd.conf 以下两行前的注释字符 # 去掉: #LoadModule proxy_module modules/mod_proxy.so #LoadModule proxy_http_module modules/mod_proxy_http.so 2,添加代理规则 在httpd.conf 文件的最后加上转发规则 例如: ProxyPass /baidu http://www.baidu.com ProxyPassReverse /baidu http://www.baidu.

Linux修改docker镜像和容器数据存储位置

指定镜像和容器存放路径的参数是--graph=/var/lib/docker,其默认存储位置为/var/lib/docker, Docker 的配置文件可以设置大部分的后台进程参数,在各个操作系统中的存放位置不一致, 1. 在 Ubuntu 中的位置是:/etc/default/docker, OPTIONS=--graph="/root/data/docker" -H fd://# 或者DOCKER_OPTS="-g /root/data/docker" 最后重新

构建自定义docker镜像,上传至docker hub

docker 优势 (外部参考) Docker 让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后 发布到任何流行的Linux机器上,便可以实现虚拟化.Docker改变了虚拟化的方 式,使开发者可以直接将自己的成果放入Docker中进行管理.方便快捷已经是 Docker的最大优势,过去需要用数天乃至数周的任务,在Docker容器的处理下,只需要数秒就能完成. 安装docker(请参考外部链接) [Ubuntu Docker 安装](http://www.runoob.com/dock

Docker】如何修改Docker的默认镜像存储位置

江湖有多大,坑就有多多……我使用的服务器, 系统盘根目录只有20G, 默认Docker 的镜像文件是安装在/var/lib/docker 目录下的, 这样的话我根本装不了太多的镜像,之前遇到一种情况就是docker服务对磁盘的读写操作太大,而且是软连接方式,导致服务器的磁盘不可用,当然测试环境用的是虚拟服务器. 所以这个中情况需要调整一下. 服务器环境:centos7,docker1.12.6 方案1:使用软链接方式(不建议,可以了解一下)默认情况下Docker的存放位置为:/var/lib/d

Linux下正确修改Docker镜像和容器的默认存储位置,亲测有效

原文:Linux下正确修改Docker镜像和容器的默认存储位置,亲测有效 我们通过 yum 的方式安装完Docker环境后,它默认的存储位置是 /var/lib/docker,默认的 pid 存放位置是 /var/run/docker.pid. 如果仅仅是做测试,我们可能没有必要修改,但是当大量使用docker镜像的时候,我们可能就要默认存储的位置了. 具体操作方法如下: 1.停止docker: service docker stop 2.修改docker服务的service文件: vim /u

Ubuntu18.04下修改docker镜像源

在国内访问国外的Docker镜像源通常都是非常慢的,特别是最近GFW升级后,就变得更加慢了,因为要使用Docker中的镜像,这个时候最好就是将镜像指向国内的资源. 国内亲测可用的几个镜像源: Docker 官方中国区:https://registry.docker-cn.com    网易:http://hub-mirror.c.163.com    中国科技大学:https://docker.mirrors.ustc.edu.cn    阿里云:https://y0qd3iq.mirror.a