#author("2019-03-21T17:50:22+00:00","","") * dockerメモ [#g5d0a8d9] #setlinebreak(on); #contents -- 関連 --- [[dockerでサクッとNginx環境構築]] --- [[Nginx+uwsgi+Flaskを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 image }} #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>) *** コンテナをデーモン起動 [#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 ホスト側の絶対パス:コンテナの絶対パス イメージ名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>) #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>) #html(</div>)