2020年10月13日 [OSX] macOSのDockerでUbuntuを動かしてX Windowの画面に出す
_ [Docker] macOSのDockerでubuntu 18.04を動かす
Dockerで便利だよね.軽いし.でもDockerって直感的じゃないんだよね.起動コマンドもdocker runとかdocker startとか違いとか,docker attachとdocker execの違いとか,イメージとかコンテナとかの関係性も初見殺しっぽいし.イメージを取得/作成するにしてDockerfileを用意する場合とレポジトリから取得する場合もあるし. んで,今回はレポジトリからdockerコマンドで取得する方法をざっくり書いていくね.あとDocker for macはインストールしたものとして,話をずんずん進めていくよ.
まずコンテナの素であるDockerイメージがどれだけあるか確認するコマンド,docker imagesからだ.
nigawa:~ kido$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE xeyes latest 13060792b6cd 19 hours ago 9.95MB alpine latest a24bb4013296 4 months ago 5.57MB nigawa:~ kido$
IMAGE IDはDockerイメージを特定するIDで,これを元にコンテナを作らなきゃいけないのね.コンテナが仮想OSのインスタンスね. で,ubuntu 18.04のイメージをレポジトリから持ってくるコマンドがこちら.
nigawa:~ kido$ docker pull ubuntu:18.04 18.04: Pulling from library/ubuntu 171857c49d0f: Pull complete 419640447d26: Pull complete 61e52f862619: Pull complete Digest: sha256:646942475da61b4ce9cc5b3fadb42642ea90e5d0de46111458e100ff2c7031e6 Status: Downloaded newer image for ubuntu:18.04 nigawa:~ kido$ nigawa:~ kido$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE xeyes latest 13060792b6cd 19 hours ago 9.95MB ubuntu 18.04 56def654ec22 2 weeks ago 63.2MB alpine latest a24bb4013296 4 months ago 5.57MB nigawa:~ kido$
これでイメージは取得できた. で,普通に
docker run --name test_ubuntu1804 -itd ubuntu:18.04 /bin/bash
ってすると,test_ubuntu1804っていうCONTAINER NAMEのコンテナが作成,起動しちゃうんだけど,今回はX Windowアプリを画面に出したいのね.だからちょっと変える.
_ [Docker] DockerコンテナからのX Windowアプリの表示を許す
macOSはX WindowがXQuartz というX11の実装を用意している.これを起動しておく必要がある.んで,XQuartzの環境設定からセキュリティyを
- 接続を認証(Authenticate connections
- ネットワーク・クライアントからの接続を許可(Allow connections from network clients
のチェックを入れておくのだ.これで事前準備オッケー.
で,Dockerのイメージ作成からやりなおし.
docker run -it -d --name test_ubuntu1804 -e DISPLAY=$(hostname):0 -v ~/.Xauthority:/root/.Xauthority ubuntu:18.04
これでDISPLAYでXサーバのホスト名(localhostでも127.0.0.1でもオッケー)を指定し,macOSの.Xauthorityをubuntuの/root/.Xauthorityとしてマウントするの.そうするとX Windowアプリが表示されるようになるぜ.その前に,ubuntuのパッケージ郡を更新しておいてね.
nigawa:~ kido$ docker exec -it test_ubuntu1804 /bin/bash root@ecef00f1fad9:/# apt-get -y update ... root@ecef00f1fad9:/# apt-get -y upgrade ... root@ecef00f1fad9:/# apt install x11-apps ... root@ecef00f1fad9:/# xeyes
これでDocker ubuntuのX Windowアプリが動く環境をmacOSで作れたぜ! もしX Windowアプリが表示されないときはDockerを再起動すればいいよ!じゃあね!