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のインストール設定ができる模様。
軽く設定してみて実行してみたところ、リモートのディレクトリとローカルのディレクトリがマウントできないといったあたりでエラー、それ以上進まず。