スポンサーリンク
ツール

WSL2(Ubuntu)へDockerを導入

ツール

前提

こちらの記事のようにWSL2(Ubuntu)が導入済みの環境を対象とします。

Docker導入

WSL2(Ubuntu)へDockerをインストールします。
Ubuntuのバージョンは20.04で、Codenameは”facal”です。

Dockerインストール

①事前にパッケージ一覧を更新して、必要なパッケージをインストールします。

sudo apt update
sudo apt upgrade -y
sudo apt install -y apt-transport-https ca-certificates curl software-properties-common

②Docker公式のGPGキーを取得します。

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

“OK”と表示されない場合は以下を実行します。

pkill -9 gpg-agent
source <(gpg-agent --daemon)

③Dockerリポジトリの情報を登録し、パッケージ一覧を再更新します。

sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable"
sudo apt update

※※Ubuntu20.04では$(lsb_release -cs) stableではなくfocal stableと記述します。
エラーが発生してしまった場合の対処法をこちらに記載しておきます。

④DockerEngineをインストールします。

apt-cache policy docker-ce
sudo apt install docker-ce

⑤sudo無しでdockerコマンド実行可能とします。(<USER>を実ユーザへ差し替え)
※反映されない場合はUbuntuへ再ログインしてください。

sudo usermod -aG docker <USER>

⑥以下ようにdockerエンジンを起動してdockerが利用可能となります。

sudo service docker start
docker images
sudo service docker stop

※dockerエンジン起動 → イメージ一覧取得(最初は空) → dockerエンジン停止

Dockerインストールエラーの対処

Uuntu20.04で下記コマンドを実行してしまった場合の対処法です。

sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

↓以下のようなエラーが発生します。

E: The repository 'https://download.docker.com/linux/ubuntu \ Release' does not have a Release file.

①下記ファイルを開いて、最下部の”docker.com”と記述されている行を全て削除します。

sudo vi /etc/apt/sources.list

↓”docker.com”と記述されている行を削除します。

②下記ディレクトリ内のdockerに関するファイルを削除します。

cd /etc/apt/sources.list.d
ls
sudo rm *docker*

③パッケージ一覧を最新化します。以上です。

sudo apt update

Dockerの基本(とりあえずの走り書きです。。)

※よく口頭で説明する内容を走り書きしました。(そのうち書き直しまs)

  • Dockerイメージ → コンテナ → Dockerイメージ
    ※Dockerイメージ:コンテナの静止点(VMイメージやスナップショットのようなもの)
    ※コンテナ:Dockerイメージから生成される稼働環境
  • Dockerfile → Dockerイメージ
    ※Dockerfile:Dockerイメージの設計書のようなもの

Dockerイメージからコンテナを生成して稼働させ、開発環境やアプリケーションの稼働環境として利用します。
コンテナは、編集した後にコミットしてイメージ化する事も出来ます。
イメージとはVMイメージやスナップショットのようなもので配布可能です。(チームメンバーへ開発環境を配布など)
また、イメージはDockerHubやインターネット上からダウンロードして利用する事も可能です。
※AWSではECRへイメージをプッシュして格納し、ECSでコンテナを稼働させる事が出来ます。(コンテナアプリケーション)

周辺ツールとして、Dockerイメージを自動で生成するDockerfileや並列で複数のコンテナを連携して稼働させる事が可能なDockerComposeといった仕組みも存在します。

Dockerfileはイメージの設計書のような役割を持ちます。
Dockerfileの利点として、下記のような内容が挙げられます。(パッと思いついたものですが。)

  • 環境に何がインストールされているのか明確化できる。
  • インストールするライブラリを実行時の最新バージョン(または特定のバージョン)でイメージ化できる。
  • 環境の構成変更が容易となる。
  • 最新のソースコードでアプリケーションを都度デプロイしたいケースなどで有用。
  • Dockerfileは一度実行すると、以降は差分の更新がローカルのイメージへ反映されます。(高速)

個人的にコンテナアプリケーションをクラウド環境へデプロイするプロジェクトでは、ソリューション内へDockerfileを配置して、現在のソースコードで最新verのイメージを作成してクラウド上のコンテナリポジトリへプッシュするShellを作成しておく事が多いです。
CI/CD構成の場合は、ソースコードをリポジトリへプッシュ後、自動でそのソースコードからコンテナイメージを作成するパイプラインを作成します。CI/CDでも基本的にDockerfileを利用します。
※(AWSの場合)CI/CD:CodePipeline(CodeCommit→CodeBuild→CodeDeploy or CloudFormation)
※CodeCommit:Gitリポジトリ
※CodeBuild:CodeCommitへのプッシュを検知して、ソースコードの自動ビルド&テスト、コンテナイメージの生成、コンテナリポジトリへのプッシュなど
※CodeDeploy:ECSやEC2など稼働環境へのデプロイ

よく使うコマンド一覧

こちらの記事をご参照ください。

コメント

タイトルとURLをコピーしました