[Docker]
Dockerことはじめ
基本操作
仮想ネットワークの設定など
- Docker for Windows betaを試す (Hyper-V enabled)
- Docker for Windowsの使い方など
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 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-compose
- 配布されている最新版の取得
- バイナリをそのまま持ってくる手法(パッケージ管理のものでいい場合はそうするべき)
// 最新バージョンを変数に設定 $ VERSION=$(curl --silent https://api.github.com/repos/docker/compose/releases/latest | jq .name -r) // DESTINATIONに docker-composeのインストール先を設定 $ DESTINATION=/usr/local/bin/docker-compose // インストール $ sudo curl -L https://github.com/docker/compose/releases/download/${VERSION}/docker-compose-$(uname -s)-$(uname -m) -o $DESTINATION $ sudo chmod 755 $DESTINATION
- 最新版にするには How to upgrade docker-compose to latest version
- インストール後に Error launching with docker-compose (`docker-credential-secretservice not installed or not available in PATH`) #11 が起こったら
$ sudo apt install golang-docker-credential-helpers
docker-windows.png