5. 5
Introducing InfraKit, an open source toolkit for creating and managing declarative, self-healing infrastructure - Docker Blog
https://blog.docker.com/2016/10/introducing-infrakit-an-open-source-toolkit-for-declarative-infrastructure/
10. Docker コンテナの操作
10
OS ( Linux )
物理/仮想サーバ
Docker エンジン
( dockerd デーモン )
Linux kernel
コンテナ コンテナ コンテナ
リモート
API
docker
クライアント TCP あるいは
Unix ソケットドメイン
containerd
Runtime: runC (OCI規格準拠)
・docker コマンド
Linux, Mac OS X, Windows
・Kitematic (GUI)
Mac OS X, Windows
・Docker Compose
・Docker Swarm
25. 2.2. 仮想サーバへ接続
1. IP アドレスを確認します。インターフェースを右クリックし【 IP アドレスをコピー 】します。
2. Tera Term やターミナルなどを開き、対象サーバに SSH でログインします。
• ログイン時のIDは「root」、パスワードは作成時に入力したもの
• ターミナルでは「ssh -l root <IPアドレス>」か「ssh root@<IPアドレス>」
25
$ ssh -l root 59.106.209.220
The authenticity of host '59.106.209.220 (59.106.209.220)' can't be established.
ECDSA key fingerprint is SHA256:MHsAGGJvASP/yj3JuhwuEH1BfbuJ8FebYyu7eWrjerI.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '59.106.209.220' (ECDSA) to the list of known hosts.
[email protected]'s password:
[root@docker ~]#
実行例
ssh コマンドで仮想サーバに接続
接続を許可するので yes
パスワードを入力(画面に表示されません)
33. 4.1. hello-world コンテナの実行とイメージ確認
1. 【 docker run 】コマンドでコンテナを実行します。
33
# docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
c04b14da8d14: Pull complete
Digest: sha256:0256e8a36e2070f7bf2d0b0763dbabdd67798512411de4cdcf9431a1feb60fd9
Status: Downloaded newer image for hello-world:latest
Hello from Docker!
This message shows that your installation appears to be working correctly.
To generate this message, Docker took the following steps:
1. The Docker client contacted the Docker daemon.
2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
3. The Docker daemon created a new container from that image which runs the
executable that produces the output you are currently reading.
4. The Docker daemon streamed that output to the Docker client, which sent it
to your terminal.
To try something more ambitious, you can run an Ubuntu container with:
$ docker run -it ubuntu bash
Share images, automate workflows, and more with a free Docker Hub account:
https://hub.docker.com
For more examples and ideas, visit:
https://docs.docker.com/engine/userguide/.
hello-world:latest イメージ を実行
ローカルにイメージがないため、Docker Hubからダウンロード
ダウンロード(pull)完了
hello-world の出力
ド ッ カ ー ラ ン
ド ッ カ ー ラ ン ハ ロ ー ワ ー ル ド
ハ ロ ー ワ ー ル ド
プ ル
34. 2. 【 docker ps 】コマンドで、コンテナの状態を確認します。
• CONTAINER ID … コンテナごとのユニークな ID
• IMAGE … コンテナの元になったイメージ名
• CREATED … コンテナの作成時間
• STATUS … 現在の状態(ステータス)。「Exited (0)」は正常終了
• PORTS … ポートをホスト側に割り当て(マッピング時)は情報を表示
• NAMES … コンテナ名。実行時に指定しなければ、「形容詞_人名」を自動組み合わせ
3. 【 docker images 】で、ローカル上のイメージを一覧表示します。
• REPOSITORY … リポジトリ名
• TAG … タグ名
• IMAGE ID … イメージ ID
• CREATED … 作成時
• SIZE … イメージの使用容量
34
# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
6d47af69a31b hello-world "/hello" 9 minutes ago Exited (0) 9 minutes ago awesome_varahamihira
オプション「-a」は全て(all)のコンテナを表示
# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest c54a2cc56cbb 3 months ago 1.848 kB
ピーエス
イ メ ー ジ ズ
35. 4.2. Ubuntu コンテナの実行
hello-world イメージを使ったコンテナ実行は、画面にメッセージを表示するシンプルなもの
でした。次は、サーバのように操作可能な Linux ディストリビューションのコンテナを実行します。
1. 【 docker pull 】コマンドで ubuntu 公式イメージを取得します。
2. ダウンロードしたイメージを【 docker images 】で確認します。
35
# docker pull ubuntu
Using default tag: latest
latest: Pulling from library/ubuntu
6bbedd9b76a4: Pull complete
fc19d60a83f1: Pull complete
de413bb911fd: Pull complete
2879a7ad3144: Pull complete
668604fde02e: Pull complete
Digest: sha256:2d44ae143feeb36f4c898d32ed2ab2dffeb3a573d2d8928646dfc9cb7deb1315
Status: Downloaded newer image for ubuntu:lates
# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu latest f753707788c5 2 weeks ago 127.1 MB
hello-world latest c54a2cc56cbb 3 months ago 1.848 kB
プ ル
44. 4. 【 docker images 】コマンドで、イメージが作成されたのを確認します。
5. 作成した「mynginx:1.1」イメージを使って、新しいコンテナを実行します。
6. 【 curl 】コマンドで、コマンドライン上でポート 8888 を開きます。
44
# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mynginx 1.1 91ba2d666ae1 About a minute ago 181.4 MB
mynginx 1.0 16504967dac4 12 minutes ago 181.4 MB
# docker run -d -p 8888:80 mynginx:1.1
1dcc320a2ecdc5448f87686f735e9f759ab0bf0107f32e035850e30a1757e83f
# curl http://localhost:8888
hello world<br />Mon Oct 31 07:16:48 UTC 2016 $(date) の変数展開、すなわちビルド時の時刻を表示
45. 5.3 コンテナの停止と削除
1. 【 docker ps 】でコンテナの状態を確認します。
2. コンテナを停止するため【 docker kill 】コマンドを実行します。
45
# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS
NAMES
1dcc320a2ecd 91ba2d666ae1 "nginx -g 'daemon off" 3 minutes ago Up 3 minutes 443/tcp, 0.0.0.0:8888->80/tcp
condescending_morse
eb78012f01d0 mynginx:1.0 "nginx -g 'daemon off" 14 minutes ago Up 14 minutes 443/tcp, 0.0.0.0:8080->80/tcp
angry_jepsen
5f343d53473b nginx:latest "nginx -g 'daemon off" 48 minutes ago Up 48 minutes 0.0.0.0:80->80/tcp, 443/tcp
adoring_hoover
# docker kill $(docker ps -q)
1dcc320a2ecd
eb78012f01d0
5f343d53473b
キ ル
実行中のコンテナ ID を変数展開
46. 3. 【 docker ps 】では実行中のプロセスはありませんが、【 docker ps -a 】でコンテナが停止中
なのを確認します。
4. 【 docker rm 】コマンドでコンテナ(コンテナ用のイメージ・レイヤとメタ情報)を削除します。
46
# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS
NAMES
1dcc320a2ecd 91ba2d666ae1 "nginx -g 'daemon off" 6 minutes ago Exited (137) About a minute ago
condescending_morse
eb78012f01d0 mynginx:1.0 "nginx -g 'daemon off" 17 minutes ago Exited (137) About a minute ago
angry_jepsen
5f343d53473b nginx:latest "nginx -g 'daemon off" 51 minutes ago Exited (137) About a minute ago
adoring_hoover
27e3c865bd61 ubuntu:latest "/bin/bash" 47 hours ago Exited (0) 47 hours ago
distracted_stonebraker
6d47af69a31b hello-world "/hello" 4 days ago Exited (0) 4 days ago
awesome_varahamihira
# docker rm $(docker ps -aq)
1dcc320a2ecd
eb78012f01d0
5f343d53473b
27e3c865bd61
6d47af69a31b
アールエム
実行中のコンテナがないのを確認
全て終了(exited)状態
全てのコンテナ ID を変数展開
49. 6.1 Docker Hub に ID を作成
1. https://hub.docker.com/ にアクセスし、アカウントを作成し、ログインします。
ユーザ名は任意の名前を登録できますが、一般公開されますのでご注意ください。
49
• ID
• メールアドレス
• パスワード
これらを入力後【 Sign Up 】
サ イ ン ア ッ プ
50. 6.2. サーバから Docker Hub にログイン
1. 【 docker login 】コマンドを実行します。
※ 認証に失敗する場合は、パスワードの入力が正しいかどうかご確認ください。
※ 認証情報は「~/.docker/config.json」ファイルに記録されています。作業後は【docker logout】
コマンドの実行で、認証に関する情報を削除します。
50
# docker login
Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to
https://hub.docker.com to create one.
Username: <自分のDockerHubID>
Password:
Login Succeeded
パスワードを入力(画面に表示されません)
# docker logout
Remove login credentials for https://index.docker.io/v1/
ロ グ イ ン
ロ グ ア ウ ト