暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Dockerfile 常用指令

原创 鸿惊九天 2023-06-26
245
FROM: 基础镜像
	Syntax:
	FROM	centos:6.9
	FROM 	centos@2199b8eb8390
		
RUN:  构建镜像过程中运行的命令
	Syntax:
	RUN	 mv /etc/yum.repos.d/*.repo /tmp && echo -e "[ftp]\nname=ftp\nbaseurl=ftp://172.17.0.1/centos6.9\ngpgcheck
=0">/etc/yum.repos.d/ftp.repo && yum makecache fast && yum install openssh-server -y
	RUN	["mysqld","--initialize-insecure","--user=mysql"  ,"--basedir=/usr/local/mysql","--datadir=/data/mysql/data"] 

EXPOSE: 向外暴露的端口 
	Syntax:
		EXPOSE  22	
CMD    使用镜像启动容器时运行的命令
	Syntax:
	CMD	["/usr/sbin/sshd","-D"]

docker rmi $(docker image ls -a | grep "none" | awk '{print $3}') 


# 8.3 通过例子学习其他指令
## dockerfile 构建Lamp基础环境镜像
[root@docker dockerfile]# mkdir -p /opt/dockerfile/lamp
[root@docker dockerfile]# cd /opt/dockerfile/lamp/
[root@docker lamp]# vim dockerfile
# Centos6.9_sshd_LAMP
FROM centos:6.9
RUN mv /etc/yum.repos.d/*.repo /tmp && echo -e "[ftp]\nname=ftp\nbaseurl=ftp://172.17.0.1/centos6.9\ngpgcheck=0">/etc/yum.repos.d/ftp
.repo && yum makecache fast && yum install openssh-server htppd mysql mysql-server php php-mysql -y
RUN /etc/init.d/sshd start && echo "123456" | passwd  root --stdin  && /etc/init.d/mysqld start && /etc/init.d/httpd start
##RUN mysql -e "grant all on *.* to root@'%' identified by '123';grant all on *.* to discuz@'%' identified by '123';create database discuz charset utf8;"
COPY init.sh /
ADD  bbs.tar.gz /var/www/html/
ADD  https://mirrors.aliyun.com/centos/7.6.1810/os/x86_64/Packages/centos-bookmarks-7-1.el7.noarch.rpm /tmp
EXPOSE 22
EXPOSE 80
EXPOSE 3306
CMD ["/bin/bash","/init.sh"]

[root@docker lamp]# cat init.sh 
#!/bin/bash
/etc/init.d/mysqld start
mysql -e "grant all on *.* to root@'%' identified by '123';grant all on *.* to discuz@'%' identified by '123';create database d
iscuz charset utf8;"
/etc/init.d/httpd start
/usr/sbin/sshd -D

[root@docker lamp]# cp /opt/vol/html/bbs.tar.gz ./

73a87bbfa5b0        47b09321a33c        "/bin/bash /init.sh"     13 seconds ago      Up 12 seconds                    0.0.0.0:32770->22/tcp, 0.0.0.0:32769->80/tcp, 0.0.0.0:32768->3306/tcp   nostalgic_minsky

CMD ["/bin/bash","/init.sh"]

说明:
COPY命令: 

Syntax:
	  <src>...   <dest>
	  
		从dockerfile所在目录,拷贝目标文件到容器的制定目录下。
		可以支持统配符,如果拷贝的是目录,只拷贝目录下的子文件子目录。
		cp oldguo/* 		
ADD    	
Syntax:
	  <src>...   <dest>
	  url        <dest>

	  比COPY命令多的功能是,可以自动解压.tar*的软件包到目标目录下
	  可以指定源文件为URL地址

VOLUME ["/var/www/html","/data/mysql/data"]

WORKDIR 

ENV  设定变量 
ENV CODEDIR /var/www/html/
ENV DATADIR /data/mysql/data
ADD bbs.tar.gz ${CODEDIR}
VOLUME ["${CODEDIR}","${DATADIR}"]


ENTRYPOINT

#CMD ["/bin/bash","/init.sh"]
ENTRYPOINT ["/bin/bash","/init.sh"]

说明: 
ENTRYPOINT 可以方式,在启动容器时,第一进程被手工输入的命令替换掉,防止容器秒起秒关

复制
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论