LoginSignup
3

More than 5 years have passed since last update.

[自分用]Dockerの作業メモ

Last updated at Posted at 2014-11-21

ドットインストールのDocker入門( http://dotinstall.com/lessons/basic_docker )をやった時の勉強メモ

VagrantでDockerをインストールするサーバーをつくる

まずは、Vagrantで仮装サーバーを立ち上げ(今回はUbuntu)

$vagrant box list #trusty64がなければ、`vagrant box add`で追加
trusty64             (virtualbox, 0) 

$ cd ~/Vagrant
$ mkdir Docker
$ cd Docker
$ vagrant init trusty64
$ vagrant ssh

Vagrantfileのprivate_networkのIPを設定しておく

config.vm.network "private_network", ip: "192.168.55.44"

Dockerをインストール

次にVagrantで立ち上げたUbuntuにDockerをインストール
公式サイトに書いてあるとおりにする。

$ sudo apt-get update
$ sudo apt-get install docker.io

イメージを検索取得

$ sudo docker pull centos

イメージを確認

$ sudo docker images

REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
centos              centos5             192178b11d36        2 weeks ago         466.9 MB
centos              centos6             70441cac1ed5        2 weeks ago         215.8 MB
centos              centos7             ae0c2d0bdc10        2 weeks ago         224 MB
centos              latest              ae0c2d0bdc10        2 weeks ago         224 MB

コンテナを操作

コンテナを作る。
centosイメージからコンテナを作ってecho "hello world"を実行してみる

$ sudo docker run centos echo "hello world" 

コンテナを確認

$ sudo docker ps #これだと実行中のものしか出ないので、何もでない。

CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

$ sudo docker ps -a #全部出すには`-a`を付ける
CONTAINER ID        IMAGE               COMMAND              CREATED             STATUS                     PORTS               NAMES
db58d295c773        centos:centos7      echo 'hello world'   4 minutes ago       Exited (0) 4 minutes ago                       prickly_meitner      

コンテナを削除するには、sudo docker rm コンテナID

次にコンテナを作成して、バックグラウンドでコマンドを実行してみる。

$ sudo docker run -d centos free -s 5

a71d132763e10b5e6976d2f0d6b9f1feeaeefcbfe5b97f97607dfb2a8686937c

IDを指定してログ確認

$ sudo doker logs a71d1

             total       used       free     shared    buffers     cached
Mem:        501764     404956      96808        680       7080     254012
-/+ buffers/cache:     143864     357900
Swap:            0          0          0

             total       used       free     shared    buffers     cached
Mem:        501764     404956      96808        680       7088     254016
-/+ buffers/cache:     143852     357912
Swap:            0          0          0

このタスクをフォアグラウンドにもってきたいときは以下のようにする

$ sudo docker attach --sig-proxy=false a71d1

コンテナの停止・再実行

$ sudo docker kill a71d1 #sudo docker startでもOK
$ sudo docker start a71d1

イメージをつくる

実際にコンテナにログインしてみる

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

bash-4.2# touch hello.txt
exit

次にこのコンテナをコミットしてイメージ作成

$ sudo docker commit 52a2e48ec27f s-kiriki/hello

$ sudo docker images
REPOSITORY          TAG                 IMAGE ID            CREATED              VIRTUAL SIZE
s_kiriki/hello      latest              af39053b9158        About a minute ago   224 MB #ちゃんとイメージできてる!!
centos              centos5             192178b11d36        2 weeks ago          466.9 MB
centos              centos6             70441cac1ed5        2 weeks ago          215.8 MB
centos              centos7             ae0c2d0bdc10        2 weeks ago          224 MB
centos              latest              ae0c2d0bdc10        2 weeks ago          224 MB

イメージからコンテナを作ってhello.txtがあるか確認

$ sudo docker run -i -t s_kiriki/hello /bin/bash
bash-4.2# ls
bin  dev  etc  hello.txt  home  lib  lib64  lost+found  media  mnt  opt  proc  root  run  sbin  selinux  srv  sys  tmp  usr  var

Dockerfileを使う

$ vi Dockerfile
Dockerfile
FROM centos
MAINTAINER Shinya Kiriki

# RUN: build時に実行
RUN echo "building...."

# CMD: run時に実行
CMD ["echo", "runnning...."]

実行してイメージとして保存

$ sudo docker build -t kiriki/echo .
Sending build context to Docker daemon 14.85 kB
Sending build context to Docker daemon 
Step 0 : FROM centos
 ---> ae0c2d0bdc10
Step 1 : MAINTAINER Shinya Kiriki
 ---> Using cache
 ---> 2deb26f90244
Step 2 : RUN echo "building...."
 ---> Using cache
 ---> f3ce1a798a0e
Step 3 : CMD ["echo", "runnning...."]
 ---> Running in 069b76d2b384
 ---> cef0238dd965
Removing intermediate container 069b76d2b384
Successfully built cef0238dd965

保存したイメージからコンテナを実行

$ sudo docker images
REPOSITORY          TAG                 IMAGE ID            CREATED              VIRTUAL SIZE
s_kiriki/echo       latest              cef0238dd965        About a minute ago   224 MB
....
....

$ sudo docker run s_kiriki/echo
runnning....

WEBサーバーを立ちあげ

Dockerfilewを編集

Dockerfile
FROM centos
MAINTAINER Shinya Kiriki

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

index.htmlを作成

index.html
<html>
Docker test
</html>

イメージを作成

sudo docker build -t s_kiriki/httpd .

コンテナを実行

$sudo docker run -p 8080:80 -d s_kiriki/httpd #ホスト側の8080ポートをコンテナの80番にリダイレクト

これで、最初にVagrantfileで設定したipの8080ポート(http://192.168.55.44:8080/)でアクセス可能

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3