- 前の記事のおさらい
前回の記事で、WindowsのWSL2を用いてUbuntuの環境を構築しました。
今回は、Dockerの環境をWSL2上に構築します。
もちろんDocker Composeのプラグインも導入します。
手順
前提
- WSL2でUbuntu(バージョンはとりあえず22.04とする)を構築済
- Ubuntuのユーザーの設定を終えている
- そのユーザーは管理者権限を持っている
インストール
基本的には公式の通りに行えばOKです。
Docker Engine インストール (Ubuntu向け)
sudo apt remove remove docker docker-engine docker.io containerd runc sudo apt update sudo apt install -y ca-certificates curl gnupg lsb-release curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null sudo apt update sudo apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
動作確認
Dockerエンジンをスタートして、ステータスを確認後にHelloWorldコンテナを起動します。
sudo service docker start sudo service docker status sudo docker run hello-world
Proxy設定
Proxy関係でコンテナが起動できなかった場合、Dockerには独自にProxy設定が必要なので追加します。
sudo nano /etc/default/docker
If you need Docker to use an HTTP proxy, it can also be specified here.
という文章の下に以下の文面を追加
export http_proxy="<ここにプロキシのアドレスとポートを書く>" export https_proxy=$http_proxy export HTTP_PROXY=$http_proxy export HTTPS_PROXY=$http_proxy export no_proxy="127.0.0.1,localhost" export NO_PROXY=$no_proxy
WSLを再起動して再度試す
wsl --shutdown sudo service docker start sudo docker run hello-world
ちなみに、Dockerコンテナ内は別途Proxyの設定が必要(大体は環境変数をコンテナ内に引っ張ってくることになる)。
Dockerエンジンの自動起動
ログイン時のプログラムに自動起動設定をしておくとよい。
nano ~/.profile
以下のコードを追加
sudo service docker start sudo service docker status
Docker Hubへの自動ログイン設定
自動起動と同じファイル(~/.profile)に自動ログイン設定を書いておくと、Docker Hubへのログインの恩恵が受けれる。
準備
もちろんだがDocker Hubのユーザー登録を行っておく必要がある。
アクセストークン発行
ユーザー名とパスワードによる自動ログインも可能だが、悪エストークンを発行しておくとよりセキュアになる。
- ブラウザからDockerにログインする
- Account Settingsを開く
- SecurityメニューのAccess Tokensを開く
- New Access Tokenを実行
- Genetateでトークンを発行
控えたトークンをホームディレクトリにフォルダを作るなどして保存する。
nano ~/.docker/token.txt
.profileへの追記
cat ~/.docker/token.txt | docker login --username <ユーザー名> --password-stdin
ログインの恩恵
無料ユーザーでも、6時間以内のImage Pull回数が200回まで行える・・・など
Dockerコマンド時にsudoを不要にする
sudo usermod -aG docker <Ubuntuのユーザー名>
再ログイン後にsudoが不要になっているはず。
最後に
WindowsだとDocker Desktopを導入してもいいんですが、
LinuxとDockerの関係性を考えたら、WSL2上にインストールしておきたいですね。
次回はコンテナの流れでKubernetesの環境構築を説明予定です。
Kubernetes難しくてぜんぜんわからん。
ではぜひ環境を構築して、勉強の足しにしてあげてくださいね。