#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 [ ~ ]#

バックグラウンド実行されているモノのログを見ることができます。


*** ターミナルで接続 [#g689a894]
起動中のコンテナにattachするのでなく、execすることで、ターミナルで bash などでつなぐことができます。
 root@photon-machine [ ~ ]# docker exec  -it  94f /bin/bash
 bot@d946410686f6:~$
 bot@94f07d1b9137:~$
中に入れました。exit でコンテナを終了させることなく抜けることができます。




** コンテナからイメージを作成する基本 [#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に失敗するんですが、準備は以上です。失敗の理由など詳細は後述します。

*** 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;}

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS