トップ 差分 一覧 ソース 検索 ヘルプ RSS ログイン

Docker

[Docker]

Dockerことはじめ

  基本操作

仮想ネットワークの設定など

 docker search centos

でいろいろ出てくる

> docker run -i -t ubuntu /bin/bash

Dockerすごい

  Dockerfileを作る

Dockerを走らせるだけ

>docker search centos
NAME                                   DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
centos                                 The official build of CentOS.                   2979      [OK]
jdeathe/centos-ssh                     CentOS-6 6.8 x86_64 / CentOS-7 7.3.1611 x8...   54                   [OK]
nimmis/java-centos                     This is docker images of CentOS 7 with dif...   20                   [OK]
consol/centos-xfce-vnc                 Centos container with "headless" VNC sessi...   16                   [OK]
torusware/speedus-centos               Always updated official CentOS docker imag...   8                    [OK]
egyptianbman/docker-centos-nginx-php   A simple and highly configurable docker co...   6                    [OK]
nathonfowlie/centos-jre                Latest CentOS image with the JRE pre-insta...   5                    [OK]

c:/Dockerfiles 以下に Dockerfile を作ってみる 内容は以下

FROM nimmis/java-centos
RUN /bin/echo Hello
RUN /bin/cat /etc/redhat-release

そして同じディレクトリで

>docker build .
Sending build context to Docker daemon 2.048 kB
Step 1 : FROM nimmis/java-centos
latest: Pulling from nimmis/java-centos
45a2e645736c: Pull complete
36a9b5aab8ef: Pull complete
Digest: sha256:0ef4e0b6d5f12d58c65bcbb90748150e87a9d23b0a77cf0fc49a2a496cad30d6
Status: Downloaded newer image for nimmis/java-centos:latest
 ---> bfa08ae98956
Step 2 : RUN /bin/echo Hello
 ---> Running in fcb2bef1f2ac
Hello
 ---> 3f4aa4bdee75
Removing intermediate container fcb2bef1f2ac
Step 3 : RUN /bin/cat /etc/redhat-release
 ---> Running in 7d9be581330d
CentOS Linux release 7.3.1611 (Core)
 ---> dc67d2fd6bc8
Removing intermediate container 7d9be581330d
Successfully built dc67d2fd6bc8

Dockerfileを使って決まった動作をさせられた

Dockerfileをビルドしてイメージ作成

# ./にあるDockerfileをビルドして、イメージを作成する
> docker build  ./
> docker build -t REPOSITORY[:TAG] ./

イメージ一覧を得る&イメージからコンテナを起動する

> docker images
REPOSITORY                     TAG                 IMAGE ID            CREATED             SIZE
docker-hadoop-test             latest              0166bab0bbe3        2 days ago          292.3 MB

# docker run -i -t -d IMAGE /bin/bash
>docker run -i -t -d docker-hadoop-test /bin/bash

Dockerプロセスを取得して内部に入る

  • NAMESにあるように、Dockerプロセスには自動で名前がつくので、それにアタッチすれば入れる
> docker ps
CONTAINER ID        IMAGE                COMMAND             CREATED             STATUS              PORTS               NAMES
07eddcaf0f43        docker-hadoop-test   "/bin/bash"         2 days ago          Up 6 seconds                            silly_mclean

> docker attach silly_mclean
bash-4.2#

  Docker内部と通信

コンテナに外部からアクセス(ポートフォワード)

  • nginxというimageがすでに配布されているのでそれの最新版をとってくる
  • おなじみのポートフォワーディングをさせてlocalhost:8080から内部の80ポートにアクセス可能にする
  • あと停止
C:\Dockerfiles>docker run --name some-nginx -d -p 8080:80 nginx
docker: Error response from daemon: Conflict. The name "/some-nginx" is already in use by container 53f49d64b684bb4571fb8a51532d9d72976e3edf0114e45b8135272fb9950567. You have to remove (or rename) that container to be able to reuse that name..
See 'docker run --help'.

C:\Dockerfiles>docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                           NAMES
53f49d64b684        nginx               "nginx -g 'daemon off"   21 seconds ago      Up 20 seconds       443/tcp, 0.0.0.0:8080->80/tcp   some-nginx

C:\Dockerfiles>docker stop 53f49d64b684
53f49d64b684

C:\Dockerfiles>docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

  自分用のDockerを準備する

Dockerで開発環境のイメージを作る

このへんから引用、稼働中のdockerイメージはdocker commitで保存できるっぽい

5.CentOS7イメージから自分用のイメージの作成

 大雑把な流れ
   1.コンテナを作る
   2.コンテナに必要なミドルウェアをインストールする
   3.コンテナをイメージファイルとして新規作成
   4.保存イメージを起動して動作確認
   5.privileged稼働中のコンテナにログイン
 5-1.コンテナを作る
   [command]  docker  run  --privileged  -i  -t  -d  --name="{コンテナの名前}"  {リポジトリ名}:{タグ名}    /bin/bash
       ex)
           docker  imagesで帰ってくる結果が以下の場合
           REPOSITORY                    TAG                                  IMAGE  ID                        CREATED                          SIZE
           centos                            6                                      fc73b108c5ae                2  weeks  ago                  228.9  MB
           [command]  docker  run  --privileged  -i  -t  -d  --name="TestOS"  centos:6    /bin/bash
           ※--privilegedは特権起動のフラグになります。これを入れないと
             serviceコマンドが使えないので不便です。

6.変更したコンテナを保存し、既存イメージを上書きする

 [command]  docker  commit  -m  "コメント"  {現在稼働中のコンテナID}  {既存リポジトリ名:既存タグ}
 [command]  docker  commit  -m  "HTTPDサンプルOS"  255b0a863588  sample-centos:6

自分用のDocker imageを作る

よさげ、Jetty9+Java8

docker-windows.png
お名前: コメント: