Dockerライフサイクルをハンズオンで学ぶ


年末はいかがお過ごしでしょうか。
アイアンマン大好き 千葉です。

今日は、Dockerのライフサイクルをハンズオンで学びたいと思います。

Dockerのライフサイクル

  • pullでDockerHubからCentOSやUbuntuのイメージをローカルにダウンロード
  • ダウンロードしたイメージからrunで、コンテナを起動
  • コンテナはstop、start、restartができる
  • コンテナを停止後にcommitすることで、イメージを作成できる
  • pushでDockerHubにイメージを保存できる
  • コンテナの削除はrm
  • イメージの削除はrmi

ハンズオン環境

  • AWSのEC2上で実施
  • OSはCentOS6.5

いざ、ハンズオン開始

※名前となっている箇所は、あなたの名前を入力してください(タグで誰のコンテナか見分けるために)

EC2インスタンス作成(CentOS)

CentOSでEC2インスタンスを作成し、sshでの接続を済ませてください。

Dockerインストールと起動

# yum -y update
# yum -y install wget


# sudo rpm --import http://dl.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL-6
# sudo yum -y install http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
# sudo yum -y install docker-io

# chkconfig docker on
# service docker start

イメージダウンロード

# docker pull centos:centos6
# docker images

コンテナ起動

# docker run -dti --name [コンテナ名] centos:centos6 /bin/bash
# docker ps
# docker attach [コンテナ名]

# yum install httpd
# touch test-file
# exit

イメージ作成

# docker ps -a
# docker commit [コンテナ名] [名前]/httpd-server
# docker images

作成したイメージからコンテナ起動

# docker run -idt --name [名前]-new [名前]/httpd-server /bin/bash
# docker attach [名前]-new
# rpm -qa | grep httpd
# ls -l test-file

※因みに途中でターミナルから抜けたい場合(exitするとコンテナが停止します)

control + p → control + q

コンテナの停止

# docker stop [名前]-new
# docker ps

掃除:コンテナの削除

# docker ps -a
# docker rm [名前] [名前]-new
# docker ps -a

掃除:イメージの削除

# docker images
# docker rmi [名前]/httpd-server
# docker images

コマンドまとめ

操作系

  • DockerHubからイメージダウンロード
    • docker pull
  • コンテナの起動
    • docker run -dti --name [コンテナ名] centos:centos6 /bin/bash
  • 起動中のコンテナに接続
    • docker attach [コンテナ名]
  • 接続中のコンテナから一時的に切断する
    • control + p → control + q
  • コンテナの起動
    • docker start [コンテナ名]
  • コンテナの停止
    • docker stop [コンテナ名]
  • コンテナ再起動
    • docker restart [コンテナ名]
  • コンテナの削除
    • docker rm [コンテナ名]
  • イメージの削除
    • docker rmi [イメージ名]

参照系

  • ダウンロード済みのイメージの一覧
    • docker images
  • 現在起動しているコンテナの表示
    • docker ps -l
  • dockerのログを表示
    • docker logs [コンテナ名]
  • 停止しているコンテナも表示する
    • docker ps -al

補足

# docker push

で、DockerHubにアップロードできるがまた今度。

追記

Dockerコンテナに接続

docker exec -it [コンテナ名] /bin/bash

execを使うと、起動中のコンテナに対してコマンドを発行できる。
/bin/bashを指定することで、コンテナに接続することが可能。

因みにexecは、本来は起動中のコンテナに対していプロセスを実行する場合に利用する。