概要
- Docker for Macで作成したDockerコンテナからホストのUSBデバイスにアクセスできない
- Docker for Macで使われているHyperKitがUSBパススルーをサポートしていないから
USB Passthrough · Issue #149 · moby/hyperkit · GitHub - VMならマウントできる
- じゃあdocker-machineを使おう
Docker Machineのインストール
公式ドキュメント
Install Docker Machine | Docker Documentation
terminal
$ base=https://github.com/docker/machine/releases/download/v0.14.0 &&
curl -L $base/docker-machine-$(uname -s)-$(uname -m) >/usr/local/bin/docker-machine &&
chmod +x /usr/local/bin/docker-machine
$ docker-machine -v
docker-machine version 0.14.0, build 89b8332
デフォルトのVMを作成
VMの名前はdefaultとしています。
Dockerデーモンがインストールされた軽量Linuxディストリビューションであるboot2dockerの仮想マシンが作成されます。
terminal
$ docker-machine create --driver virtualbox default
$ docker-machine ls
NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS
default - virtualbox Running tcp://192.168.99.100:2376 v18.06.1-ce
VirtualBoxからデフォルトVMにUSBデバイスを設定する
docker-machineを停止します。
terminal
$ docker-machine stop
VirtualBoxからdefaultのVMの設定を開き、USBコントローラを有効にします。
そこから、必要なUSBデバイスを追加します。
docker-machineをもう一度立ち上げます。
terminal
$ docker-machine start
現在のシェルの環境変数を書き換えて対話式でdockerの操作をできるようにする
いくつかの環境変数をshellに設定します。
必要な環境変数は以下で確認できます。
terminal
$ docker-machin env
export DOCKER_TLS_VERIFY="1"
export DOCKER_HOST="tcp://192.168.99.100:2376"
export DOCKER_CERT_PATH="/Users/tomitz/.docker/machine/machines/default"
export DOCKER_MACHINE_NAME="default"
# Run this command to configure your shell:
# eval $(docker-machine env)
上記の通り、eval $(docker-machine env)
を実行します。
terminal
$ eval $(docker-machine env)
docker-machineのコマンド
terminal
起動
$ docker-machine start default
再起動
$ docker-machine restart default
停止
$ docker-machine stop default
強制停止
$ docker-machine kill default
SSHで接続
$ docker-machine ssh default
マシン一覧
$ docker-machine ls
statusの確認
$ docker-machine status default
マシンのdockerを最新にアップグレード
$ docker-machine upgrade default
マシン削除
$ docker-machine rm default