Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
7
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

@tomitz

docker-machineでホスト(MacOS)のUSBデバイスをDockerコンテナにマウントする

概要

  • 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デバイスを追加します。
スクリーンショット 2018-10-30 12.11.43.png

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
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
7
Help us understand the problem. What are the problem?