Dockerの巻
Dockerのセキュリティベスト・プラクティス
Docker Desktop for MacのVMにログインする方法
環境は次の通り
code:bash
$ docker version
Client:
Cloud integration: 1.0.17
Version: 20.10.8
API version: 1.41
Go version: go1.16.6
Git commit: 3967b7d
Built: Fri Jul 30 19:55:20 2021
OS/Arch: darwin/arm64
Context: default
Experimental: true
Server: Docker Engine - Community
Engine:
Version: 20.10.8
API version: 1.41 (minimum version 1.12)
Go version: go1.16.6
Git commit: 75249d8
Built: Fri Jul 30 19:53:48 2021
OS/Arch: linux/arm64
Experimental: true
containerd:
Version: 1.4.9
GitCommit: e25210fe30a0a703442421b0f60afac609f950a3
runc:
Version: 1.0.1
GitCommit: v1.0.1-0-g4144b63
docker-init:
Version: 0.19.0
GitCommit: de40ad0
やり方
code:sh
$ socat -d -d ~/Library/Containers/com.docker.docker/Data/debug-shell.sock pty,rawer
$ screen /dev/ttys010
コンテナでX11 on macOS
Xquartzの設定
code:sh
brew install xquartz
# 一度ログアウトしてサイドログイン後 xquartz を起動
# 設定 -> 「セキュリティ」 -> 「ネットワーク・クライアントからの接続を許可」をチェック
# 任意のクライアントから接続できるようにアクセス制御をoffにする
xhost +
# 特定のクライアントのみ許容する場合
xhost +host.docker.internal
Dockerfile
code:Dockerfile
# syntax=docker/dockerfile:1.4.1
FROM rust:latest
RUN <<EOF
apt update
apt install -y x11-apps xclip
EOF
docker-compose.yaml
code:yaml
version: '3.8'
services:
x11:
container_name: x11-app
build:
context: .
volumes:
- $HOME/.Xauthority:/root/.Xauthority
environment:
- DISPLAY=host.docker.internal:0
tty: true
動作確認
code:sh
docker compose up -d
docker exec -it x11-app bash
# macOSでアプリが起動すればOK
root@cf2bb780f173:/# xeyes
# macOSのクリップボードの中身が出力されていればOK
root@cf2bb780f173:/# xclip -selection clipboard -o
# macOSのクリップボードにhelloが入っていればOK
root@cf2bb780f173:/# xclip -selection clipboard <(echo hello)
# 画像ファイルを開く
# xdg-utils が必要なので事前に入れておく
root@1c78f11c3cf8:# xdg-open image.png