[A-00211] Dockerナレッジまとめ
<<Dockerコマンドまとめ>>
・Docker VMに入る
Mac版のDocker DesktopはVMで動いている為、Volumeなどの実際のデータ配置場所はVM内にある。下記のコマンドを使用すればDocker VMに入ることができる
docker run -it --privileged --pid=host debian nsenter -t 1 -m -u -n -i sh・イメージの一覧を取得する
docker image ls・イメージを削除する
docker rmi <image-id>・コンテナを作成/実行する
docker run -itd --net [ネットワーク名] --name [コンテナ名] [image] [開始コマンド]
docker run -itd --net mybridge --name alpine1 alpine /bin/sh   #example1・実行中(停止中)のコンテナの一覧を取得する
docker ps                #実行中のコンテナを表示
docker container ls      #実行中のコンテナを表示
docker ps -a             #停止中のコンテナも含めた全てのコンテナを表示
docker container ls -a   #停止中のコンテナも含めた全てのコンテナを表示・コンテナの内部に入る
docker exec -it [コンテナ名] [実行コマンド]
docker exec -it alpine1 /bin/sh        #example1・コンテナを停止する
docker stop [コンテナ名(複数可能) or コンテナID]
docker container stop [コンテナ名(複数可能) or コンテナID]
docker stop alpine1    #example1
docker stop alpine1 alpine2 #example2・停止中のコンテナを削除する
docker rm [コンテナ名(複数可能) or コンテナID]
docker container rm [コンテナ名(複数可能) or コンテナID]
docker rm alpine1  #example1
docker rm alpine1 alpine2・ブリッジネットワークを一覧表示する
docker network ls・ブリッジネットワークを確認する
docker network inspect [ネットワーク名]・ボリュームの一覧を表示する
docker volume ls<<Docker Composeコマンドまとめ>>
・コンテナ作成/起動(up)
docker compose up          #docker-compose.ymlが存在する場所で実行する
docker compose up --build  #imageをビルドしてコンテナ作成/起動
docker compose up -d       #コンテナをバックグラウンド起動(detach)・コンテナ一覧表示(ps)
docker compose ps
docker compose ps -a    #停止中のコンテナも含めて表示する・ログを表示する(logs)
docker compose logs [サービス名]・コンテナ作成後の初回のみコマンド実行(run)
docker compose run [サービス名] echo "hello"・コマンド実行(exec)
docker compose exec [サービス名] echo "hello"・コンテナを停止/削除(down)
docker compose down<Dockerfile文法>
・FROMインストラクション
イメージとタグ(version)を指定してベースイメージを作成する
FROM alpine:3.14・RUNインストラクション
イメージレイヤーを作成する。レイヤーはコマンドの実行命令で構成される
RUN apt-get update・CMDインストラクション
コンテナ起動時に実行されるコマンド
CMD ["chmod","777","/opt"]・COPYインストラクション
ホスト上にある資材をコンテナ内部にコピーする
COPY . /opt/・ENVインストラクション
コンテナ内部の環境変数を定義する
ENV MYSQL_USER=user
ENV MYSQL_PASSWORD=passwd・WORKDIRインストラクション
コマンドが実行されるDirectoryなど場所を定義する
WORKDIR /opt    
RUN mkdir sample                         # /opt/sampleが作成される
RUN echo "hello" >> ./sample/hello.txt   # /opt/sample/hello.txtが作成される・ADDインストラクション
ローカルのファイルorローカル以外の場所のファイルをコンテナ内部にコピーする。
また、圧縮ファイルに対してはコンテナ内部にコピーした際に自動解凍してくれる
ADD test.zip /opt/         # /optにはtest.zipが解凍された状態で展開される
ADD https://github.com/xxxx/repo/main/README.md /opt/ # WEB上のファイルがコピーされる・ENTRYPOINTインストラクション
コンテナ実行時(run)に必ず実行されるコマンドをENTRYPOINTインストラクションで記述する。
CMDとの違いは,イメージビルドフェーズでCMDは実行されるがENTRYPOINTは実行されない。実行されるのはdocker runでコンテナを実行した時のみである。
ENTRYPOINT ["python","main.py"]上記の場合、このコンテナの実行プロセスはmain.pyの実行を目的としていることになる。
・EXPOSEインストラクション
コンテナの開放ポートを定義する。あくまでコンテナ側の開放ポートのみ定義するだけで、ホストからコンテナに接続する際にはdocker runにて-pオプションでポートマッピングを定義する必要がある。
EXPOSE 80   #コンテナ側の開放ポートdocker run -p 8080:80 my-image・Appendix
参考文献はこちら
https://qiita.com/gon0821/items/77369def082745d19c38
https://knowledge.sakura.ad.jp/23899
https://knowledge.sakura.ad.jp/26522
https://qiita.com/gon0821/items/f9e3bcbb6cb01d4ef7fa
https://qiita.com/YumaInaura/items/1647e509f83462a37494
https://pocketstudio.net/2020/01/31/cmd-and-entrypoint
https://note.com/w0o0ps/n/n9bc1bcd9fa59
https://matsuand.github.io/docs.docker.jp.onthefly/config/containers/container-networking
コメントを残す