Comment quitter Docker pour Mac et créer un environnement de développement Docker avec Ubuntu + Vagrant

introduction

Je faisais du développement en équipe avec Docker pour Mac, mais c'est lent, alors arrêtons Docker pour Mac et démarrons un environnement virtuel pour créer un environnement Docker explosif! !! Je suis venu à.

Pourquoi Docker pour Mac est lent

Sous Linux, VFS est partagé entre l'hôte et le conteneur, garantissant l'absence de réflexion de surcharge. Cependant, sur macOS (et d'autres plates-formes non Linux), il y a une surcharge importante pour une cohérence totale ... Document japonais Docker et d'autres articles Qiita l'ont également dit, mais je ne comprends pas vraiment ... Pour le moment, le système de partage de fichiers Docker pour Mac semble lent à monter sur osxfs. La raison principale est que l ’API OSX FS Events et l’ API inotify de Linux sont mappées. Cause lente

Quelle est la différence entre Docker pour Mac et l'environnement (Virtual Box + Docker) à construire cette fois? Abandonner Docker pour Mac, ce qui réduit considérablement le DX, et obtenir l'environnement Docker le plus rapide pour Mac L'article ci-dessus était extrêmement facile à comprendre! !! La figure est utile (; ∀ ;)

Environnement d'exploitation

Spécifications PC

Mac OS Catalina 10.15.7

Version Docker

20.10.0-beta1

Version vagabonde

Vagrant 2.2.13

Version Ubuntu

Ubuntu 18.04.5 LTS

Aperçu

① Installez VirtualBox et Vagrant

(2) Installez le plug-in vagrant pour Docker et mutagen (décrit plus loin)

③ Créer un fichier vagrant

④ Synchroniser les fichiers avec mutagen

⑤ Démarrez Docker

Je peux voir de nombreuses étapes, mais faisons de notre mieux ... (rires)

① Installez VirtualBox et Vagrant

Utilisez Homebrew pour installer les outils nécessaires. Installation Homebrew

Installez VirtualBox
brew cask install virtualbox
Installez Vagrant
brew cask install vagrant
Télécharger Vagrant Box

Téléchargez la Vagrant Box (OS). (Cela a pris un certain temps)

vagrant box add ubuntu/bionic64 

Une fois le téléchargement terminé, vous pouvez le vérifier avec la commande suivante

vagrant box list
ubuntu/bionic64 (virtualbox, 20200229.0.0)

(2) Installez le plug-in vagrant pour Docker et mutagen (décrit plus loin)

Installez le plugin Vagrant requis. Je parlerai du mutagène plus tard.

vagrant plugin install vagrant-disksize vagrant-hostsupdater vagrant-mutagen vagrant-docker-compose

③ Créer un fichier vagrant

Vagrant init dans le répertoire de développement

cd ~/my_app       (Déplacer vers le répertoire de développement)
vagrant init ubuntu/bionic64      (Initialiser avec vagrant)

La phrase suivante apparaîtra, vous pouvez donc créer un vagrantfile!

A `Vagrantfile` has been placed in this directory. You are now
ready to `vagrant up` your first virtual environment! Please read
the comments in the Vagrantfile as well as documentation on
`vagrantup.com` for more information on using Vagrant.

Nous éditerons le Vagrantfile! !! !! Modifiez le contenu du fichier Vagrant comme suit! config.vm.hostname est OK dans le répertoire de développement! Si tu ne comprends rien d'autre Commande Vagrant et mémo de paramétrage Vagrantfile C'était facile à comprendre en regardant "Paramètres Vagrantfile" dans l'article ci-dessus. Merci(:_;)

~/my_app/Vagrantfile


Vagrant.configure('2') do |config|
  config.vm.box = 'ubuntu/bionic64'

  config.vm.hostname = 'my_app'

  config.vm.network :private_network, ip: '192.168.50.10'
  
  config.vm.network "forwarded_port", guest: 80, host: 8080

  config.vm.provider :virtualbox do |vb|
    vb.gui = false
    vb.cpus = 4
    vb.memory = 8192
    vb.customize ['modifyvm', :id, '--natdnsproxy1', 'off']
    vb.customize ['modifyvm', :id, '--natdnshostresolver1', 'off']
  end

  config.disksize.size = '30GB'
  config.mutagen.orchestrate = true

  config.vm.synced_folder './', '/home/vagrant/app', type: "rsync",
                                                                                                              
  rsync_auto: true,
                                                                                                              
  rsync__exclude: ['.git/', 'node_modules/', 'log/', 'tmp/', 'vendor']

  config.vm.provision :docker, run: 'always'
  config.vm.provision :docker_compose
end

Si le chemin du côté hôte de config.vm.synced_folder est défini sur " ./ ", ce sera plus facile car il n'est pas nécessaire de réécrire le chemin pour chaque environnement de travail lors du partage de travail.

Ceci termine la préparation de Vagrant + VirtualBox.

④ Synchroniser les fichiers avec mutagen

Synchronisez le fichier modifié entre Mac et Linux. Ceci est réalisé avec un outil appelé Mutagen. Installez mutagen avec la commande suivante. (Cela a également pris du temps)

brew install mutagen-io/mutagen/mutagen

Après l'installation, créez un fichier de configuration mutagen mutagen.yml. Créez-le dans le même répertoire que Vagrantfile.

~/my_app


touch mutagen.yml

Le contenu est le suivant.

~/my_app/mutagen.yml


sync:
  app:
    mode: "two-way-resolved"
    alpha: "./"
    beta: "my-app:/home/vagrant/app"
    ignore:
      vcs: true
      paths:
        - "/node_modules"
        - "/log"
        - "/tmp"

Ensuite, démarrez la VM avec $ vagrant up et Mutagen effectuera une synchronisation de fichier bidirectionnelle. Cette synchronisation est bidirectionnelle, quasiment en temps réel, et est obtenue en transférant des fichiers plutôt qu'en montant le système de fichiers, de sorte qu'il n'y a pratiquement pas de frais généraux une fois monté dans un conteneur Docker.

⑤ Démarrez Docker

Lancez Vagrant

Une erreur s'est produite après l'exécution de la commande ,,,,,

~my_app


vagrant up
/Users/hoge/.vagrant.d/gems/2.4.9/gems/vagrant-mutagen-0.1.2/lib/vagrant-mutagen/Mutagen.rb:22:in `initialize': No such file or directory @ rb_sysopen - /Users/hoge/.ssh/config (Errno::ENOENT)

Vous dites qu'il n'y a pas de config (sueur) Faisons-le! !!

~my_app


touch /Users/hoge/.ssh/config

encore une fois! !!

~my_app


vagrant up

Cette fois, il semble que cela a été bien fait ε- (´∀ ` *) Chaud

Connexion SSH à l'environnement virtuel

vagrant ssh

Puis, cette fois, une sorte de mise à jour des informations ...

New release ''20.04.1 LTS' available.
Run 'do-release-upgrade' to upgrade to it.

Tu ne devrais pas faire ça.

vagrant box add ubuntu/bionic64 Il semble qu'il soit nécessaire de télécharger fermement l'OS qui correspond à la version, donc ...

Lancer Docker dans Vagrant

La commande suivante est un exemple lorsque docker-compose.yml existe dans le répertoire du projet.

cd app
docker-compose up

Recommended Posts

Comment quitter Docker pour Mac et créer un environnement de développement Docker avec Ubuntu + Vagrant
[Rails] [Docker] Le copier-coller est OK! Comment créer un environnement de développement Rails avec Docker
Comment créer un environnement de développement Ruby on Rails avec Docker (Rails 6.x)
Comment créer un environnement de développement Ruby on Rails avec Docker (Rails 5.x)
Comment créer un environnement Docker avec Gradle pour IntelliJ
Créer un environnement de développement PureScript avec Docker
Comment créer un environnement Rails 6 avec Docker
Créer un environnement de développement pour Django + MySQL + nginx avec Docker Compose
Étapes pour créer un environnement de développement Ruby on Rails avec Vagrant
Créer un environnement de développement pour Docker + Rails6 + Postgresql
Créez rapidement un environnement de développement WordPress avec Docker
Créer un environnement de développement pour Docker, Java, vs code
[Rails] Comment créer un environnement avec Docker
Comment créer un environnement Pytorch sur Ubuntu
Création d'un environnement de développement pour les applications Web Java avec Docker pour Mac Part1
[Copier et coller] Créez un environnement de développement Laravel avec Docker Compose, partie 2
Créez un environnement de développement local pour les didacticiels Rails avec Docker (Rails 6 + PostgreSQL + Webpack)
Modèle: créer un environnement de développement Ruby / Rails avec un conteneur Docker (version Ubuntu)
Créer un environnement de développement d'applications Web Java avec Docker pour Mac Part2
Modèle: créer un environnement de développement Ruby / Rails avec un conteneur Docker (version Mac)
Comment créer un environnement de développement Java avec VS Code
Essayez de créer un environnement de développement Java à l'aide de Docker
Créez un environnement de développement pour créer des applications Ruby on Jets + React avec Docker
Créez un environnement de développement d'applications Web qui utilise Java, MySQL et Redis avec Docker CE pour Windows
Installez Ubuntu 20.04 dans la boîte virtuelle sur Windows10 et créez un environnement de développement à l'aide de docker
Créer un environnement Node.js avec Docker
Comment créer un environnement [TypeScript + Vue + Express + MySQL] avec Docker ~ Express ~
Création d'un environnement de développement Java (pour Mac)
J'ai essayé de créer un environnement de développement padrino avec Docker
Créez un environnement de développement local pour les didacticiels Rails avec Docker-Introduisez Bootstrap et Font Awesome avec Webpack-
Procédure de création d'un environnement de développement d'applications Rails avec Docker [Rails, MySQL, Docker]
Comment créer un environnement [TypeScript + Vue + Express + MySQL] avec Docker ~ MySQL ~
Comment installer Pry après avoir créé un environnement de développement Rails avec Docker
Comment installer le langage utilisé dans Ubuntu et comment créer l'environnement
Comment créer un environnement Rails + Vue + MySQL avec Docker [dernière version 2020/09]
Comment créer un environnement [TypeScript + Vue + Express + MySQL] avec Docker ~ Sequelize ~
Construction de l'environnement de développement Laravel avec Docker (Mac)
Créer un environnement de développement Java sur Mac
Construction d'un environnement de développement simple Docker + Django
Créer un environnement de débogage sur un conteneur - Créer un environnement de développement local pour les didacticiels Rails avec Docker -
Comment exécuter avec des commandes de langage de développement normales dans l'environnement de développement Docker
Créer un environnement Laravel / Docker avec VSCode devcontainer
Construction de l'environnement de développement Simple Docker Compose + Django
[Win10] Créer un environnement de développement JSF avec NetBeans
Comment créer une API avec GraphQL et Rails
Préparer un environnement de scraping avec Docker et Java
Créer un environnement mecab (dictionnaire NEologd) avec Docker (ubuntu)