MacOS での開発のための Docker
開発環境は鋭利なツールであるべきです.
開発環境の構成に Homebrew を使用するのは退屈です.開発環境は一時的なもので、数分以内に再現できる必要があります.はい、ドットファイルをホストし、バイナリのインストールをサポートするスクリプトを作成することについてです.さまざまなバージョン用.したがって、最新のソリューションはコンテナの使用に関するものです.開発とそのオーケストレーションにコンテナーを使用する方法は多数あります.怠惰な開発者のための迅速な解決策は何ですか? Docker Desktop .簡単、インストールして実行します.
ただし、MacOS の Docker デスクトップはひどいものです.遅いです.ホストマシンのパワーにはまだ遅くて貪欲です.
それの使い方?
何度も試した結果、最適な解決策は、Linux 仮想マシンで Docker エンジンを実行することです.
Linuxを直接使用しないのはなぜですか?
まあ、それはさまざまなバージョンの問題を解決しません.最後に、最も説得力のある解決策としてコンテナーを使用することをあきらめます.
Docker Desktop をインストールします.実行してから無効にします.エンジンを始動しないでください.
virtualbox binaries をインストールするか、 Homebrew を使用します.はい、すでに macOS Monterey をサポートしています.
Vagrant binaries をインストールするか、Homebrew を使用します
終わり.
インフラストラクチャをコードとして保持します.
2 つのファイルを作成し、VCS で追跡します.これは、vagrant 作業ディレクトリです.
リソース割り当てとアプリケーション ポートを変更して、ホストで使用できるようにします.
終わり.
Docker コンテキストを作成します.
正しいコンテキストを使用すると、
どうぞ.ドッカーは準備ができています.開発スタックで作業している間、docker エンジンのことを忘れているかもしれません.
さまざまなツールがサポートするリモート開発. VSCode Devcontainers や JetBrains Remove Development など.シェル ツールを使用してコンテナーをリモートで接続できます.
復元する必要がある場合は一時停止します.永続的なボリュームがある場合、それらは変更されずに同じままです.定期的なルーチン.ホストを再起動して、その状態を取得できます.
危険!必要がなくなったら、破棄してください.それは通常起こりません.激怒事件.しかし、これが Docker エンジンをリセットする最も便利で迅速な方法です.
これで、いくつかの docker コンテキストができました.現在は
コンテキストを切り替えることができます.必要な場合は raw Docker Desktop を使用してください.より多くの Docker エンジンを実行できます.
Docker はコンテキストに従い、外部エンジン リソースを表示します.
十分です.乾杯!
開発環境の構成に Homebrew を使用するのは退屈です.開発環境は一時的なもので、数分以内に再現できる必要があります.はい、ドットファイルをホストし、バイナリのインストールをサポートするスクリプトを作成することについてです.さまざまなバージョン用.したがって、最新のソリューションはコンテナの使用に関するものです.開発とそのオーケストレーションにコンテナーを使用する方法は多数あります.怠惰な開発者のための迅速な解決策は何ですか? Docker Desktop .簡単、インストールして実行します.
ただし、MacOS の Docker デスクトップはひどいものです.遅いです.ホストマシンのパワーにはまだ遅くて貪欲です.
それの使い方?
何度も試した結果、最適な解決策は、Linux 仮想マシンで Docker エンジンを実行することです.
Linuxを直接使用しないのはなぜですか?
まあ、それはさまざまなバージョンの問題を解決しません.最後に、最も説得力のある解決策としてコンテナーを使用することをあきらめます.
インストール
Docker Desktop をインストールします.実行してから無効にします.エンジンを始動しないでください.
virtualbox binaries をインストールするか、 Homebrew を使用します.はい、すでに macOS Monterey をサポートしています.
brew install --cask virtualbox
brew install --cask virtualbox-extension-pack
Vagrant binaries をインストールするか、Homebrew を使用します
brew install vagrant
vagrant plugin install vagrant-vbguest
終わり.
設定
インフラストラクチャをコードとして保持します.
2 つのファイルを作成し、VCS で追跡します.これは、vagrant 作業ディレクトリです.
.
├── Vagrantfile
└── install.sh
Vagrantfile
は次のようになりますVagrant.configure("2") do |config|
config.ssh.forward_agent = true
config.vm.provider :virtualbox do |v|
v.memory = 12288 # don't be greedy, it should be 40-70% of your host memory
v.cpus = 4 # and this should be 60-80% of your real CPU cores
v.gui = false
end
config.vm.define "docker" do |c|
c.vm.box = "ubuntu/hirsute64"
# Docker ports
c.vm.network "forwarded_port", guest: 2375, host: 2375, id: "dockerd"
# Application ports
c.vm.network "forwarded_port", guest: 1313, host: 1313, id: "hugo"
c.vm.network "forwarded_port", guest: 3000, host: 3000
c.vm.network "forwarded_port", guest: 3001, host: 3001
c.vm.network "forwarded_port", guest: 3002, host: 3002
c.vm.network "forwarded_port", guest: 3306, host: 3306, id: "mysql"
c.vm.network "forwarded_port", guest: 5432, host: 5432, id: "psql"
c.vm.network "forwarded_port", guest: 6379, host: 6379, id: "redis"
c.vm.provision :shell, privileged: false, binary: true, path: "install.sh"
end
end
リソース割り当てとアプリケーション ポートを変更して、ホストで使用できるようにします.
install.sh
スクリプトは Docker エンジンのプロビジョニングを自動化します#!/usr/bin/env bash
echo '--- SYSTEM UPDATE ---'
sudo apt update
sudo apt install ca-certificates curl gnupg lsb-release net-tools
echo '--- INSTALL DOCKER ---'
curl -fsSL https://get.docker.com | sudo sh
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
echo '--- SETUP DOCKER SYSTEMD ---'
sudo mkdir /etc/systemd/system/docker.service.d/
cat <<EOF >>/tmp/docker.conf
[Service]
ExecStart=
ExecStart=/usr/bin/dockerd
EOF
sudo mv /tmp/docker.conf /etc/systemd/system/docker.service.d/docker.conf
echo '--- SETUP DOCKERD ---'
cat <<EOF >>/tmp/daemon.json
{
"hosts": [
"tcp://0.0.0.0:2375",
"unix:///var/run/docker.sock"
]
}
EOF
sudo mv /tmp/daemon.json /etc/docker/daemon.json
echo '--- RELOAD DOCKERD ---'
sudo systemctl daemon-reload
sudo systemctl restart docker
echo '--- SETUP DOCKER PERMISSIONS---'
sudo usermod -aG docker $USER
終わり.
走る
vagrant
を実行すると、すべてがセットアップされますvagrant up
Docker コンテキストを作成します.
docker context create vagrant --docker host=tcp://localhost:2375
正しいコンテキストを使用すると、
docker
と docker-compose
の両方がそれに続きます.docker context use vagrant
どうぞ.ドッカーは準備ができています.開発スタックで作業している間、docker エンジンのことを忘れているかもしれません.
さまざまなツールがサポートするリモート開発. VSCode Devcontainers や JetBrains Remove Development など.シェル ツールを使用してコンテナーをリモートで接続できます.
止まる
復元する必要がある場合は一時停止します.永続的なボリュームがある場合、それらは変更されずに同じままです.定期的なルーチン.ホストを再起動して、その状態を取得できます.
vagrant halt
危険!必要がなくなったら、破棄してください.それは通常起こりません.激怒事件.しかし、これが Docker エンジンをリセットする最も便利で迅速な方法です.
vagrant destroy --force
詳細
これで、いくつかの docker コンテキストができました.現在は
vagrant
に設定されています.NAME TYPE DESCRIPTION DOCKER ENDPOINT ...
default moby ... unix:///var/run/docker.sock ...
vagrant * moby tcp://localhost:2375 ...
コンテキストを切り替えることができます.必要な場合は raw Docker Desktop を使用してください.より多くの Docker エンジンを実行できます.
Docker はコンテキストに従い、外部エンジン リソースを表示します.
docker info
Client:
Context: vagrant
Debug Mode: false
Plugins:
buildx: Docker Buildx (Docker Inc., v0.7.1)
compose: Docker Compose (Docker Inc., v2.2.1)
scan: Docker Scan (Docker Inc., v0.14.0)
Server:
...
Kernel Version: 5.11.0-41-generic
Operating System: Ubuntu 21.04
OSType: linux
Architecture: x86_64
CPUs: 4
Total Memory: 11.69GiB
Name: ubuntu-hirsute
...
十分です.乾杯!
Reference
この問題について(MacOS での開発のための Docker), 我々は、より多くの情報をここで見つけました https://dev.to/dml/docker-for-development-on-macos-23p1テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol