Docker crée instantanément un environnement de développement local

Le compte public "Ancient Kite" se concentre sur la technologie back-end, en particulier Java et son écologie environnante.

Blog personnel : www.moonkite.cn

Bonjour à tous, je suis Kite

Parfois, nous devons créer un environnement de développement local, par exemple lors de l'apprentissage de nouvelles technologies. Ou parfois, le projet de l'entreprise doit créer un ensemble similaire localement pour faciliter le débogage et la modification.

L'environnement de développement peut inclure MySQL, Redis, Nginx, MQ, Elasticsearch, etc. Aujourd'hui j'utilise MySQL, et demain j'utiliserai PostgreSQL. Si vous installez tout en local, ce n'est pas impossible, mais ce sera très gênant. , et parfois l'installation rencontrera divers problèmes, ce qui est très inconfortable.

Existe-t-il un moyen rapide et élégant ?

C'est de Docker dont nous parlons aujourd'hui, jusqu'à présent, Docker n'est plus une nouvelle technologie, et on peut même dire qu'il s'agit d'une solution technique très courante et populaire.

Je me souviens que j'ai commencé à utiliser Docker en 2015, et cela fait presque 8 ans maintenant. Je ne peux que soupirer, comme le temps passe !

Pendant ce temps, j'ai également donné Docker Amway à de nombreux camarades de classe et collègues. Je leur ai juste dit : "C'est vraiment pratique de mettre en place un environnement de développement local pour cette chose."

Si vous êtes un développeur vétéran, je pense que vous l'avez déjà utilisé. Et si vous êtes novice, vous devriez l'utiliser dès que possible. Non seulement vous pouvez gagner du temps dans la configuration de l'environnement, mais vous pouvez également apprendre. Après tout, les méthodes de déploiement conteneurisées sont très courantes maintenant, et il est très nécessaire pour en savoir plus.

Principes de Docker et commandes de base

Fondamental

Pour utiliser n'importe quel type de technologie, vous devez d'abord comprendre son principe technique et bien le connaître.

Docker utilise pour le développement et la mise en œuvre le langage Go lancé par Google. Basé sur des technologies telles que cgroup et namespace du noyau Linux, et Union FS comme OverlayFS, il encapsule et isole les processus, qui appartiennent à la technologie de virtualisation au niveau du système d'exploitation. . Étant donné que le processus isolé est indépendant de l'hôte et des autres processus isolés, il est également appelé conteneur.

Docker 经常拿来和虚拟机来比较,因为它们两个的用处和用法都很相似,就是在一台实体机上启动多个虚拟系统(暂且这么说)。如果基于使用的层面来讲,你完全可以把 Docker 当做虚拟机来用,然而实际的底层技术原理是完全不一样的。

假设你现在变身了,站在了 Docker 和 虚拟机的内部,从里面向外看,发现虚拟机有自己的 CPU(虚拟CPU)、内存、硬盘,再往外才是宿主机的 CPU、硬盘、内存等。而如果是在Docker内部向外看,发现你无论站在当前实体机的哪个容器里,看到的都是宿主机的 CPU、硬盘、内存等。说明 Dokcer 容器是直接拿宿主机的资源当自己的用,所以每个容器的硬件配置都是一样的,而虚拟机是完全虚拟出来一套。

基础命令

Dokcer 的命令有一大堆,但是常用的就那几个。

镜像相关

获取镜像

docker pull 镜像名称

查看镜像列表

docker image ls

容器相关

查看容器

docker ps -a

新建并启动容器

sudo docker run -t -i ubuntu:12.04  /bin/bash

进入容器

docker exec -it 容器id bash

因为本文不是 Docker 的教程,所以只是抛砖引玉,具体的教程和文档网上到处都是。

安装 Docker Desktop

接下来开始本地实践了,用 Docker 快速搭一套本地环境。

有一些 Docker 的可视化客户端可以安装,帮我们更方便更直观的管理镜像、容器,当然如果你很厉害的话,完全用命令行也不是不行。

我就没这么厉害了,那些参数根本记不住,所以必须要装客户端。我安装的是 Docker Desktop,官方客户端,支持 Mac、Linux、Windows,我大部分时候用 Mac,有时候也要用 Windows,所以Docker Desktop是不二选择。

如果你只用 Mac 的话,也可以安装 OrbStackorbstack.dev/),据说比 Docker Desktop 要流畅一些。

下载安装

访问 Docker Desktop 官网 www.docker.com/products/do…

763shots_donc

下载完一键安装就可以了,Docker 环境直接帮你装好了,省心省事儿。下面是它的控制台界面。左侧导航可以查看镜像列表、容器列表、映射的Volumes。

我们在命令行输入 docker -v,如果出现正确的版本号,说明 docker服务已经安装正常了。

Docker version 24.0.2, build cb74dfc

接下来有一件事儿是必须要做的,那就是设置国内镜像源,道理大家都懂,你要是用国外的镜像源,一天都不一定能搞下来一个。

点击「设置」按钮,在左侧选择「Docker Engine」

,然后在右侧的配置框中添加如下配置,加到最下面即可:

"registry-mirrors": [
    "https://docker.mirrors.ustc.edu.cn",
    "https://cr.console.aliyun.com/"
  ]

加完后,点击「Apply & restart」,这时候会重启 Docker 服务。

安装一个服务

MySQL、Nginx、Redis、Zookeeper 这些都是服务,每一个都可以按照这种方式安装,不管你的项目需要多少个服务,一个个安装就好了,很快的呦。

正好我最进要学一下 PostgreSQL,我就直接启动一个 docker 容器了,不在本地安装了。当然了,像数据库这种I/O型的应用是不建议容器化的,但是本地开发测试无所谓。

在这个搜索框输入关键词,查找对应的镜像,我在这里输入关键词 PostgreSQL。如果安装 Nginx 那就是输入 Nginx,以此类推。

recherche

看,出来了一大堆,我一般都是找第一个,也就是下载量最大的这个。

可以 pull 或者 run,pull 是拉取镜像,run 是拉取镜像+启动容器。

我一般都是直接 run,点一下 run,等一会儿,因为前面已经设置了国内镜像源,所以速度很快,十几秒钟。(根据网速快慢不同,因为要下载镜像文件,有的应用有上百M)

下载完之后,因为选的是 run,所以直接弹出了启动参数。

设置镜像名称

容器名称(Container name)就是为了我们一看到它就知道是干什么的,用来方便管理的,我就直接命名为 PostgreSQL了。

设置端口映射(Ports)

服务本身有自己的端口,例如 MySQL 是3306,这是服务本身在容器内的启动端口,但最终我们要通过宿主机去访问服务,所以要将这个容器内的端口绑定到一个宿主机端口,这叫做端口映射,这样一来,我们就可以通过宿主机的端口访问到容器内的端口了。比如我将 MySQL 容器的 3306 端口映射到宿主机的 13306 端口,之后我在设置数据库连接的时候,就用本机 IP:13306就能访问 MySQL 容器了。

在我这个 PostgreSQL 容器上,我将本机的 15432和容器的 5432端口绑定,之后就可以用 15432做连接端口了。

目录映射(Volumes)

很多服务都会用到存储目录,但是容器本身就在宿主机上,所以需要将服务在容器内的目录映射到宿主机的目录上,这叫目录映射。例如将 Nginx 容器的 /etc/nginx目录映射到宿主机的 /apps/nginx/目录上,那之后我在宿主机访问 /apps/nginx目录时,就能看到 Nginx 容器的配置文件了。

在我这个PostgreSQL 容器上,我将 /etc/postgresql/postgresql.conf配置文件映射到了我本地的一个目录上。

环境变量

一个服务启动可能会用到启动变量,这些变量可以通过环境变量的方式进行配置。例如,我们启动一个 Java jar 包,要配置 JVM 相关的参数,这些参数就可以放到环境变量中,供启动的时候使用。

因为 PostgreSQL 需要密码,所以这里就设置一个密码的环境变量 POSTGRES_PASSWORD

都设置好之后,点击run按钮,启动容器。

Ensuite, nous voyons que le conteneur a été démarré et les journaux correspondants sont imprimés.

Cliquez ensuite sur la gauche Containerspour voir le conteneur démarré et quelques configurations de base.

Ensuite, vous pouvez vous connecter via le client.

En outre, vous pouvez également afficher les fichiers internes, l'état, les informations de configuration, les journaux, etc. du conteneur dans les détails du conteneur et entrer la ligne de commande.

enfin

Cela peut être lent pour la première fois, mais ce sera très rapide une fois que vous vous y serez familiarisé. C'est beaucoup plus rapide que d'installer et de configurer directement localement, et certaines installations et configurations de logiciels sont très lourdes et vous feront perdre beaucoup de temps inutilement. .

Il existe également de nombreux frameworks et applications open source qui fournissent des versions docker.Après avoir maîtrisé cette méthode, vous pouvez rapidement installer ces frameworks et applications pour vérification et utilisation, et l'expérience utilisateur augmentera directement d'un ordre de grandeur.

Je suppose que tu aimes

Origine juejin.im/post/7260148000906756153
conseillé
Classement