Ubuntu 19.04:Docker-CE (Community Edition) インストール

Ubuntu 19.04 に コンテナ型仮想化環境 Docker CE(Community Edition) をインストールします。(2019/11/23作成)

Container

Docker(ドッカー)とは

Dockerは、コンテナと呼ばれるOSレベルの仮想化環境を提供するオープンソースソフトウェアである。VMware製品などの完全仮想化を行うハイパーバイザ型製品と比べて、ディスク使用量は少なく、仮想環境 作成や起動は速く、性能劣化がほとんどないという利点を持つ。 (出典:ウィキペディア)

0.環境

$ cat /etc/os-release
NAME="Ubuntu"
VERSION="19.04 (Disco Dingo)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 19.04"
VERSION_ID="19.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=disco
UBUNTU_CODENAME=disco

1.Docker環境設定

1)古いDockerを消す

$ sudo apt remove docker docker-engine docker.io containerd runc

2)必要なパッケージをインストール

$ sudo apt-get update
$ sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common

3)Dockerの公式GPG鍵を追加

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

4)fingerprintの確認

$ sudo apt-key fingerprint 0EBFCD88
pub   rsa4096 2017-02-22 [SCEA]
      9DC8 5822 9FC7 DD38 854A  E2D8 8D81 803C 0EBF CD88
uid           [  不明  ] Docker Release (CE deb) <docker@docker.com>
sub   rsa4096 2017-02-22 [S]

5)Dockerリポジトリの追加

$ sudo vi /etc/apt/sources.list
deb [arch=amd64] https://download.docker.com/linux/ubuntu cosmic stable

2.Dockerインストール

$ sudo apt-get update
$ sudo apt-get install docker-ce docker-ce-cli containerd.io
$ sudo docker version

一般ユーザでdockerを使う場合はユーザをdockerグループに入れる必要があります。
グループ追加を反映させるために一度ログアウトします。

$ sudo usermod -aG docker ${USER}
$ exit

3.Docker動作確認

1)Docker Hubからイメージの取得

■Ubuntuの場合

$ docker pull ubuntu
Using default tag: latest
latest: Pulling from library/ubuntu
5667fdb72017: Pull complete
d83811f270d5: Pull complete
ee671aafb583: Pull complete
7fc152dfb3a6: Pull complete
Digest: sha256:b88f8848e9a1a4e4558ba7cfc4acc5879e1d0e7ac06401409062ad2627e6fb58
Status: Downloaded newer image for ubuntu:latest
docker.io/library/ubuntu:latest

$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
ubuntu              latest              2ca708c1c9cc        13 days ago         64.2MB

2)コンテナの作成

$ docker run -it ubuntu
root@379c09bd0b65:/#

上記のコマンドを実行すると作成と同時にコンテナも起動し、そのタイミングで自動的にログインします。
また、ログイン状態を抜けるには”control”を押した状態で”P、Q”を順番に押します。この抜けることを「dettach(デタッチ)」と呼びます。
サーバからログアウトする感覚でexitコマンドを実行すると、起動したコンテナも停止してしまうので注意してください。

3)docker psコマンドで稼働状況を確認

$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED              STATUS              PORTS               NAMES
379c09bd0b65        ubuntu              "/bin/bash"         About a minute ago   Up About a minute                       dazzling_swanson

4)コンテナに再度ログイン(attach)する

$ docker attach 379c09bd0b65
root@379c09bd0b65:/#

これはdocker psコマンドが「現在稼働中のコンテナのみを表示する」からです。
“-a”オプションを付けることで、停止中のも含めて全てのコンテナを表示します。

$ docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                     PORTS               NAMES
379c09bd0b65        ubuntu              "/bin/bash"         4 minutes ago       Exited (0) 7 seconds ago                       dazzling_swanson

5)コンテナの起動

$ docker start 379c09bd0b65
379c09bd0b65

4.Docker image を build する

1)Dockerfile を用意する

「Dockerfile」ファイルは、プログラムのビルドでよく利用される makeツールの「Makefile」ファイルと同様に、Dockerコンテナーの構成内容をまとめて記述するシンプルなテキスト形式のファイルです。

■Ubuntuの場合

$ vi Dockerfile
FROM ubuntu
RUN apt-get update && apt-get -y upgrade && apt-get install -y build-essential libssl-dev libreadline-dev zlib1g-dev language-pack-ja
RUN apt-get -y install openssh-server ufw curl
RUN mkdir /var/run/sshd

$ docker build -t user/ubuntu .
…
Successfully built 57b685798f6d
Successfully tagged user/ubuntu:latest

■CentOSの場合

$ vi Dockerfile
ROM centos
RUN yum -y install openssh-server
RUN sed -ri 's/^#PermitRootLogin yes/PermitRootLogin yes/' /etc/ssh/sshd_config
RUN ssh-keygen -t rsa -N "" -f /etc/ssh/ssh_host_rsa_key
RUN passwd -d root
EXPOSE 22
CMD ["/usr/sbin/sshd", "-D"]

$ docker build -t user/centos .

$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
user/ubuntu         latest              57b685798f6d        2 minutes ago       445MB
ubuntu              latest              2ca708c1c9cc        13 days ago         64.2MB

作成したイメージからコンテナを起動するには run サブコマンドを使います。
また、 ps サブコマンドでコンテナの状態を確認します。

コンテナに外部からアクセス(ポートフォワード)
$ docker run -it -p 10022:22 --name user-ubuntu user/ubuntu

5.付録

不要になったコンテナは rm サブコマンドで削除できます。
$ docker rm -f {コンテナ名}

不要になったイメージは rmi サブコマンドで削除できます。
$ docker rmi -f {イメージ名}

以上

About yoshimasa

埼玉県さいたま市在住、2男3女のパパです。Linux系の技術情報を中心にまとめています。1978年2月生まれ。