これからdocker勉強してこうと思うので、とりあえずインストールしてみる。
インストール
- installスクリプトで依存パッケージ含めてインストールする。
# curl https://get.docker.com > /tmp/install.sh
# cat /tmp/install.sh
# chmod +x /tmp/install.sh
# /tmp/install.sh
- sudoなしでdocker使用する為の設定
# usermod -aG docker vagrant
- 起動
$ sudo systemctl start docker
- 確認
$ docker version
Client:
Version: 18.04.0-ce
API version: 1.37
Go version: go1.9.4
Git commit: 3d479c0
Built: Tue Apr 10 18:21:36 2018
OS/Arch: linux/amd64
Experimental: false
Orchestrator: swarm
Server:
Engine:
Version: 18.04.0-ce
API version: 1.37 (minimum version 1.12)
Go version: go1.9.4
Git commit: 3d479c0
Built: Tue Apr 10 18:25:25 2018
OS/Arch: linux/amd64
Experimental: false
簡単な動作確認
HeloWorld
- debianイメージを起動してechoコマンドを実行(初回)
$ docker run debian echo "Hello World"
Unable to find image 'debian:latest' locally
latest: Pulling from library/debian
c73ab1c6897b: Pull complete
Digest: sha256:c908a4fcb2b2a1953bd40ebc12d9a4116868d72540efc27502ee6c2395b8a1e9
Status: Downloaded newer image for debian:latest
Hello World
初回はdebianイメージがないのでダウンロードしてくる。
- debianイメージを起動してechoコマンドを実行(2回目以降)
$ docker run debian echo "Hello World"
Hello World
2回目以降はdebianイメージがあるので、echoコマンドがすぐ実行される
コンテナにログイン
- debianイメージ起動して/bin/bashコマンドを実行
$ docker run -it debian /bin/bash
root@5900060cd16d:/# echo "Hello World"
Hello World
root@5900060cd16d:/# exit
exit
-it
をつけることでtty付きインタラクティブモードでプロセス起動する
- host名をつけてコンテナ起動
$ docker run -h CONTAINER -it debian /bin/bash
root@CONTAINER:/# uname -n
CONTAINER
コンテナ状態確認
- 実行中のコンテナ確認
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
dcbacd85d7cf debian "/bin/bash" About a minute ago Up About a minute upbeat_mahavira
NAMES
はdockerが適当にランダムな名前(有名な科学者、エンジニアなどの名前)をつける。
自分で指定したい場合は、 --name
で指定可能
- 停止したコンテナ含めて全て表示
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9cea63df7407 debian "/bin/bash" 8 minutes ago Exited (0) 21 seconds ago zealous_villani
7b09b5ee8c78 debian "/bin/bash" 10 minutes ago Exited (0) 8 minutes ago hogehoge
78ead5c47879 debian "/bin/bash --name ho…" 10 minutes ago Exited (2) 10 minutes ago mystifying_bhabha
dcbacd85d7cf debian "/bin/bash" 20 minutes ago Exited (0) 10 minutes ago upbeat_mahavira
3249b6c001f8 debian "/bin/bash" 25 minutes ago Exited (0) 25 minutes ago trusting_clarke
daadc628ae29 debian "/bin/bash" 25 minutes ago Exited (0) 19 minutes ago eloquent_ardinghelli
a14cb87cc897 debian "/bin/bash" 26 minutes ago Exited (0) 19 minutes ago cranky_montalcini
1e9623281757 debian "/bin/bash" 26 minutes ago Exited (0) 26 minutes ago awesome_mendeleev
8fd27600a847 debian "/bin/bash" 26 minutes ago Exited (0) 26 minutes ago nifty_cori
5900060cd16d debian "/bin/bash" 40 minutes ago Exited (0) 30 minutes ago brave_bose
3f1bf4fa08b9 debian "/bin/bash" About an hour ago Exited (0) About an hour ago relaxed_jones
6a9467d90b44 hello-world "echo 'Hello World'" About an hour ago Created quizzical_ride
61d7b3255714 debian "echo 'Hello World'" About an hour ago Exited (0) About an hour ago xenodochial_hugle
a4b0ca9be900 debian "echo 'Hello World'" About an hour ago Exited (0) About an hour ago quirky_ritchie
fead03fd892a hello-world "/hello" About an hour ago Exited (0) About an hour ago upbeat_hodgkin
de81e1d114a3 hello-world "/hello" About an hour ago Exited (0) About an hour ago happy_hopper
- コンテナ詳細(フィルタなし)
$ docker inspect upbeat_mahavira
[
{
"Id": "dcbacd85d7cf3aeb96e46b1b0f72ec51a4fc856c37146e6c336d95ee07520c23",
"Created": "2018-04-18T15:32:27.891120305Z",
"Path": "/bin/bash",
"Args": [],
"State": {
"Status": "running",
"Running": true,
ry
- コンテナ詳細(フィルタあり)
$ docker inspect --format {{.NetworkSettings.IPAddress}} upbeat_mahavira
172.17.0.2
- 変更履歴
$ docker diff zealous_villani
A /basket
A /basket/bash
A /basket/cat
ry
A /basket/znew
D /bin
A
は追加、D
は削除されたファイル
- そのコンテナでやったこと確認
$ docker logs zealous_villani
root@CONTAINER:/#
root@CONTAINER:/# ls
bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
root@CONTAINER:/#
root@CONTAINER:/# mv /bin /basket
コンテナ削除
- 名前指定して削除
$ docker rm zealous_villani
zealous_villani
- 全部削除(statusがexitedのもの)
$ docker rm -v $(docker ps -aq -f status=exited)
コンテナ保存して実行
- cowsay(コンテナの名前)、イメージ名(cowsayimage)、リポジトリ名(test)を指定
$ docker commit cowsay test/cowsayimage
$ docker run -it test/cowsayimage bash