docker로 데스크톱 환경 (GUI) 을 구축해 보십시오.
개시하다
Arch Linux를 사용하지만 Ubuntu를 만지고 싶을 때가 거의 없습니다.Virtual Box에서는 운영체제 설치 작업, 부팅 중지 지연, 메모리 압박 등에 신경을 쓴다.그래서 나는 docker로 데스크톱 환경을 구축하는 방법을 모색했다.
문장의 중정에 실려 있다Dockerfile.
Xephyr
docker에서 GUI를 사용하는 방법은 여러 가지가 있는데, 호스트는 리눅스이며, 호스트의 X 서버로 쉽게 그릴 수 있다.Xephyr는 X 응용 프로그램으로 실행되는 중첩된 X 서버입니다.
ubuntuapt install xserver-xephyr
라면archlinuxpacman -S xorg-server-xephyr
를 설치할 수 있습니다.
가변 창Xephyr -resizeable :1
에서 번호 1을 표시하는 X 서버를 시작합니다.
이미지를 만들거나 컨테이너를 시작할 때 환경 변수를 사용하여 표시 번호를 지정합니다.-e DISPLAY=:1
ENV DISPLAY=:1
소리
사운드 출력은 호스트의 pulse audio 서버를 사용합니다.컨테이너를 시작할 때 호스트의 플러그인 파일을 공유합니다.쿠키 기반 인증을 하고 있기 때문에 그것도 미리 공유합니다.-v /run/user/$UID/pulse/native:/tmp/pulse/native
-v $HOME/.config/pulse/cookie:/tmp/pulse/cookie
환경 변수를 사용하여 path를 지정합니다.ENV PULSE_SERVER=unix:/tmp/pulse/native \
PULSE_COOKIE=/tmp/pulse/cookie
시간대
tzdata를 설치할 때 시간대에 물어보면 빌딩이 멈추므로 aptinstall을 설치하기 전에 실행export DEBIAN_FRONTEND=noninteractive
합니다.ENV TZ=Asia/Tokyo
에 지정됩니다.
일본어 입력 ENV GTK_IM_MODULE=fcitx \
QT_IM_MODULE=fcitx \
XMODIFIERS=@im=fcitx \
DefalutIMModule=fcitx
시작할 때 데스크톱 환경이나 창 관리자 설정 파일에서 실행할 명령을 지정합니다.jwm의 상황은 다음과 같다.
~/.jwmrc<JWM>
...
<StartupCommand>
fcitx-autostart
fcitx-imlist -e fcitx-keyboard-jp
fcitx-imlist -s fcitx-keyboard-jp,mozc,fcitx-keyboard-us
</StartupCommand>
...
</JWM>
사용자 작성
UID 호스트에 맞는 UID입니다.사운드를 내보낼 때 사용할 쿠키를 참조할 수 있도록 합니다.--build-arg DOCKER_UID=$(id -u)
ARG DOCKER_USER=docker
ARG DOCKER_UID=1000
ARG DOCKER_PASSWORD=docker
RUN useradd -m --uid ${DOCKER_UID} --groups sudo --shell /bin/bash ${DOCKER_USER} \
&& echo ${DOCKER_USER}:${DOCKER_PASSWORD} | chpasswd
데스크톱 환경
docker에서 GUI를 사용하는 방법은 여러 가지가 있는데, 호스트는 리눅스이며, 호스트의 X 서버로 쉽게 그릴 수 있다.Xephyr는 X 응용 프로그램으로 실행되는 중첩된 X 서버입니다.
ubuntu
apt install xserver-xephyr
라면archlinuxpacman -S xorg-server-xephyr
를 설치할 수 있습니다.가변 창
Xephyr -resizeable :1
에서 번호 1을 표시하는 X 서버를 시작합니다.이미지를 만들거나 컨테이너를 시작할 때 환경 변수를 사용하여 표시 번호를 지정합니다.
-e DISPLAY=:1
ENV DISPLAY=:1
소리
사운드 출력은 호스트의 pulse audio 서버를 사용합니다.컨테이너를 시작할 때 호스트의 플러그인 파일을 공유합니다.쿠키 기반 인증을 하고 있기 때문에 그것도 미리 공유합니다.-v /run/user/$UID/pulse/native:/tmp/pulse/native
-v $HOME/.config/pulse/cookie:/tmp/pulse/cookie
환경 변수를 사용하여 path를 지정합니다.ENV PULSE_SERVER=unix:/tmp/pulse/native \
PULSE_COOKIE=/tmp/pulse/cookie
시간대
tzdata를 설치할 때 시간대에 물어보면 빌딩이 멈추므로 aptinstall을 설치하기 전에 실행export DEBIAN_FRONTEND=noninteractive
합니다.ENV TZ=Asia/Tokyo
에 지정됩니다.
일본어 입력 ENV GTK_IM_MODULE=fcitx \
QT_IM_MODULE=fcitx \
XMODIFIERS=@im=fcitx \
DefalutIMModule=fcitx
시작할 때 데스크톱 환경이나 창 관리자 설정 파일에서 실행할 명령을 지정합니다.jwm의 상황은 다음과 같다.
~/.jwmrc<JWM>
...
<StartupCommand>
fcitx-autostart
fcitx-imlist -e fcitx-keyboard-jp
fcitx-imlist -s fcitx-keyboard-jp,mozc,fcitx-keyboard-us
</StartupCommand>
...
</JWM>
사용자 작성
UID 호스트에 맞는 UID입니다.사운드를 내보낼 때 사용할 쿠키를 참조할 수 있도록 합니다.--build-arg DOCKER_UID=$(id -u)
ARG DOCKER_USER=docker
ARG DOCKER_UID=1000
ARG DOCKER_PASSWORD=docker
RUN useradd -m --uid ${DOCKER_UID} --groups sudo --shell /bin/bash ${DOCKER_USER} \
&& echo ${DOCKER_USER}:${DOCKER_PASSWORD} | chpasswd
데스크톱 환경
ENV PULSE_SERVER=unix:/tmp/pulse/native \
PULSE_COOKIE=/tmp/pulse/cookie
tzdata를 설치할 때 시간대에 물어보면 빌딩이 멈추므로 aptinstall을 설치하기 전에 실행
export DEBIAN_FRONTEND=noninteractive
합니다.ENV TZ=Asia/Tokyo
에 지정됩니다.일본어 입력 ENV GTK_IM_MODULE=fcitx \
QT_IM_MODULE=fcitx \
XMODIFIERS=@im=fcitx \
DefalutIMModule=fcitx
시작할 때 데스크톱 환경이나 창 관리자 설정 파일에서 실행할 명령을 지정합니다.jwm의 상황은 다음과 같다.
~/.jwmrc<JWM>
...
<StartupCommand>
fcitx-autostart
fcitx-imlist -e fcitx-keyboard-jp
fcitx-imlist -s fcitx-keyboard-jp,mozc,fcitx-keyboard-us
</StartupCommand>
...
</JWM>
사용자 작성
UID 호스트에 맞는 UID입니다.사운드를 내보낼 때 사용할 쿠키를 참조할 수 있도록 합니다.--build-arg DOCKER_UID=$(id -u)
ARG DOCKER_USER=docker
ARG DOCKER_UID=1000
ARG DOCKER_PASSWORD=docker
RUN useradd -m --uid ${DOCKER_UID} --groups sudo --shell /bin/bash ${DOCKER_USER} \
&& echo ${DOCKER_USER}:${DOCKER_PASSWORD} | chpasswd
데스크톱 환경
ENV GTK_IM_MODULE=fcitx \
QT_IM_MODULE=fcitx \
XMODIFIERS=@im=fcitx \
DefalutIMModule=fcitx
<JWM>
...
<StartupCommand>
fcitx-autostart
fcitx-imlist -e fcitx-keyboard-jp
fcitx-imlist -s fcitx-keyboard-jp,mozc,fcitx-keyboard-us
</StartupCommand>
...
</JWM>
UID 호스트에 맞는 UID입니다.사운드를 내보낼 때 사용할 쿠키를 참조할 수 있도록 합니다.
--build-arg DOCKER_UID=$(id -u)
ARG DOCKER_USER=docker
ARG DOCKER_UID=1000
ARG DOCKER_PASSWORD=docker
RUN useradd -m --uid ${DOCKER_UID} --groups sudo --shell /bin/bash ${DOCKER_USER} \
&& echo ${DOCKER_USER}:${DOCKER_PASSWORD} | chpasswd
데스크톱 환경
Dockerfile FROM ubuntu:latest
# 使っていない値を指定する
ENV DISPLAY=:1
# ミラーの変更
RUN sed -i '[email protected]@ftp.jaist.ac.jp/pub/Linux@' \
/etc/apt/sources.list
RUN export DEBIAN_FRONTEND=noninteractive \
&& apt update \
&& apt install -y x11-xserver-utils \
xinit \
tzdata \
language-pack-ja-base \
language-pack-ja \
sudo \
jwm \
lxterminal \
alsa-utils \
pulseaudio \
fonts-ipafont-gothic \
dbus-x11 \
fcitx-mozc \
fcitx-imlist \
vim-gtk3 \
libcurl4 \
epiphany-browser \
curl \
feh
RUN curl -O https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb \
&& apt install -y ./google-chrome-stable_current_amd64.deb \
&& rm google-chrome-stable_current_amd64.deb
# 音
ENV PULSE_SERVER=unix:/tmp/pulse/native \
PULSE_COOKIE=/tmp/pulse/cookie
# 日本語
RUN locale-gen ja_JP.UTF-8
ENV LANG=ja_JP.UTF-8
# タイムゾーン
ENV TZ=Asia/Tokyo
# 日本語入力
ENV GTK_IM_MODULE=fcitx \
QT_IM_MODULE=fcitx \
XMODIFIERS=@im=fcitx \
DefalutIMModule=fcitx
# docker内で使うユーザを作成する。
# ホストと同じUIDにする。
# ホストのpulseaudioのcookieを触るときに、permision deniedにならない。
ARG DOCKER_UID=1000
ARG DOCKER_USER=docker
ARG DOCKER_PASSWORD=docker
RUN useradd -m \
--uid ${DOCKER_UID} --groups sudo --shell /bin/bash ${DOCKER_USER} \
&& echo ${DOCKER_USER}:${DOCKER_PASSWORD} | chpasswd
WORKDIR /home/${DOCKER_USER}
# jwm(window manager), lxterminal(terminal), bashの設定
RUN curl -L \
https://raw.githubusercontent.com/atsuya0/dotfiles/master/etc/jwmrc \
-o ./.jwmrc \
&& mkdir -p ./.config/lxterminal \
&& curl -L \
https://raw.githubusercontent.com/atsuya0/dotfiles/master/terminal/lxterminal/lxterminal.conf \
-o ./.config/lxterminal/lxterminal.conf \
&& curl -L \
https://raw.githubusercontent.com/atsuya0/dotfiles/master/etc/bashrc \
-o ./.bashrc
RUN chown -R ${DOCKER_USER} ./
USER ${DOCKER_USER}
CMD jwm
설치할 패키지 목록
패키지 이름
개요
x11-xserver-utils
X window system (GUI)
xinit
X window system (GUI)
tzdata
TimeZone
language-pack-ja-base
일본어
language-pack-ja
일본어
sudo
jwm
가벼운 스택형 windowmanger
lxterminal
단말기
alsa-utils
소리
pulseaudio
소리
fonts-ipafont-gothic
일본어 글꼴
dbus-x11
X 클라이언트 통신.일본어를 입력할 때 필요한 것.
fcitx-mozc
일본어 입력
fcitx-imlist
명령을 사용하여 fcitx에 필요한
vim-gtk3
편집기
libcurl4
브라우저 종속성 패키지
epiphany-browser
브라우저
curl
파일 다운로드
deb 파일에 구글-chrome가 설치되어 있지만 정상적으로 작동할 수 없습니다.
생성/시작
arg를 지정하지 않으면 uid=1000,user=docker,password=docker가 됩니다.
docker build \
-t ubuntu-jwm \
--build-arg DOCKER_UID=$(id -u) \
--build-arg DOCKER_USER='ユーザ名' \
--build-arg DOCKER_PASSWORD='パスワード' .
환경 변수 DISPLAY를 :1
로 설정한 경우 Xephyr -resizeable :1
를 실행한 후 docker run을 실행합니다.
docker run \
-v /tmp/.X11-unix/:/tmp/.X11-unix/ \
-v /run/user/$UID/pulse/native:/tmp/pulse/native \
-v $HOME/.config/pulse/cookie:/tmp/pulse/cookie \
-it --rm ubuntu-jwm
docker의 시작을 가볍게 하다
docker를 시작하라는 명령을 내릴 때마다 고생이 많아서 함수를 씁니다.
function jwm() {
docker info &> /dev/null \
|| { echo 'Is the docker daemon running?'; return; }
local -r display=1
[[ -e "/tmp/.X11-unix/X${display}" ]] \
|| Xephyr -wr -resizeable ":${display}" &> /dev/null &
docker run \
-v /tmp/.X11-unix/:/tmp/.X11-unix/ \
-v /run/user/$UID/pulse/native:/tmp/pulse/native \
-v $HOME/.config/pulse/cookie:/tmp/pulse/cookie \
-it --rm ubuntu-jwm &> /dev/null
pkill Xephyr
}
Reference
이 문제에 관하여(docker로 데스크톱 환경 (GUI) 을 구축해 보십시오.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/atsuya0/items/fe3e6490a0aeceea5ddb
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
FROM ubuntu:latest
# 使っていない値を指定する
ENV DISPLAY=:1
# ミラーの変更
RUN sed -i '[email protected]@ftp.jaist.ac.jp/pub/Linux@' \
/etc/apt/sources.list
RUN export DEBIAN_FRONTEND=noninteractive \
&& apt update \
&& apt install -y x11-xserver-utils \
xinit \
tzdata \
language-pack-ja-base \
language-pack-ja \
sudo \
jwm \
lxterminal \
alsa-utils \
pulseaudio \
fonts-ipafont-gothic \
dbus-x11 \
fcitx-mozc \
fcitx-imlist \
vim-gtk3 \
libcurl4 \
epiphany-browser \
curl \
feh
RUN curl -O https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb \
&& apt install -y ./google-chrome-stable_current_amd64.deb \
&& rm google-chrome-stable_current_amd64.deb
# 音
ENV PULSE_SERVER=unix:/tmp/pulse/native \
PULSE_COOKIE=/tmp/pulse/cookie
# 日本語
RUN locale-gen ja_JP.UTF-8
ENV LANG=ja_JP.UTF-8
# タイムゾーン
ENV TZ=Asia/Tokyo
# 日本語入力
ENV GTK_IM_MODULE=fcitx \
QT_IM_MODULE=fcitx \
XMODIFIERS=@im=fcitx \
DefalutIMModule=fcitx
# docker内で使うユーザを作成する。
# ホストと同じUIDにする。
# ホストのpulseaudioのcookieを触るときに、permision deniedにならない。
ARG DOCKER_UID=1000
ARG DOCKER_USER=docker
ARG DOCKER_PASSWORD=docker
RUN useradd -m \
--uid ${DOCKER_UID} --groups sudo --shell /bin/bash ${DOCKER_USER} \
&& echo ${DOCKER_USER}:${DOCKER_PASSWORD} | chpasswd
WORKDIR /home/${DOCKER_USER}
# jwm(window manager), lxterminal(terminal), bashの設定
RUN curl -L \
https://raw.githubusercontent.com/atsuya0/dotfiles/master/etc/jwmrc \
-o ./.jwmrc \
&& mkdir -p ./.config/lxterminal \
&& curl -L \
https://raw.githubusercontent.com/atsuya0/dotfiles/master/terminal/lxterminal/lxterminal.conf \
-o ./.config/lxterminal/lxterminal.conf \
&& curl -L \
https://raw.githubusercontent.com/atsuya0/dotfiles/master/etc/bashrc \
-o ./.bashrc
RUN chown -R ${DOCKER_USER} ./
USER ${DOCKER_USER}
CMD jwm
arg를 지정하지 않으면 uid=1000,user=docker,password=docker가 됩니다.
docker build \
-t ubuntu-jwm \
--build-arg DOCKER_UID=$(id -u) \
--build-arg DOCKER_USER='ユーザ名' \
--build-arg DOCKER_PASSWORD='パスワード' .
환경 변수 DISPLAY를 :1
로 설정한 경우 Xephyr -resizeable :1
를 실행한 후 docker run을 실행합니다.
docker run \
-v /tmp/.X11-unix/:/tmp/.X11-unix/ \
-v /run/user/$UID/pulse/native:/tmp/pulse/native \
-v $HOME/.config/pulse/cookie:/tmp/pulse/cookie \
-it --rm ubuntu-jwm
docker의 시작을 가볍게 하다
docker를 시작하라는 명령을 내릴 때마다 고생이 많아서 함수를 씁니다.
function jwm() {
docker info &> /dev/null \
|| { echo 'Is the docker daemon running?'; return; }
local -r display=1
[[ -e "/tmp/.X11-unix/X${display}" ]] \
|| Xephyr -wr -resizeable ":${display}" &> /dev/null &
docker run \
-v /tmp/.X11-unix/:/tmp/.X11-unix/ \
-v /run/user/$UID/pulse/native:/tmp/pulse/native \
-v $HOME/.config/pulse/cookie:/tmp/pulse/cookie \
-it --rm ubuntu-jwm &> /dev/null
pkill Xephyr
}
Reference
이 문제에 관하여(docker로 데스크톱 환경 (GUI) 을 구축해 보십시오.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/atsuya0/items/fe3e6490a0aeceea5ddb
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
function jwm() {
docker info &> /dev/null \
|| { echo 'Is the docker daemon running?'; return; }
local -r display=1
[[ -e "/tmp/.X11-unix/X${display}" ]] \
|| Xephyr -wr -resizeable ":${display}" &> /dev/null &
docker run \
-v /tmp/.X11-unix/:/tmp/.X11-unix/ \
-v /run/user/$UID/pulse/native:/tmp/pulse/native \
-v $HOME/.config/pulse/cookie:/tmp/pulse/cookie \
-it --rm ubuntu-jwm &> /dev/null
pkill Xephyr
}
Reference
이 문제에 관하여(docker로 데스크톱 환경 (GUI) 을 구축해 보십시오.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/atsuya0/items/fe3e6490a0aeceea5ddb텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)