ちょいちょいDocker使うことがあるんですが、Linuxの方はいつも忘れてしまうのでメモしときます。
- Ubuntu上にDocker環境が構築できる(Docker CE)
- Docker上でいろいろなコンテナが実行できるようになる
- ubuntu-ja-18.04.2 (インターネット利用可能状態)
- curlコマンド
UbuntuにDockerをインストール
Dockerのセットアップ準備
aptのパッケージリストを最新化する
$ sudo apt update
リポジトリを使えるようにセットアップ
$ sudo apt install -y apt-transport-https ca-certificates curl software-properties-common
GPGキーの追加
次のコマンドを実行して、「OK」が表示されることを確認します。
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
GPGキーの確認
$ 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]
リポジトリの登録
$ sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
Dockerのインストール
$ sudo apt install -y docker-ce
これでDockerのインストールは完了です。後は、動作確認をしておきましょう。
Dockerの動作確認
Dockerのバージョン確認
$ docker version
こんな感じで表示されると思います。
Client: Docker Engine - Community
Version: 19.03.5
API version: 1.40
Go version: go1.12.12
Git commit: 633a0ea838
Built: Wed Nov 13 07:29:52 2019
OS/Arch: linux/amd64
Experimental: false
Server: Docker Engine - Community
Engine:
Version: 19.03.5
(以下省略)
一般ユーザで実行している場合は、最後に次のようなメッセージが表示されます。dockerの操作を一般ユーザには使わせない場合は、このままでOKです。
Got permission denied while trying to connect to the Docker daemon socket
at unix:///var/run/docker.sock:
Get http://%2Fvar%2Frun%2Fdocker.sock/v1.40/images/json:
dial unix /var/run/docker.sock: connect: permission denied
デフォルトだとdockerはrootユーザしか実行できません。一般ユーザでも実行したい場合は、dockerグループに所属する必要があります。
dockerを動かしたいユーザでログインして次のコマンドを実行します。
※実行後は一度ログインし直してください。
$ sudo usermod -aG docker `whoami`
Docker上のShellで”Hello World”を表示してみる
さて、定番のHello Worldしてみましょうか。
これはdocker上でubuntuの最新版のコンテナを起動し、echo Hello Worldして、というコマンドです。
$ docker run ubuntu:latest /bin/echo 'Hello world'
指定したコンテナが無い場合は、自動でDockerリポジトリからダウンロードしてきて実行してくれます。コンソールを確認するとpullしてますね。
ちなみにコンテナはローカルにキャッシュされますので、同じコマンドを実行すると次はキャッシュされたコンテナ上でecho Hello Worldが実行されるだけです。
Unable to find image 'ubuntu:latest' locally
latest: Pulling from library/ubuntu
7ddbc47eeb70: Pull complete
c1bbdc448b72: Pull complete
8c3b70e39044: Pull complete
45d437916d57: Pull complete
Digest: sha256:6e9f67fa63b0323e9a1e587fd71c561ba48a034504fb804fd26fd8800039835d
Status: Downloaded newer image for ubuntu:latest
Hello world
キャッシュされたコンテナを確認する
docker関係を操作するには、dockerコマンドを使います。今回はdockerのイメージを表示します。
$ docker image ls
ubuntuの最新版(latest)が表示されましたね。これでUbuntu上のDockerのubuntuが乗っかった感じです。こんな感じでいろんなものをコンテナのように搭載できるのがdockerです。まさにロゴの通りですね。Dockerの解説は詳しいサイトがゴロゴロしているので割愛します。
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu latest 775349758637 6 weeks ago 64.2MB
ホストの環境を汚さずにいろんなソフトウェアを導入できるDockerのある生活が始まりますね~ わくわくしません!?
キャッシュされたイメージを削除する
$ docker image rm -f ubuntu
Untagged: ubuntu:latest
Untagged: ubuntu@sha256:bec5a2727be7fff3d308193cfde3491f8fba1a2ba392b7546b43a051853a341d
Deleted: sha256:4e5021d210f65ebe915670c7089120120bc0a303b90208592851708c1b8c04bd

Dockerとはなんぞや? という方にオススメの一冊です。
Webエンジニアだけど自分の作ったアプリを自分の手元のコンテナで動かしてみたい、テスト用のアプリ環境を複数作りたい、などなどDockerを使うとインフラエンジニアにお願いしていたことが自分でもできるようになります。そんなあなたにオススメな一冊がこちらです。
最後にインフラエンジニアやっててDockerを極めたい、という方はオライリー本でとことん深くまで突き進んでください。
コメント