Dockerfile编写最佳实践指南
最近一段时间弄了下Dockerfile,实践中也发现了不少问题,总结如下:
1. Java环境变量不生效的问题:
启动容器不同于系统完整启动流程,当容器运行后不会执行source /etc/profile命令,即使在/etc/profile添加环境变量也不会生效,可以使用ENV参数在Dockerfile中定义,也可以使用entrypoint在脚本里执行添加环境变量的命令。
Dockerfile不是she...
Continue reading >>最近一段时间弄了下Dockerfile,实践中也发现了不少问题,总结如下:
1. Java环境变量不生效的问题:
启动容器不同于系统完整启动流程,当容器运行后不会执行source /etc/profile命令,即使在/etc/profile添加环境变量也不会生效,可以使用ENV参数在Dockerfile中定义,也可以使用entrypoint在脚本里执行添加环境变量的命令。
Dockerfile不是she...
Continue reading >>转载自:https://blog.lab99.org/post/docker-2016-07-14-faq.html#docker-yin-qing-xiang-guan-wen-ti-67
Continue reading >>这是我在 QQ 群 325486037 里,碰到的一些问题及其解答,大多是初学 Docker 时常见的问题。其中的回答,是基于我学习和使用 Docker 过程中的一些认知,多...
查看docker网络:docker network help | docker service help
Nat(Network Address Translation)
iptables -t nat -n -L
ip-forward=1
route -n
Host
--net=host
other container
--net=container:容器名
none
--net=none
无网络配置,可自行配置(开...
使用Dockerfile构建的容器, 无法看到非root用户运行程序的PID,如下图所示:

百度上说是netstat的bug,看起来却像是权限问题,最后Google找到了,docker为了容器的安全,容器中的root权限有限制,与宿主机上root权限是不一样的,启动容器加上--cap-add=SYS_PTRACE,即可看到PID,官网上也有相关解释。
分层设计:
根据Docker的分层理念及公司业务环境,生产中使用分层设计Dockerfile并使用git来管理,可以大大提高应用部署效率,同时可以使用docker-compose来编排启动容器,swarm管理规模不大的docker集群,有条件的公司也可使用k8s、mesos来管理。

&nb...
Continue reading >>