19.04内部コンテナーを備えたUbuntu 16.04 LTSホストシステムでグラフィカルアプリケーションを実行するための最も単純な(最小限の作業例)Dockerfile
を作成しました。
mkdir ~/docker-xclock
cat > ~/docker-xclock/Dockerfile << EOF
FROM ubuntu:19.04
RUN apt-get update
RUN apt-get install -y x11-apps
CMD xclock
EOF
次に、コンテナを作成しました
docker build -t ubuntu:xclock ~/docker-xclock
このコンテナを実行しようとすると、表示に関するエラーが表示されます。
$ docker run ubuntu:xclock Error: Can't open display:
なにが問題ですか?
特別な構文でホスト上でX11サーバーを実行することをコンテナに通知する必要があります[1]:
docker run -e DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix ubuntu:xclock --user="$(id --user):$(id --group)"
ここで、[2]:
-e、-env = []
環境変数を設定します
-u、--user = ""
指定したコマンドに使用するユーザー名またはUIDを設定し、オプションでグループ名またはGIDを設定します。
-v | --volume [= [[Host-DIR:] CONTAINER-DIR [:OPTIONS]]]
バインドマウントを作成します。 -v/Host-DIR:/ CONTAINER-DIRを指定すると、Dockerバインドはホストの/ Host-DIRをDockerコンテナーの/ CONTAINER-DIRにマウントします。 「Host-DIR」を省略した場合、Dockerはホスト上に新しいボリュームを自動的に作成します。 OPTIONSはコンマで区切られたリストであり、次のいずれかになります。
参照:
Dockerfileを作成する
mkdir〜/ docker-xclock
ENV HTTPS_PROXY = ""
ENV HTTP_PROXY = ""
ENV NO_PROXY = ""
cat>〜/ docker-xclock/Dockerfile << EOF
Ubuntuから:19.04
apt-get updateを実行します
apt-get install -y x11-appsを実行します
CMD xclock
EOF
1)docker build -t ubuntu:xclock〜/ docker-xclock
2)docker run -e DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix --user = "$(id --user):$(id --group)" ubuntu:xclock
NB:ubuntu:xclockをコマンドの最後に配置
docker-xclock
フォルダーにDockerfile
を作成します。
mkdir ~/docker-xclock
cat > ~/docker-xclock/Dockerfile << EOF
FROM ubuntu:19.04
ENV https_proxy="xxx"
ENV http_proxy="xxx"
ENV no_proxy="xxx"
RUN apt-get update
RUN apt-get install -y x11-apps
CMD xclock
EOF
docker build -t ubuntu:xclock ~/docker-xclock
docker run -e DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix --user="$(id --user):$(id --group)" ubuntu:xclock
注意:コマンドの最後にubuntu:xclock
を付けてください。 GUIインタラクションにX11を使用する。