Docker-自定义镜像

在已有的docker镜像当中,添加一些自己需要的功能,封装成自己镜像。

例:自定义一个有yum源的centos的镜像

docker run -it docker.io/centos:latest	#启动一个容器
yum -y install vim net-tools pstree iproute bash-completion	#安装相关软件,最后一个是自动补全
rm -fr /etc/yum.repos.d/*
vim /etc/yum.repos.d/local.repo
[local_repo]
name = xxxx
baseurl = ftp://192.168.1.10/centos-base
enabled = 1
gpgcheck = 0

yum clean all
yum repolist

docker commit 容器id 容器名:标签	#容器保存成镜像

Dockerfile:

制作docker镜像的脚本,名字必须为Dockerfile

语法格式:
	FROM:基础镜像
	ADD:复制本地文件到镜像中,相当于scp
	RUN:制作镜像时执行的命令,命令在容器中执行,在Dockerfile文件中可以有多条
	CMD:使用docker run启动容器时执行的命令,在Dockerfile文件中仅能有一条
	WORKDIR:定义容器默认工作目录,相当于cd命令
	
	CMD使用方式:CMD ["命令", "参数1", "参数2", "参数n"]--> CMD ["/usr/sbin/sshd", "-D"]
	使用CMD运行的就是上帝进程。
	
	
例1:使用Dockerfile自定义一个有yum源的centos的镜像
	vim Dockerfile
	
	FROM docker.io/centos:latest	#选择基础镜像
	RUN rm -fr /etc/yum.repos.d/*	#制作镜像时,在容器中执行的命令
	ADD local.repo /etc/yum.repos.d/local.repo	#将本地文件拷贝到容器,本地文件必须和Dockerfile在同一个目录下
	RUN yum -y install vim net-tools pstree iproute bash-completion
	
	docker build -t myos:test .	#使用Dockerfile创建镜像,在Dockerfile所在的目录下执行


例2:使用Docker自定义一个服务容器,启动容器时,服务也同时启动(ssh服务为例)
	vim Dockerfile
	
	# 以下命令在制作镜像时执行
	FROM myos:test	#基础镜像
	RUN yum -y install openssh-server initscripts && sshd-keygen
	RUN echo "123456" | passwd --stdin root
	
	# 以下命令在启动容器时执行
	# 以下都可以在/usr/lib/systemd/system/xxx.service中找对应的选项
	ENV EnvironmentFile=/etc/sysconfig/sshd	#环境变量
	EXPOSE 22	#开放的端口
	CMD ["/usr/sbin/sshd", "-D"]	#启动容器时执行的命令
	
	docker build -t mysshd:test .	#使用Dockerfile创建镜像,在Dockerfile所在的目录下执行
	# 以上为容器创建了一个的root用户设置了密码为123456
	# 在使用docker run 启动容器的时候会自动开启ssh服务
	# 想要定义其他容器的服务也类似
	# 可以在/usr/lib/systemd/system/xxx.service找对应的选项

写总结的第七十四天!!!

你可能感兴趣的:(Docker-自定义镜像)