Docker 镜像制作
镜像的诞生
1.容器 > 镜像 :docker commit CID -t xx.xx.xx (容器与镜像可以相互转换) 示例
#指定仓库拉取镜像
docker pull hub.c.163.com/public/centos:6.7-tools
#启动mysql容器
docker run --name mysql -d hub.c.163.com/public/centos:6.7-tools
#进入容器
docker exec -it mysql /bin/bash
#在容器内安装mysql
yum -y install mysql mysql-server
#容器转化成镜像(保存当前状态的转化形式,更适合去做一个备份工作)
docker commit mysql mysql:5.1
DockerFile
Dockfile是一种被Docker程序解释的脚本,Dockerfile由一条一条的指令组成,每条指令对应Linux下面的一条命令。Docker程序将这些Dockerfile指令翻译真正的Linux命令。Dockerfile有自己书写格式和支持的命令,Docker程序解决这些命令间的依赖关系,类似于Makefile。Docker程序将读取Dockerfile,根据指令生成定制的image
???生成命令:docker build -t wangyang/jdk-tomcat
DockFile语法 1.From(指定基础image):
FROM centos:7.2 #有且只有一个
FROM centos
2.MAINTAINER(用来指定镜像创建者信息):
MAINTAINER sudo"sudo@qq.com"
3.RUN(支持任何被基础image支持的命令 ):
#常用
RUN cd /tmp && curl-L http://archive.apache.org/dist/tomcat/tomcat-7/v7.0.8/bin/apache-tomcat-7.0.8.tar.gz'|tar-xz
RUN ["/bin/bash","-c","echo hello"]
4.CMD(设置container容器 启动时执行的操作,仅执行最后一条):
CMD echo "Hello World!"
5.ENTRYPOINT(设置container启动时执行的操作,仅执行最后一条):
#CMD指令将不会被执行,只有ENTRYPOINT指令被执行
CMD echo "Hello World!"
ENTRYPOINT ls -l
6.USER(设置启动容器的用户):
USER daemon = ENTRYPOINT ["memcached","-u","daemon"]
7.EXPOSE(指定容器需要映射到宿主机器的端口):
#映射一个端口
EXPOSE 22
#相应的运行容器使用的命令
docker run -p port1 image
#映射多个端口
EXPOSE port1 port2 port3
#相应的运行容器使用的命令
docker run -p port1 -p port2 -p port3 image
#还可以指定需要映射到宿主机器上的某个端口号
docker run -p host_port1:port1-p host_port2:port2 -p host_port3:port3 image
8.ENV(用于设置环境变量):构建指令,在image中设置一个环境变量
ENVJAVA_HOME /path/to/java/dirent
9.ADD(从src复制文件到container的dest路径)
ADD <src> <dest>
<src>是相对被构建的源目录的相对路径,可以是文件或目录的路径,也可以是一个远程的文件url;
<dest>是container中的绝对路径
10.COPY(从src复制文件到container的dest路径)
COPY <src> <dest>
11.VOLUME(指定挂载点):
FROM base
VOLUME ["/tmp/data"]
创建一个tomcat的dockfile
vim Dockerfile
FROM hub.c.163.com/public/centos:6.7 #基础镜像
MAINTAINER wangyang@itxdl.cn #坐着信息
ADD ./apache-tomcat-7.0.42.tar.gz /root #复制文件到容器内
ADD ./jdk-7u25-linux-x64.tar.gz /root
ENV JAVA_HOME /root/jdk1.7.0_25 #设置环境变量
ENV PATH $JAVA_HOME/bin:$PATH
EXPOSE 8080 #开放端口
ENTRYPOINT /root/apache-tomcat-7.0.42/bin/startup.sh && tailf /root/apache-tomcat-7.0.42/logs/catalina.out #执行命令
#dockerfile转换成镜像
docker build -t tomcat:v1.0 .
#镜像转换成容器
docker run --name tomcat -p 80:8080 tomcat:v1.0
#命令不能超过128行
|