信用网站建设内容,网上做网站广告投放,网站建设开发管理 总结,酒店类网站建设方案书踩坑记录
1.1 后台启动容器#xff0c;实际没有启动
现象#xff1a; 后台启动centos#xff0c;结果执行docker ps命令#xff0c;容器没启动。 原因#xff1a; docker是以容器启动的#xff0c;必须要有个前台进程#xff0c;若是全部都是后台deamon守护进程…踩坑记录
1.1 后台启动容器实际没有启动
现象 后台启动centos结果执行docker ps命令容器没启动。 原因 docker是以容器启动的必须要有个前台进程若是全部都是后台deamon守护进程没有一个前台进程则会自动停止容器。
解决方案
去除-d加上 -it 开启容器交互式终端执行docker run -d centos /bin/bash -c while true;echo test; 通过bash执行死循环shell语句将容器进程卡主
1.2 dockerfile中 ADD和COPY命令中的宿主机文件都需要在dockerfile同级目录
现象 编辑dockerfile文件构建tomcat镜像其中存在ADD指令执行build构建命令后提示文件不存在。
# pwd /root/docker/test/dockerfiletest
# dockerfiletest文件目录/root/docker/test/dockerfiletest
[rootcentos7 dockerfiletest]# cat dockerfile-tomcattest
FROM centos
MAINTAINER wlwl126.com
ENV WORKPATH /usr/local
WORKDIR $WORKPATHADD /root/apache-tomcat-9.0.85.tar.gz /usr/local/ #apache-tomcat-9.0.85.tar.gz没在dockerfiletest文件目录导致出现
ADD /root/jdk-8u391-linux-x64.tar.gz /usr/local/ENV JAVA_HOME /usr/local/jdk1.8.0_391
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV CATALINA_HOME /usr/local/apache-tomcat-9.0.85
ENV CATALINA_BASH /usr/local/apache-tomcat-9.0.85
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/bin:$CATALINA_HOME/lib
EXPOSE 8080
CMD $CATALINA_HOME/bin/startup.sh tail -f $CATALINA_HOME/logs/catalina.out解决方案
将两个依赖的压缩包cp到dockerfile文件目录修改dockerfile文件将压缩包文件路径 改为当前目录下ADD apache-tomcat-9.0.85.tar.gz /usr/local/
ADD jdk-8u391-linux-x64.tar.gz /usr/local/1.3 dockerfile中存在EXPOSE port在启动容器时还是需要-p 添加端口映射
现象 dockerfile存在EXPOSE 8080但是docker run时未添加-p 端口映射导致访问宿主机端口时访问不到。 解决方案 在docker run中还是需要添加-p 端口映射如docker run -p 8080:8080 ...
1.4 执行docker run -p 8080:8080出现iptables failed错误
现象
docker: Error response from daemon: driver failed programming external connectivity on endpoint tomcat01
(0a7c671209ed49c4e0c1dbff28f9d43e2155ba219bb609afc3892b4f4912d9b2):
(iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 9090 -j DNAT --to-destination \
172.17.0.2:8080 ! -i docker0: iptables: No chain/target/match by that name.(exit status 1)).原因
当centos7 firewall 被清掉时 firewall的底层是使用iptables进行数据过滤建立在iptables之上这可能会与 Docker 产生冲突。当 firewalld 启动或者重启的时候将会从 iptables 中移除 DOCKER 的规则从而影响了 Docker 的正常工作。
解决方案 Linux 开启firewall 防火墙并重启dockersystemctl restart docker
后续遇到问题继续补充~