Edited at

"これだけ"でdockerを用いたLinux環境構築

More than 1 year has passed since last update.


docker インストール

    yum -y install docker-io

service docker start


ベースとなるイメージを取得する

何も無いことを確認

    docker images

    # 最新リビジョン

docker pull centos
# リビジョン指定(cent 6.6)
docker pull centos:centos6.6

使用できるイメージが増えたことを確認

    docker images


コンテナを起動する

    docker run -i -t centos /bin/bash

抜けるには ctrl +p -> ctrl +q


起動中のコンテナを止める

プロセス確認

    docker ps

CONTAINER ID        IMAGE               COMMAND                CREATED             STATUS              PORTS                  NAMES

d3ff91e86e32 user/http "/usr/sbin/httpd -D 3 minutes ago Up 3 minutes 0.0.0.0:8080->80/tcp naughty_thompson
859dc8abee25 centos "free -s 3" 51 minutes ago Up 44 minutes goofy_brown


起動

    docker run --name test01 -i -t centos:centos6.6  /bin/bash


dockerプロセス確認

[root@0ef925819c81 /]# sudo docker ps

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
0ef925819c81 centos:centos6.6 "/bin/bash" 21 seconds ago Up 20 seconds test01
[vagrant@localhost ~]$


dockerプロセス停止

[vagrant@localhost ~]$ sudo docker stop 0ef925819c81


dockerhubへpush

    docker login

docker push user/http


dockerfile作成

vi Dockerfile

---
From centos
MAINTAINER hogehoge <hogehoge@st.jp>
# RUN: build
RUN echo "now building...."
# CMD: run
# CMD echo "now running..."
CMD ["echo","now running..."]
#
#
RUN yum install -y httpd
ADD ./index.html /var/www/html/
EXPOSE 80
CMD ["/usr/sbin/httpd","-D","FOREGROUND"]
---

    sudo docker build -t user/http .

sudo docker images

sudo docker run -p 8080:80 -d user/http
sudo docker ps
sudo docker attach 4f1

sudo docker push user/http

dockerfile内の似たようなコマンド

種類
内容

RUN
Dockerイメージをbuildするために実際にコンテナでコマンドを実行

shell from
/bin/sh -cで実行されるため、shell fromで書かれたコマンドはPIDの"サブ"プロセスとなる

exec from
PID 1で実行される

shell from, exec fromで困ることの一つが、

例えばDockerの外からkillコマンドを実施しようとする際、shell fromだと"サブ"プロセス扱いになってしまうので届かなくなってしまう。


multi stage機能

Docker version 17.05移行に追加された機能

1つのDockerfile内に複数のFromで指定したDockerイメージのbuildを可能にする

ビルド環境と実行環境とで異なる構成で済むDockerイメージの軽量化などを実現する事が可能になる