0. 環境
x86 ubuntu22
1.ドッカーをインストールする
$ sudo apt remove docker docker-engine docker
$ sudo apt update
$ sudo apt install -y apt-transport-https ca-certificates curl software-properties-common
$ curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
$ sudo add-apt-repository "deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
$ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 7EA0A9C3F273FCD8
$ sudo apt update
$ sudo apt install docker-ce docker-ce-cli containerd.io
$ sudo systemctl status docker
$ sudo systemctl restart docker
$ sudo docker run hello-world
2. Dockerイメージをビルドする
フォルダーを作成して構成を追加する
$ cd ~/
$ mkdir docker_zsnet
$ cd docker_zsnet
$ mkdir apt
2.1 ファイル apt/source.list を作成する
deb http://mirrors.163.com/ubuntu/ bionic main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ bionic-security main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ bionic-updates main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ bionic-backports main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ bionic main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ bionic-security main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ bionic-updates main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ bionic-backports main restricted universe multiverse
2.2 ファイルstart.shを作成する
#!/bin/bash
#mosquitto -c /etc/mosquitto/mosquitto.conf &
zsnes &
2.3 ファイルDockerfileの作成
FROM ubuntu:18.04
#COPY apt/sources.list /etc/apt/
RUN dpkg --add-architecture i386 && \
apt-get -y update && \
apt -y install zsnes xarclock
COPY start.sh /root/
WORKDIR /root
#EXPOSE 11883
CMD ["bash","-c","./start.sh start && tail -f /dev/null"]
これはディレクトリです:
xxjianvm@xxjianvm-virtual-machine:~/work/docker_zsnes$ tree
.
├── apt
│ └── sources.list
├── Dockerfile
└── start.sh
1 directory, 3 files
xxjianvm@xxjianvm-virtual-machine:~/work/docker_zsnes$
3. Docker イメージをビルドして実行する
Ubuntu22 では docker 命令を操作するために sudo が必要なので、最初に root ユーザーに切り替えます。
$ sudo -s
Dockerfile が配置されているディレクトリに移動し、自動イメージ ビルドを実行します。
$ docker build -t docker_zsnet:v0.1 .
ビルドの実行が完了したら、次のようにします。
$ apt-get install x11-xserver-utils
$ xhost + #这个指令每次重启需要执行一次
$ docker run -d -it -v /tmp/.x11-unix:/tmp/.x11-unix -e DISPLAY=unix$DISPLAY -e GDK_SCALE -e GDK_DPI_SCALE --net=host docker_zsnet:v0.1 /bin/bash
このパラメータにより、Docker がインターフェイスを使用してプログラムを実行できるようになります。
-v /tmp/.x11-unix:/tmp/.x11-unix -e DISPLAY=unix$DISPLAY -e GDK_SCALE -e GDK_DPI_SCALE --net=host
完全に自動化された展開はまだ利用できないため、次の手順を実行する必要があります。
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
59393c59aec2 docker_zsnet:v0.1 "/bin/bash" 58 seconds ago Up 57 seconds wonderful_mendel
$ docker exec -it wonderful_mendel bash
# chmod +x start.sh
# ./start.sh
上記の手順では、$ は ubuntu22 ホスト上で実行され、# は Docker イメージ内で実行されることに注意してください。
docker の zsnes は継続的に実行できます。
4. Docker の基本操作をいくつか添付します。
4.1 すべての画像を一覧表示する
docker ps -a
4.2 不要な画像を削除する
docker rm 笑い_ネイピア
4.3 画像を入力するコマンドライン
実行中のイメージをリスト表示する
docker ps
イメージを入力します
docker exec -it Beautiful_mendel bash