Maison > Java > javaDidacticiel > Comment utiliser Docker pour créer un environnement d'exécution Java

Comment utiliser Docker pour créer un environnement d'exécution Java

WBOY
Libérer: 2023-04-24 22:40:11
avant
2248 Les gens l'ont consulté

>Que fait Docker ?

docker est un moteur de conteneur avancé basé sur un conteneur Linux (conteneur lxc-linux), développé sur la base du langage Go,

le code source est hébergé sur github et est open source en conformité avec le protocole apache2.0. L'objectif de Docker est d'implémenter une solution légère de virtualisation du système d'exploitation.

Pour apprendre Docker, vous devez d'abord comprendre quelques concepts :

Image : l'image de Docker est similaire à une image ISO système courante et contient des informations sur l'application.

Conteneur : un conteneur est équivalent à une machine virtuelle qui peut être run. L'application s'exécute dans le conteneur et Docker s'exécute sur "docker" ;

Entrepôt - L'entrepôt est un endroit où les images sont stockées. Il a un contrôle de version similaire à git et est également divisé en deux formes : entrepôt public (. public) et privé (privé) ;

docker prend en charge la plupart des distributions Linux. En utilisant des conteneurs Docker, vous pouvez exécuter vos propres applications sur différents systèmes d'exploitation et

différentes machines sans avoir à vous soucier de la configuration du matériel, de l'environnement d'exploitation, etc. La migration devient très simple.

> Comparaison entre Docker et la technologie de virtualisation traditionnelle

Par rapport à la technologie de machine virtuelle traditionnelle, Docker consomme moins de ressources et démarre plus rapidement, ce qui facilite grandement le déploiement, l'exploitation et la maintenance du projet.

Docker implémente la virtualisation au niveau du système d'exploitation et réutilise le système d'exploitation de l'hôte local. La méthode traditionnelle consiste à virtualiser plusieurs systèmes d'exploitation en fonction du matériel, puis à déployer les applications associées sur le système.

L'image ci-dessous fait référence à l'article de blog correspondant, qui illustre de manière frappante la différence entre les technologies de virtualisation traditionnelles telles que Docker et vm :

Comment utiliser Docker pour créer un environnement dexécution JavavsComment utiliser Docker pour créer un environnement dexécution Java

>Créer un environnement Docker

J'utilise Ubuntu 14.04 , installez le service Docker dessus.

Installer rapidement Docker

Le référentiel Ubuntu de la version 14.04 prend déjà en charge l'installation de Docker,
Vous pouvez utiliser la méthode d'installation rapide,

sudo apt-get update
sudo apt-get install docker.io
Copier après la connexion

Démarrer les services et les démons

service docker.io status
service docker.io start
Copier après la connexion

Cette méthode d'installation n'est généralement pas la dernière version de la version docker,

Si vous souhaitez installer la dernière version, vous pouvez accéder au site officiel de docker pour la télécharger et l'installer.

> Créer la première image Docker

Le processus général de création d'une image Docker consiste à d'abord créer un conteneur, modifier l'image dans le conteneur, configurer les environnements associés, etc., et enfin soumettre les modifications en tant que nouvelle image.

(1) Téléchargez le fichier image

Téléchargez le système utilisé pour créer l'image,

sudo docker pull index.alauda.cn/alauda/ubuntu
Copier après la connexion

Comment utiliser Docker pour créer un environnement dexécution Java
Ici, je l'ai extrait du centre d'image de Lingqueyun.

Ou vous pouvez l'extraire directement depuis le centre d'images Docker, mais cela semble être très lent :

sudo docker pull ubuntu
Copier après la connexion
Copier après la connexion

Une fois le téléchargement réussi, utilisez la commande images pour afficher la liste d'images locale :

docker images
Copier après la connexion

Comment utiliser Docker pour créer un environnement dexécution Java

Vous avez besoin faire attention à cela lors de l'utilisation de docker.

Une fois Docker installé par défaut, vous devez exécuter la commande sudo à chaque fois que vous exécutez docker. Si vous ne suivez pas sudo, l'exécution directe de la commande docker signalera des erreurs d'autorisation.

(2) Démarrez le conteneur et modifiez l'image

Une fois l'image téléchargée en local, vous pouvez utiliser Docker pour l'exécuter,

Démarrez le conteneur via les paramètres de commande suivants,

docker run < ID de l'image>

-i : Indique l'exécution du conteneur en "mode interactif"

-t : Indique que le conteneur entrera dans sa ligne de commande après le démarrage

- v : Indique quel répertoire local doit être monté Charger dans le conteneur,

Format : -v :

Mes programmes associés se trouvent tous dans le répertoire /data/software/ du machine actuelle, et je souhaite le monter Charger dans le même répertoire du conteneur :

sudo docker run -i -t -v /data/software/:/data/software/ ae983d5e88ce /bin/bash
Copier après la connexion

"Image ID", vous pouvez également utiliser "warehouse name: tag name", par exemple : index.alauda.cn/alauda/ubuntu :dernier.

La commande ci-dessus peut utiliser l'image spécifiée pour exécuter un shell. Si vous souhaitez quitter le terminal, vous pouvez utiliser la commande exit ou appuyer successivement sur ctrl -p + ctrl -q pour passer à la machine hôte. Cependant, de cette manière, le conteneur circule toujours après-demain.

Après avoir démarré le terminal, entrez dans le répertoire /data/software/, vous constaterez que les fichiers du répertoire actuel de la machine ont été synchronisés : Comment utiliser Docker pour créer un environnement dexécution Java

(3) Installez jdk et tomcat, etc.

Installez jdk et autres programmes associés, ici Installez tout dans le répertoire /data/ :

tar -zxvf jdk-7u25-linux-x64.tar.gz -c /data/
mv jdk1.7.0_25 jdk

unzip apache-tomcat-7.0.54.zip -d /data/
mv apache-tomcat-7.0.54 tomcat
Copier après la connexion

Configurez les variables d'environnement

vi /etc/profile
Copier après la connexion

Ajoutez la configuration suivante :

#set java environment  
export java_home=/data/jdk  
export jre_home=${java_home}/jre  
export classpath=.:javahome/lib:javahome/lib:{jre_home}/lib  
export path=javahome/bin:javahome/bin:path 

export catalina_home=/data/tomcat 
export catalina_base=/data/tomcat
Copier après la connexion

Enregistrez et quittez, les paramètres prendront effet immédiatement :

source /etc/ profil

(4) Écrire un script de démarrage

启动tomcat时必须通过tomcathome/bin/catalina.sh实现,不能使用tomcathome/bin/catalina.sh实现,不能使用tomcat_home/bin/startup.sh启动,否则脚本执行后容器会马上退出。

vi /data/start.sh

添加以下内容:

#!/bin/bash
# export environment variable
source /etc/profile
# start tomcat
bash /data/tomcat/bin/catalina.sh run
Copier après la connexion

添加可执行权限:chmod u+x /data/start.sh

(5)构建镜像

使用docker构建镜像的两种方法:

使用docker commit 命令,更直观一些;

使用docker build命令和dockerfile文件,可以模板化镜像构建过程;

这里使用docker commit的方式创建镜像。

查看容器列表:

sudo docker ps -a
Copier après la connexion
container id image command created status ports names
39b2cf60a4c1 ae983d5e88ce:latest "/bin/bash" 5 hours ago exited (0) 9 seconds ago dreamy_euclid
Copier après la connexion

提交一个新的镜像:

sudo docker commit 39b2cf60a4c1 bingyue/docdemo
Copier après la connexion

如果有docker账号,可以将镜像推送到docker hub或资金的私有registry中。

现在查看本地的docker镜像,

sudo docker images
Copier après la connexion

Comment utiliser Docker pour créer un environnement dexécution Java

可以看到本地仓库已经有刚刚创建的docker镜像。

repository tag image id created virtual size
bingyue/docdemo latest bfc7ed316d42 about a minute ago 528.2 mb
index.alauda.cn/alauda/ubuntu latest ae983d5e88ce 10 months ago 255.1 mb
Copier après la connexion

docker inspect可以查看新创建的镜像的详细信息:

sudo docker inspect bingyue/docdemoComment utiliser Docker pour créer un environnement dexécution Java

(6)运行新创建的镜像

docker run -d -p 18080:8080 --name docdemo bingyue/docdemo /data/start.sh
Copier après la connexion

-p:表示宿主机与容器的端口映射,此时将容器内部的 8080 端口映射为宿主机的 18080 端口,

这样就向外界暴露了 18080 端口,可通过 docker 网桥来访问容器内部的 8080 端口了。

查看后台是否启动成功:

docker ps
Copier après la connexion

测试访问:Comment utiliser Docker pour créer un environnement dexécution Java

(7)提交至docker仓库

如果有docker仓库的账户,可以将本地创建的镜像提交至仓库。

>使用体验

到这一步,差不多完成了docker的初体验,docker应用还是比较简单的,真正复杂的应该是背后的虚拟化技术。

一步一步部署下来,的确docker相比传统的虚拟机技术要简单了很多,有机会继续深入学习。

附:添加docker用户组,避免sudo输入

默认安装完 docker 后,每次执行 docker 都需要运行 sudo 命令,影响效率。如果不跟 sudo,直接执行 docker images 命令会有如下问题:
get http:///var/run/docker.sock/v1.18/images/json: dial unix /var/run/docker.sock: permission denied. are you trying to connect to a tls-enabled daemon without tls?

把当前用户执行权限添加到相应的docker用户组里面就可以解决这个问题。

添加一个新的docker用户组

sudo groupadd docker
Copier après la connexion

# 添加当前用户到docker用户组里

sudo gpasswd -a bingyue docker
Copier après la connexion

# 重启docker后台监护进程

sudo service docker restart
Copier après la connexion

# 重启之后,尝试一下,是否生效

docker version
Copier après la connexion

#若还未生效,则系统重启,则生效

sudo reboot
Copier après la connexion

docker常用命令

# 下载一个ubuntu镜像

sudo docker pull ubuntu
Copier après la connexion
Copier après la connexion

# 使用ubuntu运行一个交互性的shell

sudo docker run -i -t ubuntu /bin/bash
Copier après la connexion

#docker ps命令

sudo docker ps #列出当前所有正在运行的container
sudo docker ps -l #列出最近一次启动的,且正在运行的container
sudo docker ps -a #列出所有的container
Copier après la connexion

#port命令

docker run -p 80:8080 <image> <cmd> #映射容器的8080端口到宿主机的80端口
Copier après la connexion

#删除容器命令

sudo docker rm `sudo docker ps -a -q`#删除所有容器
sudo docker rm $container_id#删除容器id为container_id的容器
Copier après la connexion

#其他命令快速参考:

sudo docker images #查看本地镜像
sudo docker attach $container_id #启动一个已存在的docker实例
sudo docker stop $container_id #停止docker实例
sudo docker logs $container_id #查看docker实例运行日志,确保正常运行
sudo docker inspect $container_id #查看container的实例属性,比如ip等等
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:yisu.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal