今回は、Ubuntuサーバにコンテナ環境を構築するDockerを導入し、コンテナイメージを作成後、コンテナの起動から停止・削除まで行う基本的な手順について解説します。
実施環境
OS | Ubuntu Server 20.10 |
---|---|
Docker | 20.10.3 |
古いバージョンのDockerの削除
初めに、古いバージョンのDockerをアンインストールします。Dockerがインストールされていない場合はこの手順をスキップしてください。
$ sudo apt-get remove docker docker.io containerd runc
GPGキーの作成、Dockerのインストール
初めにパッケージをアップデートし、Dockerのインストールに必要なソフトウェア、コマンドをインストールします。
$ sudo apt-get update
$ sudo apt-get -y install \
apt-transport-https \
ca-certificates \
curl \
gnupg-agent \
software-properties-common
インストール後、Docker公式から正規のGPGキーをダウンロードしtrusted.gpg.dにキーを追加します。今回はdocker.gpgという名前のキーを生成します。
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg >> docker.gpg
$ sudo gpg --no-default-keyring --keyring gnupg-ring:/etc/apt/trusted.gpg.d/docker.gpg --import docker.gpg
$ sudo chmod 644 /etc/apt/trusted.gpg.d/docker.gpg
$ sudo rm /etc/apt/trusted.gpg.d/docker.gpg~
$ rm docker.gpg
※参考
Docker公式のドキュメントの通り「apt-key」コマンドでの追加も可能ですが、Ubuntu-20.01では「apt-keyは非推奨で/etc/apt/trusted.gpg.d/を使ってください」との警告が表示されます。
GPGキーの生成後、リポジトリにDockerの最新版をダウンロードします。
$ sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
Dockerの最新版のダウンロード後、Dockerをインストールします。
$ sudo apt-get update
$ sudo apt-get -y install docker-ce docker-ce-cli containerd.io
Dockerのインストール後、sudoなしでdockerコマンドを使用するためにdockerグループにユーザーを追加します。今回は例としてhogehogeユーザーを追加します。
$ sudo usermod -aG docker hogehoge
dockerグループへユーザーを追加後、一度ログアウトし再度ログインをします。
再ログイン後、「docker version」コマンドを実行し、Dockerのバージョンが表示されることを確認します。
$ docker version
Client: Docker Engine - Community
Version: 20.10.3
API version: 1.41
Go version: go1.13.15
Git commit: 48d30b5
Built: Fri Jan 29 14:33:25 2021
OS/Arch: linux/amd64
Context: default
Experimental: true
Server: Docker Engine - Community
Engine:
Version: 20.10.3
API version: 1.41 (minimum version 1.12)
Go version: go1.13.15
Git commit: 46229ca
Built: Fri Jan 29 14:31:35 2021
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.4.3
GitCommit: 269548fa27e0089a8b8278fc4fc781d7f65a939b
runc:
Version: 1.0.0-rc92
GitCommit: ff819c7e9184c13b7c2607fe6c30ae19403a7aff
docker-init:
Version: 0.19.0
GitCommit: de40ad0
コンテナイメージの取得
Dockerインストール後、コンテナイメージを取得します。今回はApacheが入った「httpd」というイメージを使用します。Dockerでイメージを取得するには「docker pull」コマンドを使用しイメージを取得します。
$ docker pull httpd
Apacheのイメージ取得後、「docker image ps」コマンドでイメージを取得できたことを確認します。
$ docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
httpd latest 464fdc577ef4 5 days ago 138MB
コンテナの起動
Dockerイメージを取得後、取得したイメージを使用してコンテナを起動します。今回は以下の内容でコンテナを起動します。
コンテナ名 | web01 |
---|---|
接続ポート | 8080 |
イメージからコンテナを起動するには「docker run」コマンドを使用します。今回はバックグランドで起動する「-d」オプションとポートを指定する「-p」オプションを指定します。
$ docker run --name web01 -d -p 8080:80 httpd
コンテナ起動後、「docker ps」コマンドでコンテナが起動したことを確認します。
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a7c2de7a0633 httpd "httpd-foreground" 14 minutes ago Up 14 minutes 0.0.0.0:8080->80/tcp web01
動作確認
コンテナ起動後、Apacheに接続可能かどうかを確認します。ブラウザから「https://<サーバのIPアドレス>:8080/」にアクセスし、「It works!」の画面が表示されることを確認します。

コンテナの停止・削除
動作確認が終わりましたら、起動したコンテナを停止し削除します。Dockerでは起動中のコンテナをいきなり削除することはできないため、一度コンテナを停止します。コンテナを停止するには「docker stop <コンテナ名 or コンテナID>」コマンドを使用します。
$ docker stop web01
コンテナ停止後、「docker rm」コマンドを使用しコンテナを削除します。
$ docker rm web01
コンテナ削除後、「docker ps -a」コマンドでコンテナが削除されたことを確認します。
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
コンテナイメージの削除
コンテナイメージはコンテナを削除しても残り続けます。今回使用したコンテナイメージを削除するには「docker image rm」コマンドを使用しコンテナイメージを削除します。
コンテナイメージを削除するにはイメージ名かイメージIDが必要となります。コンテナイメージの一覧の表示には「docker image ls」コマンドを使用します。
$ docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
httpd latest 464fdc577ef4 6 days ago 138MB
今回はコンテナイメージのイメージ名を使用して削除します。
$ docker image rm httpd
コンテナイメージ削除後、「docker image ls」コマンドでコンテナイメージが削除されたことを確認します。
$ docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE