AGFA

関心が赴くままに

Dockerについてまとめ

f:id:kanekok13:20170924122935p:plain

Docker

軽量な仮想化環境 Build once, run anywhere

公式サイト

https://www.docker.com/

今回はUbuntu(Vagrant)上にDockerを作成していく

Vagrantに仮想化環境を用意(Ubuntu

$ vagrant box add trusty64 https://cloud-images.ubuntu.com/vagrant/trusty/current/trusty-server-cloudimg-amd64-vagrant-disk1.box

Vagrantの仮想化準備

$ vagrant init trusty64

Vagrantfileのプライベートネットワークのコメントを外す。

$ vagrant up
$ vagrant ssh

システムを最新の状態へ

$ sudo apt-get update

Dockerのインストール

$ sudo apt-get install docker.io

Dockerを実行できるように設定

$ sudo ln -sf /usr/bin/docker.io /usr/local/bin/docker

Dockerのバージョンを調べる

$ sudo docker --version

Dockerを仮想化環境で作っていく

Dockerのイメージを検索する(centOSの場合)

$ sudo docker search centos | more

Dockerのイメージを引っ張ってくる(centOSの場合)

$ sudo docker pull centos

Dockerのイメージの一覧を見る(引っ張ってこれたか確認)

$ sudo docker images

Dockerのイメージの詳細を見る

$ sudo docker inspect [ID(一意に決まる部分のみで良い) or centos:[TAG名]]

どういう設定になっているか見ることができる。

Dockerイメージの削除

$ sudo docker rmi [ID]

rmi = remove image

コンテナーを作る

$ sudo docker run centos echo "hello world"

前半のsudo docker run centosでコンテナーを作り、
後半はそのコンテナー上でecho "hello world"が実行される。

作られたコンテナーの"実行中"の一覧を見る

$ sudo docker ps

作られたコンテナーの一覧を見る

$ sudo docker ps -a

最新の5個だけ見たいという場合 -n=5をつける。

コンテナー削除

$ sudo docker rm [コンテナーID(一意に決まれば良い)]

コンテナーのメモリの状況を3秒ごと表示させるコマンドをバックグラウンドで走らせる

$ sudo docker run -d [イメージ名] free -s 3

-dバックグラウンド
-s [数字][数字]秒ごとに

実行中のコンテナーのログを見る

$ sudo docker logs [コンテナーID]

タスクをフォアグラウンドに持ってくる

$ sudo docker attach --sig-proxy=false [コンテナーID]

CTRL + Cで抜ける。

タスクをストップさせる

$ sudo docker kill [コンテナーID]

タスクを再開する

$ sudo docker start [コンテナーID]

イメージを作成していく

コンテナーを立ち上げる。インタラクティブモード、ターミナルを立ち上げる。bashシェルを立ち上げる

$ sudo docker run -i -t centos /bin/bash

色々設定。

イメージを作成

sudo docker commit [コンテナーID] [ユーザ名]/[わかりやすい名前]

イメージができたか確認

sudo docker images

Docker Build

イメージからコンテナーを立ち上げて、変更を加えてイメージにするという流れを自動化する。

Dockerfileを作成する

$ vi Dockerfile

下記を記入する。

FROM centos
MAINTAINER [名前] <[メールアドレス]>(決まりではない)
# RUN: buildするときに実行される
RUN echo "now building..."
# CMD: runするときに実行される
CMD ["echo", "now running..."]

buildする。

$ sudo docker build -t [ユーザ名]/[わかりやすい名前]

イメージができたか確認

$ sudo docker images

実際に走らせる

$ sudo docker run [イメージ名]

Webサーバをインストールして、runの時に立ち上げてブラウザで中身を確認する

Dockerfileを書き換える

$ vi Dockerfile

buildの時にWebサーバをインストール

FROM centos
MAINTAINER [名前] <[メールアドレス]>(決まりではない)

RUN yum install -y httpd
ADD ./index.html /var/www/html/
EXPOSE 80
CMD ["/usr/sbin/httpd", "-D", "FOREGROUND"]

index.htmlを作成

$ vi index.html

buildする

$ sudo docker build -t [ユーザ名]/[わかりやすい名前] .

最後の.は忘れないようにすること!

runさせる。(コンテナー側のポート8080を80にリダイレクトさせたい、バックグラウンド)

$ sudo docker run -p 8080:80 -d [イメージ名]

192.168.55.44:8080にアクセスする。