此篇文章是学习镜像制作的简单记录:其中包含一次失败的方法(文中有讨论欢迎留言)
获取镜像:
docker pull openshift/base-centos7
获取成功后如下所示:
docker.io/openshift/base-centos7 latest 4842f0bd3d61 22 months ago 383 MB
启动镜像:
docker run -it docker.io/openshift/base-centos7 /bin/bash
安装tomcat并启动
bash-4.2#yum install tomcat -y
bash-4.2# which tomcat
/usr/sbin/tomcat
bash-4.2# tomcat version
Server version: Apache Tomcat/7.0.76
Server built: Oct 16 2018 09:15:49 UTC
Server number: 7.0.76.0
OS Name: Linux
OS Version: 3.10.0-514.el7.x86_64
Architecture: amd64
JVM Version: 1.8.0_191-b12
JVM Vendor: Oracle Corporation
启动tomcat时出现如下问题:
bash-4.2# tomcat start
Failed to get D-Bus connection: Operation not permitted
网上搜索后,改为如下启动
docker run -it --privileged=true docker.io/openshift/base-centos7 /bin/bash
如此启动任然会有问题,之后改为如下方式
docker run -d --privileged=true openshift/base-centos7 /usr/sbin/init
重复以上安装tomcat的过程,此时tomcat start可以启动tomcat。
(造成如此具体原因不太清楚,如有人了解欢迎留言讨论)
但是基于此容器docker commit生成的镜像:
docker commit 53452a8709a7 tomcat-test:v1
后台启动此镜像后进入启动tomcat也会失败
[root@node-1 yaml]# docker run -d tomcat-test:v1
ffeae0c57696b31b7128b46464349575f12436f12e2f0e7e6ef83759260fb136
[root@node-1 yaml]# docker exec -it ffeae0c57696b31b7128b46464349575f12436f12e2f0e7e6ef83759260fb136 /bin/bash
bash-4.2# tomcat version
bash-4.2# tomcat start
Failed to get D-Bus connection: Operation not permitted
bash-4.2#
基于以上情况觉得如此方法制作tomcat镜像可能是行不通,不确定基于在启动的容器中直接安装tomcat后,然后docker commit生成新镜像的这种方法是不是不可行,还是说整个过程需要额外的操作,如哪位大神知道原因欢迎留言讨论或发邮件1771542932@qq.com
基于以上原因更换了制作方法:
mkdir dockerfile
拷贝准备好的apache-tomcat-7.0.79,拷贝到dockerfile路径下
编写dockerfile:
FROM openshift/base-centos7:latest
RUN yum install java -y
COPY . /opt/
#Auto running service
CMD ["/opt/apache-tomcat-7.0.79/bin/catalina.sh", "run"]
执行命令生成镜像:
docker build -t tomcat-test:v1 .
基于此生成的镜像经验证可使用。