Lors de l'apprentissage de Docker récemment, j'ai déployé plusieurs conteneurs Tomcat et j'ai constaté que la page d'accueil de Tomcat n'était pas accessible normalement.
Bien sûr, j'ai constaté que l'application n'était pas accessible. La première chose à faire est de vérifier dans l'ordre
netstat -anp | more # 查看端口监听是否开启
//再去手动开一下访问的端口
firewall-cmd --zone=public --add-port=8080/tcp --permanent
firewall-cmd --reload
Mais mon problème est que l'utilisation d'une simple commande pour démarrer le conteneur Tomcat est accessible normalement.
Lorsque le volume de données est configuré, la page n'est pas accessible.
docker run -d -p 8080:8080 --name tomcat8080 镜像id
docker run -d -p 8080:8080 --name my_tomcat -v \
/opt/vol_tomcat/webapps:/usr/local/tomcat/webapps 镜像id
La racine du problème : la page d'accueil de Tomcat elle-même est une application, qui est réalisée par plusieurs fichiers dans le répertoire webapps de Tomcat installés par défaut.
Mais dans le répertoire hôte /op/vol_tomcat/webapps se trouve un répertoire vide, ce qui mène à plusieurs conteneurs Tomcat démarrés avec ce volume de données
Le répertoire /usr/local/tomcat/webapps est également vide, aucune page ne peut donc être affichée.
La solution
consiste à obtenir un ensemble de ces fichiers par défaut Tomcat. Vous pouvez utiliser une méthode sans volume de données pour démarrer un conteneur Tomcat, puis en envoyer une copie sur l'hôte, puis utiliser ces données pour regrouper n conteneurs Tomcat et vous assurer
que que le contenu de ces conteneurs est exactement le même
# 非数据卷方式起一个tomcat容器
docker run -d -p 8080:8080 --name tomcat8080 镜像id
# docker cp 将容器内的webapps 目录拷出到宿主机目录
docker cp tomcat8080:/usr/local/tomcat/webapps /opt/vol_tomcat
# 然后可以用这个数据卷去起很多的tomcat都是可以看到主页的
docker run -d -p 8081:8080 --name tomcat8081 -v /opt/vol_tomcat/webapps:/usr/local/tomcat/webapps 镜像id
docker run -d -p 8082:8080 --name tomcat8082 -v /opt/vol_tomcat/webapps:/usr/local/tomcat/webapps 镜像id
docker run -d -p 8083:8080 --name tomcat8083 -v /opt/vol_tomcat/webapps:/usr/local/tomcat/webapps 镜像id
Mais j'ai inexplicablement l'impression que ce n'est pas différent de java -jar démarrant le port spécifié...