前提
こちらの記事のように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など稼働環境へのデプロイ
よく使うコマンド一覧
こちらの記事をご参照ください。
コメント