* dockerメモ [#g5d0a8d9]
#mynavi()
#setlinebreak(on);

* 目次 [#wcbec104]
#contents
-- 関連
--- [[dockerでサクッとNginx環境構築]]
--- [[Nginx+uwsgi+Flaskをdockerで動かす]]
- 関連
-- [[dockerでサクッとNginx環境構築]]
-- [[Nginx+uwsgi+Flaskをdockerで動かす]]
-- [[LAMP環境のdockerイメージを作る]]

** 各種操作 [#w7f564b8]
* 各種操作 [#w7f564b8]
#html(<div style="padding-left:10px;">)

*** イメージの取得 [#mb294284]
** イメージの取得 [#mb294284]
#html(<div style="padding-left:10px;">)
#myterm2(){{
docker pull イメージ名[:タグ|@イメージのハッシュ値]
}}

例)
#myterm2(){{
docker pull centos:centos7
docker pull amazonlinux:2
}}
#html(</div>)

*** コンテナの削除 [#m7fdee40]
** コンテナの削除 [#m7fdee40]
#html(<div style="padding-left:10px;">)
#myterm2(){{
docker rm コンテナID
}}
#html(</div>)

*** イメージのビルド [#o6562a46]
** イメージのビルド [#o6562a46]
#html(<div style="padding-left:10px;">)
#myterm2(){{
docker build ./ -t イメージ名[:タグ]
}}
#html(</div>)

*** イメージの確認 [#y468ceac]
** イメージの確認 [#y468ceac]
#html(<div style="padding-left:10px;">)
#myterm2(){{
docker image
}}
#html(</div>)

*** イメージの削除 [#l0778f0e]
** イメージの削除 [#l0778f0e]
#html(<div style="padding-left:10px;">)
#myterm2(){{
docker rmi イメージID
}}
#html(</div>)

*** コンテナの起動 [#t3be01a7]
** コンテナの起動 [#t3be01a7]
#html(<div style="padding-left:10px;">)
#myterm2(){{
docker run -it イメージ名[:タグ]
}}
#html(</div>)

*** コンテナをデーモン起動 [#zb730d40]
** コンテナをデーモン起動 [#zb730d40]
#html(<div style="padding-left:10px;">)
#myterm2(){{
docker run -d イメージ名[:タグ]
}}

*** コンテナをデーモン起動しつつポートバインド [#j8a16f99]
** コンテナをデーモン起動しつつポートバインド [#j8a16f99]
#html(<div style="padding-left:10px;">)
#myterm2(){{
docker run -p 仮想サーバーのポート:コンテナのポート -d イメージ名[:タグ]
}}

#html(</div>)

*** デーモン起動したコンテナに入る [#x98c1b00]
** デーモン起動したコンテナに入る [#x98c1b00]
#html(<div style="padding-left:10px;">)
#myterm2(){{
docker exec -it コンテナID /bin/bash
}}
#html(</div>)

*** 起動すると同時にコンテナに入る(exitするとコンテナは終了する) [#n00b9e36]
** 起動すると同時にコンテナに入る(exitするとコンテナは終了する) [#n00b9e36]
#html(<div style="padding-left:10px;">)
#myterm2(){{
docker run -it --rm イメージID /bin/bash
}}

例)
#myterm2(){{
docker run -it --rm amazonlinux:2 /bin/bash
docker run -it --rm centos:centos7 /bin/bash
}}
#html(</div>)

*** ホスト側のディレクトリをマウントして起動 [#o45793e6]
** ホスト側のディレクトリをマウントして起動 [#o45793e6]
#html(<div style="padding-left:10px;">)
#myterm2(){{
docker run -v ホスト側の絶対パス:コンテナの絶対パス イメージ名ID
}}
#html(</div>)

*** 動作中のコンテナを確認 [#yc6d6761]
** 動作中のコンテナを確認 [#yc6d6761]
#html(<div style="padding-left:10px;">)
#myterm2(){{
docker ps
}}
#html(</div>)

*** 停止しているコンテナを含めて確認 [#e371ca75]
** 停止しているコンテナを含めて確認 [#e371ca75]
#html(<div style="padding-left:10px;">)
#myterm2(){{
docker ps -a
}}
#html(</div>)

*** コンテナの情報を確認 [#lb5791a6]
** コンテナの情報を確認 [#lb5791a6]
#html(<div style="padding-left:10px;">)
#myterm2(){{
docker inspect コンテナID
}}
#html(</div>)

*** コンテナを停止 [#qe1ad9b1]
** コンテナを停止 [#qe1ad9b1]
#html(<div style="padding-left:10px;">)
#myterm2(){{
docker container stop コンテナID
}}
#html(</div>)

*** コンテナからイメージを作成する [#pb643e76]
** コンテナからイメージを作成する [#pb643e76]
#html(<div style="padding-left:10px;">)

docker exec -it や docker run -it でコンテナに入って作業した状態をイメージとして残しておきたい場合は、docker commit が使用できる。
※既に停止したコンテナからイメージを作成する事も可能。

#myterm2(){{
docker commit コンテナID イメージ名:タグ
}}
#html(</div>)

*** ファイルコピー [#ga708179]
** ファイルコピー [#ga708179]
#myterm2(){{
# コンテナからホスト側にコピー
docker cp コンテナID:/path_to/sample.txt sample.txt

# ホスト側からコンテナにコピー
docker cp sample.txt コンテナID:/path_to/sample.txt
}}
#html(</div>)

** コンテナイメージをファイルにエクスポートする [#na1056e3]
#html(<div style="padding-left:10px;">)
#myterm2(){{
docker export コンテナID > ファイル名
}}
※docker のメタ情報まで保存したい場合は docker save を使用する。
#html(</div>)

** ファイルからコンテナイメージを作成する [#v9717be4]
#html(<div style="padding-left:10px;">)
#myterm2(){{
docker import ファイル - イメージ名:タグ
}}
※docker save で保存したファイルの場合は docker load を使用する。
#html(</div>)

** イメージをビルドする [#o866cce6]
** 掃除 [#h9c945e2]
#html(<div style="padding-left:10px;">)

コンテナをきれいにする
#myterm2(){{
docker container prune
}}

イメージををきれいにする
#myterm2(){{
# どのコンテナにも参照されていないイメージを削除
docker system prune
}}

#html(</div>)


#html(</div>)

* イメージをビルドする [#o866cce6]
#html(<div style="padding-left:10px;">)

ここではサンプルとして1秒毎にカウント表示するシェルを起動するコンテナイメージを作成する

*** Dockerfile の作成 [#f4f15357]
** Dockerfile の作成 [#f4f15357]
#html(<div style="padding-left:10px;">)
#mycode2(){{
FROM amazonlinux:2
#FROM centos:centos7

USER root

RUN yum install -y which

# amazonlinux2の時
# psコマンドインストール
RUN yum -y install procps
RUN yum install -y python3

# centos7の時
# ※IUS Community Project のリポジトリを追加する(Python3系はCentOS 7の標準yumリポジトリで提供されていない)
#RUN yum install -y https://centos7.iuscommunity.org/ius-release.rpm
#RUN yum install -y python36

RUN mkdir /myapp
COPY myapp.sh /myapp/
RUN chmod 755 /myapp/*.sh

CMD ["/myapp/myapp.sh"]
}}
#html(</div>)

*** アプリケーション(ここでは簡単なシェル)の作成 [#x0ecce04]
** アプリケーション(ここでは簡単なシェル)の作成 [#x0ecce04]
#html(<div style="padding-left:10px;">)
myapp.sh
#mycode2(){{
#!/bin/bash

i=0
while [ true ]; do
    i=`expr ${i} + 1`
    echo "i = ${i}"
    sleep 1
done
}}
#html(</div>)

*** イメージのビルド [#n0181f8f]
** イメージのビルド [#n0181f8f]
#html(<div style="padding-left:10px;">)
#myterm2(){{
docker build ./ -t myapp:latest
}}
#html(</div>)

*** ビルドしたイメージの確認 [#g1fb19e0]
** ビルドしたイメージの確認 [#g1fb19e0]
#html(<div style="padding-left:10px;">)
#myterm2(){{
docker images
}}
#html(</div>)

** ビルド中にエラーになったコンテナにログインする [#qed0579c]
#html(<div style="padding-left:10px;">)

ビルド中によく分からない原因でエラーになりイメージが作成できない事がある。
この場合は、エラーになったコンテナをいったんイメージ化する事によりコンテナにログインする事ができる。

対象のコンテナIDを確認 (エラーになったコンテナも残っている)
#myterm2(){{
docker ps -a
}}

対象のコンテナをイメージ化する
#myterm2(){{
docker commit 対象のコンテナID イメージ名:タグ
}}

これで、エラー時点のコンテナにログインできる。
#myterm2(){{
docker run -it イメージ名:タグ /bin/bash
}}

#html(</div>)

#html(</div>)


トップ   差分 バックアップ リロード   一覧 単語検索 最終更新   ヘルプ   最終更新のRSS