• home
  • about
  • 全ての投稿
  • ソフトウェア・ハードウェアの設定のまとめ
  • 分析関連のまとめ
  • ヘルスケア関連のまとめ
  • 生涯学習関連のまとめ

docker

date: 2021-08-12 excerpt: dockerの使い方

tag: containerdocker


dockerの使い方

  • ユースケース
    • 最終的な提出物になることが多い

debian, ubuntuへのインストール

  • デフォルトパッケージとaptで入るdockerは良くないらしい
  • 公式のドキュメントに従って入れる
    • debian
    • ubuntu
  • ユーザをdocker groupに追加する
    • sudo usermod -aG docker $USER

dockerをインストールしていることでOSの調子が悪い時

  • 動作させているカーネルのバージョンを下げる
  • 下げた状態でdocker-ceなどdocker関連のパッケージを削除することで復帰することができる
  • 公式のdockerが安定するまでしばらく様子を見る

コンテナとイメージの違い

  • イメージ
    • コンテナの元。ここからコンテナというインスタンス(実態)を生成
  • コンテナ
    • イメージから生成された実態
    • commitすることでイメージすることができる

各コマンドと機能

localhostで起動しているサーバに接続したいとき

  • コンテナ起動時のオプションに--network="host"をつなげるとIPを分離しなくなる

-t, --ttyオプションについて

ttyをホストのttyに接続するかどうかのオプション
多くの場合、ttyに接続しても動作するが、GCEのスタートアップスクリプトなどはttyが存在しなく、-tオプションなしで動作を期待することがある

  • 参考
    • 【Docker】tオプションとは何か?

-i, --interactiveオプションについて

-tと組み合わせて利用するケースが多い
dockerコンテナと対話式にすすめるケースにこのオプションを設定する

-v, --volumeオプションについて

docker -it -v volume:/volumeとdocker -it -v $PWD/volume:/volumeでは意味が異なる
POSIXパスで記入すると、ローカルのファイルシステムにマップするものになる
そうでないと、docker volumeというdocker固有のファイルシステムにマップされる

-m, --mountオプションについて

--volumeオプションとほぼ同一であるが、歴史的経緯により、残っている
引数がカンマ区切り

  • 具体例
    • --mount type=bind,source=$(pwd)/app,target=/app
      • $(pwd)/appとdockerの/appをバインドする
    • --mount type=volume,source=app-data,target=/app
      • app-dataボリュームと/appにマウントする

volumeの確認

$ docker volume ls

-e, --envオプションについて

環境変数をコンテナに設定するもの
dockerfileに記述すると都合が悪いものは、実行時に渡すなどする

$ docker run --env FOO=$FOO -it <container-name>
  • FOOという環境変数を渡す例

dockerfileに記述済みの環境変数をunsetするには以下のように、具体的な値無しで指定して実行する

$ docker run --env FOO= -it <container-name>

--env-fileオプションについて

ファイルから環境変数を読み込むもの

$ docker run --env-file <file-name> -it <container-name>

--network=hostオプションについて

hostにredisサーバなどが建っている時に、コンテナからlocalhostでアクセスしたいときに、このオプションにする

$ docker run -it --network=host <container-name>

不要なイメージ、コンテナ、ボリュームの削除

$ docker system prune -a

コンテナを起動する

既存にイメージがある場合

$ docker start <container-image>

イメージが無ければ作る or ダウンロードして起動

$ docker run <container-image>

イメージをpull/ダウンロードする

$ docker pull <container-name>

コンテナを強制終了する

$ docker kill <container-name or id>
  • dockerのコードはCtrl + cでキャンセルできないことがあるので、docker psでプロセスを特定して終了する必要がある

コンテナの標準入出力に接続する

$ docker attach <container-name or id>

コンテナをpush/アップロードする

$ docker push <container-name or id>

コンテナを一時停止

$ docker pause <container-name or id>

ネットワークの一覧を表示

$ docker network list


containerdocker Share Tweet