自定义docker镜像
手动修改容器镜像
1.下载相应版本的centos,以下载centos7.5.1804版本为例
[root@docker ~]# docker pull centos:7.5.1804
[root@master1 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/centos 7.5.1804 76d6bc25b8a5 4 days ago 200 MB
2.启动镜像
[root@docker ~]# docker run -it -d --name centos1 centos
并进入到docker,然后安装自己定义的nginx或者tegine
[root@d72250ecaa5e /]#
编写nginx启动脚本
[root@d72250ecaa5e /]# cat /auto_nginx.sh
#!/bin/bash
/usr/sbin/sshd -D
[root@d72250ecaa5e /]# chmod +x /auto_sshd.sh
更新:这条命令更方便以后启动,如下:
[root@docker ~]# docker commit --change='CMD ["/auto_sshd.sh"]' -c "EXPOSE 22" test-centos1 centos_sshd:7.0
sha256:7bb4efd82c4ff1f241cbc57ee45aab1b05d214b1e9fcd51196696c67d480e70b
命令注释: --change : 将后期使用此镜像运行容器时的命令参数、开放的容器端口提前设置好。
---------------------------------------------------------------------------------------------------
dockerfile方式制定镜像
dockerfile格式:
FROM nginx:tag 基础镜像
MAINTAINER wbb wbb@qq.com 指定维护者
WORKDIR /usr/local 指定下面命令的运行目录
RUN npm install 在shell中执行的命令
WORKDIR work #在/usr/local 的基础上指定运行目录,所以当前目录为:/usr/local/work
CMD node ./bin/www 容器启动时执行的命令,每个dockerfile只能执行一条cmd命令,如果有多条,只执行最后一条
EXPOSE 22 80 3000 容器对外开放端口
ENV PATH /usr/local 指定环境变量
ADD /usr/local/nginx/nginx.conf /usr/local/nginx 将本地目录中的文件复制到容器目录中
COPY /usr/local/nginx /usr/local/nginx 将本地目录复制到容器中,容器目录不存放时自动创建
VOLUME 创建一个可以从本地主机或其他容器挂载的挂载点,一般用来存放数据库和需要保持的数据等
docker build -t image_tag /usr/local/docker/file/path
-t 指明新镜像的 tag ,后面为 Dockerfile 的路径
例:
docker build -t wbb/tomcat_yolink /root/dockerfile/或
docker build -t wbb/tomcat_yolink .
注:/root/dockfile命名必须为Dockerfile,不然会报错
docker tag wbb/tomcat_yolink 172.16.0.2:5000/wbb/tomcat_yolink
docker push 172.16.0.2:5000/wbb/tomcat_yolink
#docker history 镜像ID查看制作的镜像历史过程
自建tomcat-dockerfile
[root@master1 dockerfile]# ls
Dockerfile jdk-8u131-linux-x64.rpm tomcat_zf tomcat_zf.tar.gz
要安装文件和Dockerfile放到同一目录下,Docerfile命名不能写其他
[root@master1 dockerfile]# cat Dockerfile 以下是dockerfile文件具体内容
#Centos based container with Java1.8.0_131 and Tomcat8.5.34
FROM 172.16.0.2:5000/docker.io/centos
MAINTAINER wbb-20181028 wbb@qq.com
ENV VER JDK1.8.0_131~TOMCAT8.0.53
#prepare java environment
ENV JAVA_HOEM /usr/java/jdk1.8.0_131
ENV JRE_HOME /usr/java/jdk1.8.0_131/jre
ENV CLASSPATH .:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
ENV PATH $JAVA_HOME/bin:$$JAVA_HOME/bin:$PATH
#copy jdk tomcat to container
COPY jdk-8u131-linux-x64.rpm /root
COPY tomcat_zf.tar.gz /usr/local/
#install jdk
RUN rpm -ivh /root/jdk-8u131-linux-x64.rpm
#RUN chmod 755 /usr/local/tomcat_zf/bin/*sh
RUN tar zxvf /usr/local/tomcat_zf.tar.gz -C /usr/local/ && rm -f /usr/local/tomcat_zf.tar.gz
#private expose
EXPOSE 8080
#START TOMCAT
ENTRYPOINT ["/usr/local/tomcat_zf/bin/catalina.sh","run"]
网友评论