LoginSignup
0
0

socatで作った仮想シリアルポートをDockerコンテナにマウントする

Posted at

はじめに

ロボット開発などでUSBデバイスをDockerコンテナで使うために、以下のように--deviceオプションを使って
USBデバイスをコンテナにマウントすることがあるが、USBデバイスが接続されていないときは docker container startでコンテナを起動できない。

docker run --rm -it --device=/dev/ttyUSB0:/dev/ttyUSB0 ubuntu bash

/dev/ttyUSB0がないとき

$ docker run --rm -it --device=/dev/ttyUSB0:/dev/ttyUSB0 ubuntu bash
docker: Error response from daemon: error gathering device information while adding custom device "/dev/ttyUSB0": no such file or directory.

そこでsocatを使って仮想シリアルデバイスを作ることで、USBデバイスが接続されていない状態でもDockerコンテナが起動できるようにする。

socatのインストール

sudo apt update
sudo apt install socat

仮想シリアルデバイスの作成

sudo socat -d -d pty,link=/dev/ttyUSB0,raw,echo=0 pty,raw,echo=0

docker run する

docker run --rm -it --device=/dev/ttyUSB0:/dev/ttyUSB0 ubuntu bash

docker コンテナで/dev一覧を見るとttyUSB0があることが分かる。

root@21092250cb7d:/# ls /dev
console  core  fd  full  mqueue  null  ptmx  pts  random  shm  stderr  stdin  stdout  tty  ttyUSB0  urandom  zero

参考

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0