dokcerfile

2018-11-10  本文已影响0人  K8S_Goearth

自定义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"]

上一篇下一篇

猜你喜欢

热点阅读