sunakan.github.io

Dockerの基礎

Docker Image

$ sudo docker pull centos
$ sudo docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
centos              latest              1e1148e4cc2c        2 weeks ago         202MB
$ sudo docker image ls
$ sudo docker inspect centos:latest
or
$ sudo docker inspect 1e1148e4cc2c
$ sudo docker rmi centos:latest
or
$ sudo docker rmi 1e1148e4cc2c

Docker Container

$ sudo docker run centos:latest echo "Hello world"
$ sudo docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
$ sudo docker container ls

実行が終了してたら何も出ない

$ sudo docker ps -a
CONTAINER ID        IMAGE               COMMAND                CREATED             STATUS                     PORTS               NAMES
2821e499fb83        centos:latest       "echo 'HELLO WORLD'"   4 minutes ago       Exited (0) 4 minutes ago                       lucid_matsumoto
or
$ sudo docker container ls -a
$ sudo docker rm 2821e499fb83

実行中のDocker Containerを操作

$ sudo docker run -d centos free -s 3
$ sudo docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED              STATUS              PORTS               NAMES
f79f7836d224        centos              "free -s 3"         About a minute ago   Up About a minute                       angry_mcclintock
$ sudo docker logs f79
$ sudo docker attach --sig-proxy=false f79
$ sudo docker kill f79
$ sudo docker start f79

Docker Containerに変更を加えて、Docker Imageを作成

$ sudo docker run -it centos bash
$ touch hogehoge.txt
$ ls
$ sudo docker commit 9380a9df815 sunakan/hogehoge
sha256:961076db4c581c7dddfd038d7f7e117b9a812e74c1304cd830167f226b13722a
~$ sudo docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
sunakan/hogehoge    latest              961076db4c58        18 seconds ago      202MB
centos              latest              1e1148e4cc2c        2 weeks ago         202MB
$ sudo docker run -it sunakan/hogehoge bash
$ ls
# hogehoge.txtを確認できたらOK

Dockerfileを利用

$ vim Dockerfile01

Dockerfile01の中身

# 何のDocker Imageを元にするか
FROM centos

# 誰が作成したか
# MAINTAINERは1.13から非推奨
LABEL  maintainer "sunakan <sunakan03@gmail.com>"

# RUN: buildする時に実行される
RUN echo "ビルド中..."

# CMD: runする時に実行される
CMD echo "実行中..."
CMD ["echo", "実行中..."]
$ sudo docker build -t sunakan/echo -f ./Dockerfile01 .
Sending build context to Docker daemon    746kB
Step 1/5 : FROM centos
 ---> 1e1148e4cc2c
Step 2/5 : LABEL  maintainer "sunakan <sunakan03@gmail.com>"
 ---> Running in 4b986ccc3516
Removing intermediate container 4b986ccc3516
 ---> b7e7fc65f37a
Step 3/5 : RUN echo "ビルド中..."
 ---> Running in ea3525905ae3
ビルド中...
Removing intermediate container ea3525905ae3
 ---> 420c08e69340
Step 4/5 : CMD echo "実行中..."
 ---> Running in 49cd874ac991
Removing intermediate container 49cd874ac991
 ---> 4a3e4b0f6cc7
Step 5/5 : CMD ["echo", "実行中..."]
 ---> Running in f622e4f217f4
Removing intermediate container f622e4f217f4
 ---> 93df0b4b97d1
Successfully built 93df0b4b97d1
Successfully tagged sunakan/echo:latest
$ sudo docker images
$ sudo docker run sunakan/echo

Dockerfileを利用してWebサーバを立ち上げる(最低限)

Dockerfile-nginxの中身

FROM debian:latest
LABEL maintainer="sunakan <sunakan03@gmail.com>"

RUN apt-get update \
  && apt-get install -y nginx

EXPOSE 80

CMD ["nginx", "-g", "daemon off;"]
$ vim Dockerfile-nginx
$ sudo docker build -t sunakan/nginx -f ./Dockerfile-nginx .
$ sudo docekr images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
sunakan/nginx       latest              2a30fe09b56e        5 minutes ago       177MB
debian              latest              4879790bd60d        5 weeks ago         101MB
$ sudo docker run -p 12345:80 -d sunakan/nginx
$ sudo docker ps

Dockerfileを利用してWebサーバを立ち上げる(DockerHubの利用)

$ sudo docker run -p 12345:80 -d nginx