Comment installer et configurer Docker ?
Cet article complète la série de webinaires sur le déploiement et la gestion des charges de travail conteneurisées dans le cloud. Cette série présente les bases des conteneurs, notamment la gestion du cycle de vie des conteneurs, le déploiement d'applications multi-conteneurs, la mise à l'échelle des charges de travail et la compréhension de Kubernetes, ainsi que la mise en évidence des meilleures pratiques pour exécuter des applications avec état.
Ce didacticiel couvre les concepts et les commandes introduits dans la première partie de cette série, « Démarrer avec les conteneurs ».
Introduction
Docker est une plateforme de déploiement et de gestion d'applications conteneurisées. Les conteneurs sont populaires parmi les développeurs, les administrateurs et les ingénieurs DevOps en raison de la flexibilité qu'ils offrent.
Docker comporte trois composants de base :
Moteur Docker Outil Docker Registre Docker
Docker Engine fournit la fonctionnalité de base pour la gestion des conteneurs. Il s'interface avec le système d'exploitation Linux sous-jacent pour exposer des API simples permettant de gérer le cycle de vie des conteneurs.
Docker Tools est un ensemble d'outils de ligne de commande qui interagissent avec l'API exposée par Docker Engine. Ils sont utilisés pour exécuter des conteneurs, créer de nouvelles images, configurer le stockage et la mise en réseau et effectuer de nombreuses autres opérations qui affectent le cycle de vie des conteneurs.
Docker Registry est l'endroit où les images de conteneurs sont stockées. Chaque image peut avoir plusieurs versions identifiées par des balises uniques. Les utilisateurs extraient les images existantes du registre et envoient de nouvelles images. Docker Hub est un registre géré géré par Docker, Inc. Il est également possible d'exécuter le registre dans son propre environnement pour garder les images plus proches du moteur.
À la fin de ce didacticiel, vous aurez installé Docker sur un Droplet DigitalOcean, géré des conteneurs, traité des images, ajouté de la persistance et configuré un registre privé.
Prérequis
Pour suivre ce tutoriel, vous aurez besoin de :
Configurer un droplet Ubuntu 16.04 en suivant le tutoriel de configuration initiale du serveur Ubuntu 16.04, qui inclut un utilisateur sudo non root et Un pare-feu.
Compte Docker Hub . Cet aperçu de Docker Hub vous aidera à démarrer.
Par défaut, la commande docker nécessite les privilèges root. Cependant, il est possible d'exécuter des commandes sans le préfixe sudo en exécutant docker en tant qu'utilisateur docker dans le groupe docker.
Pour configurer votre Droplet de cette façon, exécutez la commande sudo usermod -aG docker ${USER} . Cela ajoutera l'utilisateur actuel au groupe Docker. Ensuite, exécutez la commande su - ${USER} pour appliquer la nouvelle adhésion au groupe.
Ce tutoriel s'attend à ce que votre serveur soit configuré pour exécuter des commandes Docker sans le préfixe sudo.
Étape 1 - Installer Docker
Après SSH dans le Droplet, exécutez la commande suivante pour supprimer tous les packages liés à Docker qui ont pu être installés, puis installez Docker depuis le référentiel officiel :
sudo apt-get remove docker docker-engine docker.io sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -sudo apt-key fingerprint 0EBFCD88sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"sudo apt-get update sudo apt-get install -y docker-ce
Après avoir installé Docker, vérifiez l'installation à l'aide de la commande suivante :
docker info
La commande ci-dessus affiche les détails du moteur Docker déployé dans l'environnement. La commande suivante vérifiera que les outils Docker sont installés et configurés correctement. Il doit imprimer les versions du moteur et des outils Docker.
docker version
Étape 2 - Lancer le conteneur
Les conteneurs Docker sont lancés à partir d'une image existante stockée dans le registre. Les images dans Docker peuvent être stockées dans des référentiels privés ou publics. Les référentiels privés exigent que les utilisateurs s'authentifient avant d'extraire des images. Les images publiques sont accessibles à tous.
Pour rechercher une image nommée hello-world, exécutez la commande suivante :
docker search hello-world
Il peut y avoir plusieurs images correspondant au nom hello-world. Choisissez la plus grande étoile, cela montre le pop de l'image.
Vérifiez les images disponibles dans votre environnement local à l'aide de la commande suivante :
docker images
Comme nous n'avons pas encore déployé de conteneurs, il n'y aura pas d'images. Nous pouvons maintenant télécharger l'image et l'exécuter localement :
docker pull hello-world docker run hello-world
Si nous exécutons la commande docker run sans faire glisser l'image, Docker Engine extraira d'abord l'image puis l'exécutera. L’exécution à nouveau de la commande docker images montre que l’image hello-world est disponible localement.
Démarrons un conteneur qui a plus de sens : un serveur web Apache.
docker run -p 80:80 --name web -d httpd
Vous remarquerez peut-être des options supplémentaires transmises à la commande docker run. Voici une explication de ces commutateurs :
-p - Cela indique au moteur Docker d'exposer le port 80 du conteneur sur le port 80 de l'hôte. Puisque Apache écoute sur le port 80, nous devons l'exposer sur le port hôte. --name - Ce commutateur attribue un nom à notre conteneur en cours d'exécution. Si nous omettons cela, Docker Engine attribuera un nom aléatoire.
-d - Cette option demande au moteur Docker d'exécuter le conteneur en mode détaché. Sans cela, le conteneur démarrera au premier plan, bloquant l'accès au shell. En poussant le conteneur en arrière-plan, nous pouvons continuer à utiliser le shell pendant que le conteneur est toujours en cours d'exécution.
要验证我们的容器是否确实在后台运行,请尝试以下命令:
docker ps
输出显示名为web的容器正在运行,端口80映射到主机端口80 。
现在访问Web服务器:
curl localhost
让我们停止并用下面的命令删除正在运行的容器:
docker stop web docker rm web
运行docker ps再次确认容器已被终止。
第3步 - 添加存储到容器
容器是短暂的,这意味着当容器终止时,存储在容器内的任何东西都将丢失。 要将数据保存在容器的寿命之外,我们需要将容器附加到容器中。 卷是主机文件系统的目录。
首先在主机上创建一个新目录:
mkdir htdocs
现在,让我们用一个新开关启动容器来挂载htdocs目录,并将其指向Apache Web服务器的文档根目录:
docker run -p 80:80 --name web -d -v $PWD/htdocs:/usr/local/apache2/htdocs httpd
-v开关将容器中的htdocs目录指向主机的文件系统。 对这个目录所做的任何更改都将在两个位置都可见。
通过运行以下命令从容器中访问目录:
docker exec -it web /bin/bash
该命令以交互模式将我们的终端连接到容器的外壳。 你应该看到你现在被丢在容器内。
导航到htdocs文件夹并创建一个简单的HTML文件。 最后退出shell返回主机:
cd /usr/local/apache2/htdocs echo '<h1>Hello World from Container</h1>' > index.htmlexit
再次执行curl localhost命令显示Web服务器正在返回我们创建的页面。
我们不仅可以从主机访问这个文件,但我们也可以修改它:
cd htdocs cat index.html echo '<h1>Hello World from Host</h1>' | sudo tee index.html >/dev/null
再次运行curl localhost ,确认Web服务器正在提供从主机创建的最新页面。
使用以下命令终止容器。 ( -f迫使Docker先停止而不停止。)
docker rm -f web
第4步 - 建立图像
除了从注册表中运行现有的图像,我们可以创建自己的图像,并将其存储在注册表中。
您可以从现有的容器中创建新的图像。 首先提交对容器所做的更改,然后将图像标记并推送到注册表。
让我们再次启动httpd容器并修改默认文档:
docker run -p 80:80 --name web -d httpd docker exec -it web /bin/bash cd htdocs echo '<h1>Welcome to my Web Application</h1>' > index.htmlexit
该容器现在运行一个自定义的index.html 。 你可以使用curl localhost来验证它。
在我们提交更改后的容器之前,最好停止它。 停止后,我们将运行commit命令:
docker stop web docker commit web doweb
使用docker images命令确认图像的创建。 它显示了我们刚刚创建的doweb图像。
要在Docker Hub中标记和存储此映像,请运行以下命令将映像推送到公共注册表:
docker login docker tag your_docker_hub_username/doweb docker push
您可以通过从浏览器或命令行在Docker Hub中搜索来验证新映像。
第5步 - 启动私人注册表
可以在私人环境中运行注册表以保持图像更加安全。 它也减少了Docker引擎和映像库之间的延迟。
Docker Registry是一个可以像任何其他容器一样启动的容器。 由于注册表拥有多个图像,因此最好将存储卷附加到该图像上。
docker run -d -p 5000:5000 --restart=always --name registry -v $PWD/registry:/var/lib/registry registry
请注意,容器是在后台启动的,端口5000暴露, registry目录映射到主机文件系统。 您可以通过执行docker ps命令来验证容器正在运行。
我们现在可以标记一个本地图像,并将其推送到私人注册表。 我们首先从Docker Hub中取出busybox容器并对其进行标记。
docker pull busybox docker tag busybox localhost:5000/busybox docker images
以前的命令确认busybox容器现在用localhost:5000标记,所以将图像推送到私有注册表。
docker push localhost:5000/busybox
将图像推送到本地注册表,让我们尝试从环境中删除它,并从注册表中拉回。
docker rmi -f localhost:5000/busybox docker images docker pull localhost:5000/busybox docker images
我们经历了拉动图像,标记,推送到本地注册表,最后拉回来的整个圈子。
可能有些情况下您想要在专用主机中运行私有注册表。 在不同的机器上运行的Docker引擎会与远程注册表进行通信,以获取和推送图像。
由于注册表不安全,我们需要修改Docker引擎的配置以启用对不安全注册表的访问。 为此,编辑位于/etc/docker/daemon.json
的daemon.json文件。 创建文件,如果它不存在。
添加以下条目:
编辑/etc/docker/daemon.json
{
"insecure-registries" : ["REMOTE_REGISTRY_HOST:5000"]}
将REMOTE_REGISTRY_HOST
替换为远程注册表的主机名或IP地址。 重新启动Docker引擎以确保应用配置更改。
结论
本教程帮助您开始使用Docker。 它涵盖了安装,容器管理,映像管理,存储和私有注册表等基本概念。 本系列即将发布的会议和文章将帮助您超越Docker的基础知识。
相关参考:docker教程
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!