- 追加された行はこの色です。
- 削除された行はこの色です。
#topicpath
----
#contents
** イメージの操作の超基本 [#ab7dcf62]
*** イメージを探す [#f5ddb348]
root@photon-machine [ ~ ]# docker search centos | more
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
centos The official build of CentOS. 3050 [OK]
*** イメージをおとしてくる [#j4f77233]
root@photon-machine [ ~ ]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
root@photon-machine [ ~ ]#
いまはイメージがなにもない状態です。
root@photon-machine [ ~ ]# docker pull centos
Using default tag: latest
latest: Pulling from library/centos
Digest: sha256:c577af3197aacedf79c5a204cd7f493c8e07ffbce7f88f7600bf19c688c38799
Status: Downloaded newer image for centos:latest
root@photon-machine [ ~ ]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos latest 67591570dd29 6 weeks ago 191.8 MB
root@photon-machine [ ~ ]#
落ちてきているのが確認出来ました。
***イメージを消す [#v42e7728]
root@photon-machine [ ~ ]# docker rmi centos:latest
Untagged: centos:latest
Untagged: centos@sha256:c577af3197aacedf79c5a204cd7f493c8e07ffbce7f88f7600bf19c688c38799
root@photon-machine [ ~ ]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
root@photon-machine [ ~ ]#
消えました。
** コンテナの操作の超基本 [#s8f390f3]
*** CentOSを起動して、Hello Worldする [#ya6fe647]
root@photon-machine [ ~ ]# docker pull centos
root@photon-machine [ ~ ]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos latest 67591570dd29 6 weeks ago 191.8 MB
root@photon-machine [ ~ ]# docker run centos echo "hello world"
hello world
root@photon-machine [ ~ ]#
イメージからコンテナが作成され、実行されました。そして終了しました。
*** コンテナの情報表示 [#d2838027]
root@photon-machine [ ~ ]# docker ps -a -n=1 ←-a: 終了したモノも表示、 -n=xx 直近 xxコを表示
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
60d7c5d76f05 centos "echo 'hello world'" About a minute ago Exited (0) About a minute ago berserk_wright
root@photon-machine [ ~ ]#
コンテナが作成されたのが分かります。 docker rm 60d7c5d76f05 で削除可能です。
*** バックグラウンド実行 [#o0e4b7fd]
root@photon-machine [ ~ ]# docker run -d centos free -s 3
94f07d1b91371236b66fdd4ac53143592cf4bc0f64a0dc6c666cfa4cbe57ba1a
root@photon-machine [ ~ ]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
94f07d1b9137 centos "free -s 3" 10 seconds ago Up 9 seconds jolly_fermi
root@photon-machine [ ~ ]#
-d でバックグラウンド実行されます。
*** バックグラウンド実行したモノをフォアグラウンドにもってくる。 [#bce418b2]
フォアグラウンドにもってくる((というかバックグラウンド実行したモノに、につなげる))には。。
root@photon-machine [ ~ ]# docker attach --sig-proxy=false 94f
total used free shared buff/cache available
Mem: 2053100 75364 342388 275160 1635348 1518696
Swap: 0 0 0
sig-proxy オプションを指定することで Ctrl-C で抜けることができるようになります。
*** バックグラウンド実行したモノを止める [#u67d3ce3]
root@photon-machine [ ~ ]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
94f07d1b9137 centos "free -s 3" 4 minutes ago Up 4 minutes jolly_fermi
root@photon-machine [ ~ ]# docker stop 94f
94f
root@photon-machine [ ~ ]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
root@photon-machine [ ~ ]#
停止しました。さらに docker start 94f で再度スタートさせることができます。
ついでにいうと docker run は、 docker create(イメージからコンテナ作成) と docker start(開始)をあわせて実施するコマンドのようです。
まとめるとこんな感じみたい。
docker create xx → 作成
docker start [コンテナID] → 開始 (create/start 一緒にやる場合は run )
docker stop [コンテナID] → 停止
docker ps で確認
docker run -d xx でバックグラウンド実行、指定しないとフォアグラウンド
docker attach --sig-proxy=false [コンテナID]で接続 Ctr-C で切断
*** バックグラウンドのログを見る [#ifaad43b]
root@photon-machine [ ~ ]# docker logs 94f
total used free shared buff/cache available
Mem: 2053100 69716 348616 275160 1634768 1524396
Swap: 0 0 0
total used free shared buff/cache available
Mem: 2053100 69740 348372 275160 1634988 1524420
Swap: 0 0 0
...
root@photon-machine [ ~ ]#
バックグラウンド実行されているモノのログを見ることができます。
** コンテナからイメージを作成する基本 [#n5a97480]
コンテナから新たなイメージを保存してみます。そのために、コンテナの中に入って自由にコマンドが打てないといけないので、
root@photon-machine [ ~ ]# docker run -i -t centos /bin/bash
[root@003321389bfe /]#
って -d でも無指定でもない指定で /bin/bashを実行します。 -i はインタラクティブ、-t はターミナルでつなぐって意味ぽいです。
コンソールが返ってきました。中に入ったところですね。
***コンテナを修正する [#je9236a2]
中に入ったので、なんかファイルを作成します。コンテナの中身を変更する作業をやって、んでそのコンテナからイメージを作成します。
[root@003321389bfe /]# touch hogehoge.txt
[root@003321389bfe /]# ls -lrt
total 64
...
-rw-r--r-- 1 root root 0 Jan 29 12:18 hogehoge.txt
[root@003321389bfe /]# exit
exit
root@photon-machine [ ~ ]# docker ps -a -n=1
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
003321389bfe centos "/bin/bash" 2 minutes ago Exited (0) 13 seconds ago hungry_brown
root@photon-machine [ ~ ]#
イメージからコンテナを作ったオリジナル状態から、ファイルを一個作ったコンテナができあがりました。
***修正したコンテナからイメージを作成する。 [#ye40e440]
下記のコマンドでこのコンテナから新たなイメージを作成します。
root@photon-machine [ ~ ]# docker commit 003 masatomix/hoge ←元のコンテナIDと新たなイメージの名前を指定。
sha256:c2109b07b71b759dd4184a6f3d147581fa68e834d99401c1a30aa680162726ce
root@photon-machine [ ~ ]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
masatomix/hoge latest c2109b07b71b 4 seconds ago 191.8 MB
作成されました!
中身の確認です。hoge.txtが存在するはずです。
root@photon-machine [ ~ ]# docker run -i -t masatomix/hoge /bin/bash
[root@1f35948112f6 /]# ls -lrt hogehoge.txt
-rw-r--r-- 1 root root 0 Jan 29 12:18 hogehoge.txt
[root@1f35948112f6 /]#
これで「元のイメージからコンテナを作成して、修正してから、イメージを保存する」事ができました。
ようするに誰かのイメージをおとしてきて、それに修正を加えて、新たなイメージとして保存する、という事できるってことですね。
*** コンテナを止めないで抜ける [#gf17031b]
ちなみに
root@photon-machine [ ~ ]# docker run -i -t centos /bin/bash
これで作成したコンテナに対して exit ってやるとコンテナを終了した結果抜けますが、Ctrl + p + q で、コンテナを停止せずに抜けます。
**コンテナを公開する [#he208f27]
*** 公開するコンテナを作成 [#vf26c331]
先とほぼ同じ作業。ファイルを一個作って、コミットしておく
準備作業として先とほぼ同じ作業をおこない、ファイルを一個作ってコミットしておきましょう。
# docker run -it centos /bin/bash
# touch hogehoge.txt
# exit
# docker ps -a -n=1
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
bb1d7d66fae9 centos "/bin/bash" 43 seconds ago Exited (0) 22 seconds ago sharp_ramanujan
# docker commit bb1d7 my_centos
sha256:ee8012f3b23d7058afd396c0c518029d416b7c51c7ba2f133ca91fd832fc8a66
# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
my_centos latest ee8012f3b23d 7 seconds ago 191.8 MB
centosのイメージに対して、ファイルを一個作っただけの my_centos というイメージができました。実はこのファイルはpushに失敗するんですが、後述します。
準備は以上。centosのイメージに対して、ファイルを一個作っただけの my_centos というイメージができました。実はこのファイルはpushに失敗するんですが、準備は以上です。失敗の理由など詳細は後述します。
*** Docker Hubへログイン [#b6256743]
[[Docker Hub>https://hub.docker.com/]] というオープンなリポジトリにイメージを公開します。じつは初めに取得している「centos」などもココから取得しています。
下記でログイン作業を行っていますが、アカウントはあらかじめ作成しておいてください。
# 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: masatomix
Password:
Login Succeeded
# docker push my_centos
The push refers to a repository [docker.io/library/my_centos]
d3bccdb5bdb2: Preparing
34e7b85d83e4: Preparing
unauthorized: authentication required
失敗したようです。どうもイメージ名とアカウントには関連があるっぽく、イメージ名を [アカウント名]/xxx としなくてはいけないっぽい。なので元のイメージにdockerのタグコマンドで別名を設定します。
# docker tag my_centos masatomix/my_centos
# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
masatomix/my_centos latest ee8012f3b23d 2 minutes ago 191.8 MB
my_centos latest ee8012f3b23d 2 minutes ago 191.8 MB
アカウント名をprefixとした名前のイメージができました。
# docker push masatomix/my_centos
The push refers to a repository [docker.io/masatomix/my_centos]
d3bccdb5bdb2: Pushed
34e7b85d83e4: Pushed
latest: digest: sha256:112e0a942c9c3c6642ddf481ce488ec30a613daf8392e800a5953bdbfe57877c size: 736
pushが成功したようです。 https://hub.docker.com/r/masatomix/my_centos/ にも表示されていることが分かります。
# docker search masatomix
ホントはコレで出てくるハズなんですが、でてこず。ただし
# docker pull masatomix/my_centos
でローカルにイメージをおとしてくることは可能です。searchにヒットするのは時間がかかるのかな??
2017/04/16追記:今やったら出てきました。
# docker search masatomix
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
masatomix/my_centos 0
masatomix/jenkins 0
...
#
検索にヒットするにはすこし時間がかかるってことでしょうね。
**関連リンク [#e3f42171]
-[[Docker ハンズオン - 基本コマンド編 - Qiita>http://qiita.com/hihihiroro/items/6dda871dc2566801a6da]]
-[[Dockerを体験してみるハンズオン Part1 - Qiita>http://qiita.com/NewGyu/items/24290b79ecb606785edc]] psしたらプロセスが見えるとか、細かいところまで説明
-[[Dockerを体験してみるハンズオン Part2 - Qiita>http://qiita.com/NewGyu/items/e200c9fac28d4e2e3cb4]]
-[[Dockerを体験してみるハンズオン Part3 - Qiita>http://qiita.com/NewGyu/items/83610d2139a37b356e53]]
-[[Dockerを体験してみるハンズオン Part4 - Qiita>http://qiita.com/NewGyu/items/b858f395f7f38933e37b]] Amazon ECSについて
----
この記事は
#vote(おもしろかった,そうでもない)
#comment
#topicpath
SIZE(10){現在のアクセス:&counter;}