So beenden Sie Docker für Mac und erstellen eine Docker-Entwicklungsumgebung mit Ubuntu + Vagrant

Einführung

Ich habe die Teamentwicklung mit Docker für Mac durchgeführt, aber es ist langsam. Beenden wir also Docker für Mac und starten eine virtuelle Umgebung, um eine explosive Docker-Umgebung zu erstellen! !! Ich kam zu.

Warum Docker für Mac langsam ist

Unter Linux wird VFS zwischen dem Host und dem Container gemeinsam genutzt, sodass keine Overhead-Reflexion erfolgt. Unter macOS (und anderen Nicht-Linux-Plattformen) ist der Aufwand für die vollständige Konsistenz jedoch erheblich ... Japanisches Docker-Dokument und andere Qiita-Artikel sagten das ebenfalls, aber ich verstehe nicht wirklich ... Derzeit scheint das Docker für Mac-Dateifreigabesystem nur langsam auf osxfs zu mounten. Der Hauptgrund ist, dass die OSX FS-Ereignis-API und die inotify-API von Linux zugeordnet sind. Langsame Ursache

Was ist der Unterschied zwischen "Docker für Mac" und der diesmal zu erstellenden Umgebung (Virtual Box + Docker)? Geben Sie Docker für Mac auf, wodurch DX erheblich reduziert wird, und erhalten Sie die schnellste Docker-Umgebung für Mac Der obige Artikel war sehr einfach zu verstehen! !! Die Abbildung ist hilfreich (; ∀ ;)

Betriebsumgebung

PC-Spezifikationen

Mac OS Catalina 10.15.7

Docker-Version

20.10.0-beta1

Vagrant Version

Vagrant 2.2.13

Ubuntu-Version

Ubuntu 18.04.5 LTS

Überblick

① Installieren Sie VirtualBox und Vagrant

(2) Installieren Sie das Vagrant-Plug-In für Docker und Mutagen (später beschrieben).

③ Vagabunddatei erstellen

④ Synchronisieren Sie Dateien mit Mutagen

⑤ Starten Sie Docker

Ich kann viele Schritte sehen, aber lasst uns unser Bestes geben ... (lacht)

① Installieren Sie VirtualBox und Vagrant

Verwenden Sie Homebrew, um die erforderlichen Werkzeuge zu installieren. Homebrew-Installation

Installieren Sie VirtualBox
brew cask install virtualbox
Installieren Sie Vagrant
brew cask install vagrant
Laden Sie Vagrant Box herunter

Laden Sie die Vagrant Box (OS) herunter. (Es hat eine ganze Weile gedauert)

vagrant box add ubuntu/bionic64 

Nachdem der Download abgeschlossen ist, können Sie ihn mit dem folgenden Befehl überprüfen

vagrant box list
ubuntu/bionic64 (virtualbox, 20200229.0.0)

(2) Installieren Sie das Vagrant-Plug-In für Docker und Mutagen (später beschrieben).

Installieren Sie das erforderliche Vagrant Plugin. Ich werde später über Mutagen sprechen.

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

③ Vagabunddatei erstellen

Vagrant init im Entwicklungsverzeichnis

cd ~/my_app       (In das Entwicklungsverzeichnis wechseln)
vagrant init ubuntu/bionic64      (Mit Vagabund initialisieren)

Der folgende Satz wird angezeigt, damit Sie eine Vagrantdatei erstellen können!

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.

Wir werden das Vagrantfile bearbeiten! !! !! Bearbeiten Sie den Inhalt der Vagrant-Datei wie folgt! config.vm.hostname ist im Entwicklungsverzeichnis in Ordnung! Wenn Sie nichts anderes verstehen Vagrant-Befehl und Vagrantfile-Einstellungsnotiz Es war leicht zu verstehen, wenn man sich die "Vagrantfile-Einstellungen" im obigen Artikel ansah. Vielen Dank(:_;)

~/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

Wenn der Pfad auf der Hostseite von config.vm.synced_folder auf "./" festgelegt ist, ist dies einfacher, da der Pfad für jede Arbeitsumgebung nicht neu geschrieben werden muss, wenn Arbeit freigegeben wird.

Damit ist die Vorbereitung von Vagrant + VirtualBox abgeschlossen.

④ Synchronisieren Sie Dateien mit Mutagen

Synchronisieren Sie die bearbeitete Datei zwischen Mac und Linux. Dies wird mit einem Tool namens Mutagen erreicht. Installieren Sie mutagen mit dem folgenden Befehl. (Dies hat auch Zeit gekostet)

brew install mutagen-io/mutagen/mutagen

Erstellen Sie nach der Installation eine mutagene Konfigurationsdatei mutagen.yml. Erstellen Sie es im selben Verzeichnis wie Vagrantfile.

~/my_app


touch mutagen.yml

Der Inhalt ist wie folgt.

~/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"

Starten Sie dann die VM mit $ vagrant up und Mutagen führt eine bidirektionale Dateisynchronisierung durch. Diese Synchronisation erfolgt bidirektional nahezu in Echtzeit und wird durch Übertragen von Dateien anstatt durch Mounten des Dateisystems erreicht, sodass beim endgültigen Mounten in einem Docker-Container fast kein Overhead entsteht.

⑤ Starten Sie Docker

Starten Sie Vagrant

Nach Ausführung des Befehls ,,,,, ist ein Fehler aufgetreten.

~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)

Sie sagen, dass es keine Konfiguration gibt (Schweiß) Lass es uns machen! !!

~my_app


touch /Users/hoge/.ssh/config

Noch einmal! !!

~my_app


vagrant up

Diesmal scheint es gut gemacht zu sein ε- (´∀ ` *) Heiß

SSH-Verbindung zur virtuellen Umgebung

vagrant ssh

Dann, diesmal eine Art Update-Information ...

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

Du solltest das nicht tun.

vagrant box add ubuntu/bionic64 Es scheint notwendig zu sein, das Betriebssystem herunterzuladen, das fest mit der Version übereinstimmt, also ...

Starten Sie Docker in Vagrant

Der folgende Befehl ist ein Beispiel, wenn docker-compose.yml im Projektverzeichnis vorhanden ist.

cd app
docker-compose up

Recommended Posts

So beenden Sie Docker für Mac und erstellen eine Docker-Entwicklungsumgebung mit Ubuntu + Vagrant
[Rails] [Docker] Kopieren und Einfügen ist in Ordnung! So erstellen Sie eine Rails-Entwicklungsumgebung mit Docker
So erstellen Sie eine Ruby on Rails-Entwicklungsumgebung mit Docker (Rails 6.x)
So erstellen Sie eine Ruby on Rails-Entwicklungsumgebung mit Docker (Rails 5.x)
So erstellen Sie eine Docker-Umgebung mit Gradle for IntelliJ
Erstellen Sie mit Docker eine PureScript-Entwicklungsumgebung
So erstellen Sie eine Rails 6-Umgebung mit Docker
Erstellen Sie mit Docker Compose eine Entwicklungsumgebung für Django + MySQL + nginx
Schritte zum Erstellen einer Ruby on Rails-Entwicklungsumgebung mit Vagrant
Erstellen Sie eine Entwicklungsumgebung für Docker + Rails6 + Postgresql
Erstellen Sie mit Docker schnell eine WordPress-Entwicklungsumgebung
Erstellen Sie eine Entwicklungsumgebung für Docker, Java und Code
[Rails] So erstellen Sie eine Umgebung mit Docker
So erstellen Sie eine Pytorch-Umgebung unter Ubuntu
Erstellen einer Entwicklungsumgebung für Java-Webanwendungen mit Docker für Mac Teil1
[Kopieren und Einfügen] Erstellen Sie mit Docker Compose Part 2 eine Laravel-Entwicklungsumgebung
Erstellen Sie mit Docker eine lokale Entwicklungsumgebung für Rails-Tutorials (Rails 6 + PostgreSQL + Webpack)
Vorlage: Erstellen Sie eine Ruby / Rails-Entwicklungsumgebung mit einem Docker-Container (Ubuntu-Version).
Erstellen Sie mit Docker für Mac Teil2 eine Entwicklungsumgebung für Java-Webanwendungen
Vorlage: Erstellen Sie eine Ruby / Rails-Entwicklungsumgebung mit einem Docker-Container (Mac-Version).
So erstellen Sie eine Java-Entwicklungsumgebung mit VS Code
Versuchen Sie, mit Docker eine Java-Entwicklungsumgebung zu erstellen
Erstellen Sie eine Entwicklungsumgebung, um Ruby on Jets + React-Apps mit Docker zu erstellen
Erstellen Sie mit Docker CE für Windows eine Webanwendungsentwicklungsumgebung, die Java, MySQL und Redis verwendet
Installieren Sie Ubuntu 20.04 in der virtuellen Box unter Windows 10 und erstellen Sie eine Entwicklungsumgebung mit Docker
Erstellen Sie mit Docker eine Node.js-Umgebung
So erstellen Sie mit Docker ~ Express ~ eine [TypeScript + Vue + Express + MySQL] -Umgebung
Erstellen einer Java-Entwicklungsumgebung (für Mac)
Ich habe versucht, mit Docker eine Padrino-Entwicklungsumgebung zu erstellen
Erstellen Sie mit Docker-Introduce Bootstrap und Font Awesome with Webpack- eine lokale Entwicklungsumgebung für Rails-Tutorials.
Verfahren zum Erstellen einer Rails-Anwendungsentwicklungsumgebung mit Docker [Rails, MySQL, Docker]
So erstellen Sie mit Docker ~ MySQL ~ eine [TypeScript + Vue + Express + MySQL] -Umgebung
So installieren Sie Pry nach dem Erstellen einer Rails-Entwicklungsumgebung mit Docker
Wie installiere ich die in Ubuntu verwendete Sprache und wie erstelle ich die Umgebung?
So erstellen Sie eine Rails + Vue + MySQL-Umgebung mit Docker [neueste Version 2020/09]
So erstellen Sie mit Docker ~ Sequelize ~ eine [TypeScript + Vue + Express + MySQL] -Umgebung
Aufbau einer Laravel-Entwicklungsumgebung mit Docker (Mac)
Erstellen Sie eine Java-Entwicklungsumgebung auf dem Mac
Einfache Konstruktion der Docker + Django-Entwicklungsumgebung
Erstellen Sie eine Debug-Umgebung auf einem Container. Erstellen Sie mit Docker eine lokale Entwicklungsumgebung für Rails-Tutorials.
Ausführen mit normalen Befehlen für die Entwicklungssprache in der Docker-Entwicklungsumgebung
Erstellen Sie eine Laravel / Docker-Umgebung mit VSCode devcontainer
Einfache Erstellung der Docker Compose + Django-Entwicklungsumgebung
[Win10] Erstellen Sie eine JSF-Entwicklungsumgebung mit NetBeans
So erstellen Sie eine API mit GraphQL und Rails
Bereiten Sie eine Scraping-Umgebung mit Docker und Java vor
Erstellen Sie mit Docker (Ubuntu) eine Mecab-Umgebung (NEologd Dictionary).