一度整理したいと思っていたのでまとめました。
イメージ取得
docker pull centos
※タグ指定するときは:xxxの形
docker pull centos:6
ローカルのイメージ確認
docker images
イメージからコンテナ作成
docker run --name centos01 -d centos /sbin/init
コンテナに入る
docker exec -it centos01 /bin/bash
※execでコンテナに入った場合は、出るときに exit を使える
docker run -it centos:6 /bin/bash
※runで入ったコンテナから出るときは Ctrl+p Ctrl+q を使う
実行中のコンテナのみ表示
docker ps
停止中も含めて
docker ps -a
コンテナの開始
docker start {コンテナ名} or {コンテナID}
コンテナの停止
docker stop {コンテナ名} or {コンテナID}
コンテナの削除
docker rm {コンテナ名} or {コンテナID}
コンテナの一括削除
docker rm $(docker ps -aq)
イメージの削除
docker rmi {イメージID}
イメージのビルド
image_nameの付け方は、alias/image_name:tagが一般的。
例えば田中という人が、rubyの環境を構築しているときは、tanaka/ruby:2.2.2などと表記する。
docker build -t image_name dir_name
dir_nameにはDockerfileがおいてある場所を指す。
カレントディレクトリにファイルがある場合は、「.(ドット)」を指定すれば良い。
コンテナの履歴を消さないといつまでも残り続けてディスクを圧迫する。定期的にクリーンアップ。
docker rm $(sudo docker ps -a -q)
コンテナからイメージを作る
イメージ化したいコンテナのIDを確認する
docker ps -a
イメージ化
docker commit <コンテナID> <任意の名前>/centos:6
docker commit <コンテナID> <任意の名前>/centos:6
Dockerfileからイメージを作る
※Mysqlをインストールして起動するDockerfileの場合。
※Dockerfileの書き方 → https://docs.docker.com/reference/builder/
ローカルで以下実行
---
cat << EOF > Dockerfile
FROM centos:6
MAINTAINER example <example@example.jp>
RUN yum -y install mysql-server
EXPOSE 3306
CMD ["/usr/bin/mysqld_safe", "--skip-grant-tables"]
EOF
---
# Dockerfile を元にイメージをビルド
docker build -t xxxxx/centos:mysql .
# ビルドしたイメージを元にコンテナを起動
docker run -d -p 3306:3306 -t xxxxx/centos:mysql
※d オプションはデーモンモードで標準入出力を表示しないというもの。
-p オプションはコンテナのポートをホスト OS 経由でアクセスできるようにするためのもの。
MySQL 用にコンテナの TCP:3306 ポートを、ホスト OS の TCP:3306 ポートと接続している。