Dockerでいろいろ作業しなきゃいけないのに、肝心なときに思い出せないSSHコマンド!!備忘のためにまとめておきます。
Docker Machine一覧を取得する
docker-machineの一覧を取得するためには、docker-machine ls を実行します。
<実行例>
$ docker-machine ls NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS default * virtualbox Running tcp://192.168.99.100:2376 v18.06.1-ce
SSHするのに名前が必要になるので控えておきましょう。
Docker MachineにSSHする
docker-machineにSSHするにはdocker-machine ssh docker-machine名 を実行します。
下記はマシン名defaultにSSHを実行した結果。
<実行例>
$ docker-machine ssh default ## . ## ## ## == ## ## ## ## ## === /"""""""""""""""""\___/ === ~~~ {~~ ~~~~ ~~~ ~~~~ ~~~ ~ / ===- ~~~ \______ o __/ \ \ __/ \____\_______/ _ _ ____ _ _ | |__ ___ ___ | |_|___ \ __| | ___ ___| | _____ _ __ | '_ \ / _ \ / _ \| __| __) / _` |/ _ \ / __| |/ / _ \ '__| | |_) | (_) | (_) | |_ / __/ (_| | (_) | (__| < __/ | |_.__/ \___/ \___/ \__|_____\__,_|\___/ \___|_|\_\___|_| Boot2Docker version 18.06.1-ce, build HEAD : c7e5c3e - Wed Aug 22 16:27:42 UTC 2018 Docker version 18.06.1-ce, build e68fc7a docker@default:~$
また、SSH後にsudo -i を実行することで、rootユーザになれます。
<実行例>
docker@default:~$ sudo -i Boot2Docker version 18.06.1-ce, build HEAD : c7e5c3e - Wed Aug 22 16:27:42 UTC 2018 Docker version 18.06.1-ce, build e68fc7a root@default:~#
ユーザがdocker -> rootになっているのがわかると思います。
Docker Containerの一覧を取得する
起動中のDocker Containerの一覧を取得するためには、docker container ps を実行します。
<実行例>
$ docker container ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES h762opl971kj gitlab/gitlab-ce:latest "/assets/wrapper" 2 hours ago Up 2 hours (healthy) 443/tcp, 0.0.0.0:10022->22/tcp, 0.0.0.0:10080->80/tcp gitlab l876kh7a75sa mattermost/mattermost-preview "/bin/sh -c ./docker…" 7 days ago Up 2 hours 3306/tcp, 33060/tcp, 0.0.0.0:8065->8065/tcp mattermost-preview
SSHするのにCONTAINER ID かNAMES を使用します。今回はgitlab(上)にSSHしてみます。
コンテナID「h762opl971kj」をコピっておきます。
Docker ContainerにSSH
Docker ContainerにSSHするにはdocker-machine ssh CONTAINER-ID を実行します。
docker exec -it h762opl971kj bash
<実行例>
コンテナIDで実行した例
$ docker exec -it h762opl971kj bash root@h762opl971kj:/#
コンテナ名で実行した例
$ docker exec -it gitlab bash root@h762opl971kj:/#
コンテナID、コンテナ名どちらを使用してもコンテナ内に入れることが確認できます。
コンテナにSSHする際の注意点
Docker Toolboxを使用している場合、Docker Quickstart Terminalで実行しないとSSHできませんでした。
<実行例>
gitbashで実行してみた結果。
$ docker exec -it gitlab bash the input device is not a TTY. If you are using mintty, try prefixing the command with 'winpty'
SSHがうまくいかない場合、実行している環境を確認してみると良いかもしれません。