Ubuntu 19.04 に コンテナ型仮想化環境 Docker CE(Community Edition) をインストールします。(2019/11/23作成)
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 {イメージ名}
以上