😀

Docker 関連 備忘録

に公開

Dockerを使用している時に、あれどうやるんだっけ?と忘れることが多いので、忘備録として記録しておきます。

Dockerイメージを探す

$ docker search {イメージ名}
## ubuntuを探す場合
docker search ubuntu:latest

Dockerイメージを取得する

$ docker pull {イメージ名}

稼働中のコンテナイメージを確認する

$ docker ps

(停止中のものも含め)稼働中のDockerイメージを確認する

$ docker ps -a

Dockerのログを表示する

$ docker logs {コンテナID}
# -f をつけると、リアルタイムでログが追加されていく様子がわかる(tail -fと同じ)
$ docker logs -f {コンテナID}

Dockerコンテナを削除する

$ docker rm {コンテナID}

Dockerプロセスにログインする

$ docker exec -it {コンテナID} /bin/bash

Dockerプロセスに(rootで)ログインする

$ docker exec -it --user root {コンテナ名} /bin/bash

Docker起動して、必要なものを実行して削除(ps -aにも残らない)

$ docker run -rm {コンテナ名} {コマンド} 

実行した後、いちいち削除しなくてよいので、意外と便利

ローカルのディレクトリをdocker imageから参照できるようにする(-vオプション)。さらにカレントディレクトリをそのディレクトリにする(-wオプション)

$ docker run -rm -v {ローカルディレクトリへのパス}:{docker内でのパス〜例えば/mytest} -w {docker内でのパス〜例えば/mytest} {コンテナ名} {コマンド}

docker imageにインストールなど実行した後、コンテナをイメージに反映する。

$ docker commit {コンテナID} {コンテナ名}

VScodeから remote container拡張機能を利用して、リモートマシンのdockerコンテナに接続する(ローカルマシンとリモートマシンは別ノード)

今回はローカルがMacOS(mojave)、リモートがUbuntu18.04

ステップ0

vscodeに、remote container追加

ステップ1

.settings.jsonに以下を追記する

 "docker.host": "ssh://user_id@www.xxx.yyy.zzz"

これでremote os上のdockerのイメージもしくはプロセスに接続できる。
リモート一覧には、dockerコンテナが表示されるようになる。
vscodeからattachしにいくと、vscode-serverがインストールされる模様。
しかし、これではコンテナ上でvscodeの初期設定をしなくてはならない。
extensionやら、launch.jsonやらなにやら、、、
そもそもリモートマシン上でコンテナを起動しなくてはならない。
他にもdocker内でgit使えるようにするためにsshのconfigとか置くのが面倒くさい。

ステップ2(途中)

やっぱり、VScodeから直接image作成したり、ステップ1で上記のことをしないで住むようにしたい。
vscodeの以下のディレクトリ(.vscodeディレクトリと同等の場所)
.devcontainerに、以下のファイルを配置して、
devcontainer.json
Dockerfile
vscodeから直接imageの作成、必要なvscodeのextensionのインストール設定ができる模様。
軽く設定してみて実行してみたところ、リモートのディレクトリとローカルのディレクトリがマウントできないといったあたりでエラー、それ以上進まず。

Discussion