--------------------------------------------------------------------------------------
版权所有:超图研究所(www.supermap.com)
Blog: http://blog.csdn.net/chinagissoft
QQ群:16403743
宗旨:专注于"GIS+"前沿技术的研究与交流,将云计算技术、大数据技术、容器技术、物联网与GIS进行深度融合,探讨"GIS+"技术和行业解决方案
转载说明:文章允许转载,但必须以链接方式注明源地址,否则追究法律责任!
--------------------------------------------------------------------------------------
题记一般情况下,我们使用容器并不是前面提到的只是从在一个操作系统镜像里面操作,而是需要在里面安装一系列的软件,例如我们做一个网站需要部署apache,MySQL、PHP等,具体的操作应该是这样
1、下载一个Linux操作系统的镜像
2、在该OS里面安装apache
3、再安装MySQL
4、再安装PHP
...
如果有一个逻辑顺序可以支持批量自动化操作,岂不是一件非常方便的事。
Dockerfile就是做上述的事情,它支持一些常用的命令,例如支持类似于Linux Shell命令,可以实现将本地文件传入到Docker容器里面,然后进行解压缩,安装,设置相关命令,安装相关的操作系统软件包....
Dockerfile
•FROM:基于哪个镜像
•RUN:安装软件用
•MAINTAINER:镜像创建者
•CMD:container启动时执行的命令
•ENTRYPOINT:container启动时执行的命令
•USER:选择用户运行container
•EXPOSE:container内部服务开启的端口
•ENV:用来设置环境变量
•ADD/COPY:用户宿主机与容器文件拷贝
•VOLUME:将本地文件夹挂载到container中。
•WORKDIR:切换目录
•ONBUILD:指定的命令在构建镜像时不执行,在它的子镜像中执行
FROM ubuntu:14.04 ADD SuperMapiCloudManager7C/ /sm/iCloud/ RUN apt-get update RUN sudo apt-get -y install libx11-dev RUN sudo apt-get -y install xinit RUN sudo apt-get -y install gcc RUN sudo apt-get -y install libgomp1 RUN sudo apt-get -y install libxtst6 RUN sudo apt-get -y install libxi6 RUN sudo apt-get -y install libc6-i386 RUN sudo apt-get -y install lib32z1 RUN sudo apt-get -y install lib32ncurses5 RUN sudo apt-get -y install lib32bz2-1.0 RUN sudo apt-get -y install language-pack-zh-hans .....省略.....
FROM ubuntu:14.04.3 MAINTAINER lishaohua <[email protected]> RUN sed -i 's/archive.ubuntu.com/mirrors.163.com/' /etc/apt/sources.list RUN apt-get update RUN apt-get install -y software-properties-common RUN apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xcbcb082a1bb943db RUN add-apt-repository 'deb http://mirror2.hs-esslingen.de/mariadb/repo/10.0/ubuntu precise main' RUN apt-get install -y mariadb-server RUN echo "[mysqld]" >/etc/mysql/conf.d/docker.cnf RUN echo "bind-address = 0.0.0.0" >>/etc/mysql/conf.d/docker.cnf RUN echo "innodb_flush_method = O_DSYNC" >>/etc/mysql/conf.d/docker.cnf RUN echo "skip-name-resolve" >>/etc/mysql/conf.d/docker.cnf RUN echo "init_file = /etc/mysql/init" >>/etc/mysql/conf.d/docker.cnf RUN echo "GRANT ALL ON *.* TO sm@'%' IDENTIFIED BY 'sm';" >/etc/mysql/init EXPOSE 3306 USER mysql ENTRYPOINT mysqld