Docker是个好东西,但也不能包治百病,如果为了docker而docker,不仅它本身的优势发挥不出来,还会增加运维的复杂程度,本文是我学习docker的一些心得。
Docker的资源链接
Docker的安装:
https://yeasy.gitbooks.io/docker_practice/repository/dockerhub.html
Docker管理的面板:Portainer
https://www.portainer.io/installation/
Docker镜像中应该放一些什么文件?
应该是一些固定的、或者很少变动的运行环境的文件,而对于经常变动的,或者不停产生的文件,最好通过挂载一个主机目录作为该容器的数据卷来使用。因为这样可以通过宿主机的sftp服务,随时进行变更和调试。
那么也就说明,在服务器的部署当中,应该规划一些特定的文件夹,来放置这些容器的配置文件和工作文件。
当然通过在容器中安装ftp也可以做到,但是这样无疑会增加文件传输的复杂度,同时,还会涉及到复杂的容器端口映射问题。
对于一些基本的服务内容,如不涉及到与特定应用有强耦合关系,都不应该放在Docker里面,而是作为整个服务器的基本服务拿来使用。譬如一些基本的面板服务、ftp服务、网络安全服务,性能检测服务等。
适合进行Docker的应用
- Tomcat+Jre
- WordPress
- 其他可能出现多个用例的应用
- 某些厂商推荐使用Docker的用例,譬如Portainer
不适合进行Docker的应用
- 数据库引擎;
- 基本管理面板,譬如宝塔;
- Nginx
- FTP
Java项目的Docker部署方案
Docker中存放:Jre+Tomcat的一部分目录(注意,安装好以后将一些目录删掉);
通过挂载主机目录的方式,把以下目录挂载到主机对应的路径当中:
- 日志;
- 应用myapps(随着代码成熟度高以后,也可以考虑将它保存在Docker中);
- 配置conf(可选);
这种方案的好处在于,随时可以通过ftp,将主机的对应路径的文件上传和下载,而不需要进入Docker就可以进行调整。
如何进入容器
建议采用docker exec -it xxxxxx /bin/bash
https://blog.csdn.net/halcyonbaby/article/details/46884605
经测试,如果容器中存在一个实际路径A,而容器又用绑定的方式,将宿主机的某个路径映射为同样的A,那么容器实际使用的数据是宿主机里面的数据;
踩坑快乐!
正常服务器版本是怎样的,Docker里面就争取是一模一样的,特别是版本。
还有在windows下正常的一些东西,到了linux下面可能就不灵了。
譬如:
1. tomcat里面的server.xml下面docBase,windows下可以直接下/xxx,linux下面就必须写${catalina.home}/webapps/xxx;
2.还有这个诡异的加解密机制。
http://www.jetchen.cn/bugfixed-aessecurerandom/
一些有趣的东西
一个可以在Docker中运行的邮件服务器
https://www.wutianxian.com/6893.html
机场搭建指南
https://toutyrater.github.io/basic/vmess.html
注意:nginx里面的跳转,127.0.0.1可能不能用,换成localhost
本文原文非中文版本,由BruceX进行翻译,如若转载,请注明出处:http://www.iota.love/201909/docker-is-good-but-not-for-all/