#author("2019-12-20T11:31:52+00:00","","") #mynavi() #setlinebreak(on); * 目次 [#wcbec104] #contents - 関連 -- [[dockerでサクッとNginx環境構築]] -- [[Nginx+uwsgi+Flaskをdockerで動かす]] -- [[LAMP環境のdockerイメージを作る]] -- [[Dockerコンテナ同士の通信]] * 各種操作 [#w7f564b8] #html(<div style="padding-left:10px;">) ** イメージの取得 [#mb294284] #html(<div style="padding-left:10px;">) #myterm2(){{ docker pull イメージ名[:タグ|@イメージのハッシュ値] }} 例) #myterm2(){{ docker pull centos:centos7 docker pull amazonlinux:2 }} #html(</div>) ** コンテナの削除 [#m7fdee40] #html(<div style="padding-left:10px;">) #myterm2(){{ docker rm コンテナID }} #html(</div>) ** イメージのビルド [#o6562a46] #html(<div style="padding-left:10px;">) #myterm2(){{ docker build ./ -t イメージ名[:タグ] }} #html(</div>) ** イメージの確認 [#y468ceac] #html(<div style="padding-left:10px;">) #myterm2(){{ docker images }} #html(</div>) ** イメージの削除 [#l0778f0e] #html(<div style="padding-left:10px;">) #myterm2(){{ docker rmi イメージID }} #html(</div>) ** コンテナの起動 [#t3be01a7] #html(<div style="padding-left:10px;">) #myterm2(){{ docker run -it イメージ名[:タグ] }} #html(</div>) ** コンテナ名を指定してコンテナを起動 [#t152a9de] #html(<div style="padding-left:10px;">) #myterm2(){{ docker run --name コンテナ名 ... # 例 docker run --name mysql -d mysql:latest }} #html(</div>) ** 環境変数を指定してコンテナを起動 [#z90f95e4] #html(<div style="padding-left:10px;">) #myterm2(){{ docker run -e 環境変数名=値 # 例 docker run -e MYSQL_ROOT_PASSWORD=root-password -d mysql:latest }} #html(</div>) ** コンテナをデーモン起動 [#zb730d40] #html(<div style="padding-left:10px;">) #myterm2(){{ docker run -d イメージ名[:タグ] }} ** コンテナをデーモン起動しつつポートバインド [#j8a16f99] #html(<div style="padding-left:10px;">) #myterm2(){{ docker run -p 仮想サーバーのポート:コンテナのポート -d イメージ名[:タグ] }} #html(</div>) ** デーモン起動したコンテナに入る [#x98c1b00] #html(<div style="padding-left:10px;">) #myterm2(){{ docker exec -it コンテナID /bin/bash }} #html(</div>) ** 起動すると同時にコンテナに入る(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] #html(<div style="padding-left:10px;">) #myterm2(){{ docker run -v ホスト側のPATH:コンテナのPATH イメージ名ID }} #html(</div>) ** 動作中のコンテナを確認 [#yc6d6761] #html(<div style="padding-left:10px;">) #myterm2(){{ docker ps }} #html(</div>) ** 停止しているコンテナを含めて確認 [#e371ca75] #html(<div style="padding-left:10px;">) #myterm2(){{ docker ps -a }} #html(</div>) ** コンテナの情報を確認 [#lb5791a6] #html(<div style="padding-left:10px;">) #myterm2(){{ docker inspect コンテナID }} #html(</div>) ** コンテナを停止 [#qe1ad9b1] #html(<div style="padding-left:10px;">) #myterm2(){{ docker container stop コンテナID }} #html(</div>) ** コンテナからイメージを作成する [#pb643e76] #html(<div style="padding-left:10px;">) docker exec -it や docker run -it でコンテナに入って作業した状態をイメージとして残しておきたい場合は、docker commit が使用できる。 ※既に停止したコンテナからイメージを作成する事も可能。 #myterm2(){{ docker commit コンテナID イメージ名:タグ }} #html(</div>) ** ファイルコピー [#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>) ** dockerネットワークを作成する [#b33115ea] #html(<div style="padding-left:10px;">) #myterm2(){{ docker network create ネットワーク名 }} #html(</div>) ** dockerネットワークを指定してコンテナを起動 [#k52a8b24] #html(<div style="padding-left:10px;">) #myterm2(){{ docker run --network ネットワーク名 ... }} #html(</div>) ** dockerネットワークの情報を確認する [#yed03afb] #html(<div style="padding-left:10px;">) #myterm2(){{ docker network inspect ネットワーク名 }} #html(</div>) ** 掃除 [#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] #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] #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] #html(<div style="padding-left:10px;">) #myterm2(){{ docker build ./ -t myapp:latest }} #html(</div>) ** ビルドしたイメージの確認 [#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>)