MENU
  • VPS(レンタルサーバ)比較
  • ITエンジニアの転職
  • IT技術入門(Engineers.LOG)
カテゴリー
  • IT関連 (623)
    • Bootstrap (2)
    • クラウド (4)
    • サーバー技術 (185)
    • ストレージ (7)
      • NetApp (7)
    • ネットワーク技術 (91)
      • Cisco (36)
      • Juniper (18)
      • 負荷分散装置 (17)
    • パソコン関連 (92)
      • MAC (25)
      • Windows (54)
    • プログラミング (154)
      • Ansible (11)
      • C言語 (23)
      • Python (111)
        • Django (20)
    • 仮想化 (88)
      • Docker (63)
      • VMware (23)
  • VPS (200)
    • ABLENET VPS (16)
    • Amazon Lightsail(VPS) (2)
    • ConoHaVPS (37)
    • mixhostVPS (4)
    • WebARENAIndigo (16)
    • XServerVPS (34)
    • お名前.com VPS (12)
    • さくらのVPS (24)
    • カゴヤクラウドVPS (13)
    • シンVPS (7)
  • レンタルサーバー (56)
    • エックスサーバー (38)
  • 光回線 (8)
  • 技術スキルアップ開発・学習 (7)
    • Envader (2)
    • RareTECH (2)
    • Udemy (3)
もう現役20年超えましたー。経験値ならだれにも負けないエンジニア技術ブログ
インフラエンジニアの技術LOG
  • VPS(レンタルサーバ)比較
  • ITエンジニアの転職
  • IT技術入門(Engineers.LOG)
インフラエンジニアの技術LOG
  • VPS(レンタルサーバ)比較
  • ITエンジニアの転職
  • IT技術入門(Engineers.LOG)
  1. ホーム
  2. IT関連
  3. 仮想化
  4. Docker
  5. 【Docker】Ubuntuコンテナで公式GUIデスクトップ起動する手順

【Docker】Ubuntuコンテナで公式GUIデスクトップ起動する手順

2021 5/16
Docker
2021年5月10日2021年5月16日

Ubuntuの公式デスクトップ起動とアクセスまでをDockerで実施したのでまとめました。
今回のDockerコンテナは公式イメージから実施していますが、コンテナ起動時に実行する「/sbin/init」を動かないので、「/sbin/init」が使えるように、公式イメージをカスタマイズしたものを使用します。

Ubuntu公式のGUIデスクトップまでは立ち上がり、アクセスまで確認はしていますが、一度ログアウト、コンテナ再起動をしてしまうとうまく動かなくなってしまうので、検証用として使うようにしてください。

問題なく使えるようになれば再度ご報告します。

目次
安くて高速!高性能VPSで快適開発!
最速5分でサーバー構築
>>>こちらをチェック

エンジニア必見! 技術力を伸ばすVPS徹底比較
>>>VPS比較

「Dokcer」Ubuntu公式イメージでGUIデスクトップを起動・接続するまでの手順

Dockerではコンテナに対して色々と制限がかかっています。
今回のUbuntuで言うと「systemctl」がデフォルトでは動きません。

「systemctl」はUbuntuデスクトップを起動する際に、リモート接続として、「xrdp」をインストールします、その際、systemctlコマンドを実行して起動します。
このコマンドが使用できないと、デスクトップを起動してもアクセスができない状態となってしまいます。

そのため、「docker run」コマンド実行時に「privileged」オプションを付与し、「/sbin/init」を実行することで制限が外れ、「systemctl」が使用できるようになります。

「/sbin/init」で起動する手順は以下のページも参考にしてください。

あわせて読みたい
【Docker】Ubuntuコンテナで「systemctl」を使うために「/sbin/init」で起動する方法 DockerでUbuntuコンテナを構築したのですが、DockerはデフォルトでLinux系コンテナに対して制限がかかっているため、「systemctl」などのシステム系のコマンドが使えな...

Ubuntu公式イメージでDockerコンテナを起動(/bin/bash)

Ubuntu公式イメージそのままでは「/sbin/bash」は動かないのでまずは通常にコンテナを起動します。

以下では起動時に「privileged」オプションを使用し、ssh(22)、リモートデスクトップ(3389)、VNC(5901)の各ポートでアクセスできるようにし、実行します。

$ docker run -itd --privileged -p 3222:22 -p 13389:3389 -p 5901:5901 --name ubuntu --hostname ubuntu:latest  ubuntu
6a77e56ccb22a872923106af7fe3a4c698cdb857954e79272def334fea1452d1

Ubuntuコンテナ起動後、以下のように正常に起動ができたことを確認します。

$ docker ps
CONTAINER ID   IMAGE                        COMMAND        CREATED          STATUS         PORTS                                                                   NAMES
6a77e56ccb22   ubuntu                       "/bin/bash"    13 seconds ago   Up 8 seconds   0.0.0.0:5901->5901/tcp, 0.0.0.0:3222->22/tcp, 0.0.0.0:13389->3389/tcp   ubuntu

Dockerコンテナ起動後、Ubuntuコンテナにアクセスします。

$ docker exec -it ubuntu /bin/bash
root@ubuntu:latest:/# 

Ubuntuコンテナアクセス後、以下コマンドを実行すると「PID1」が「/bin/bash」で使われていることが確認できます。
これが原因で「/sbin/bash」が使用できず、「suystemctl」が使えない状態となってしまいます。

root@25ea4973ebfb:/# ps -aux
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.1   3744  2916 pts/0    Ss+  02:30   0:00 /bin/bash
root         9  0.1  0.1   3744  2964 pts/1    Ss   02:30   0:00 /bin/bash
root        17  0.0  0.1   5472  2232 pts/1    R+   02:30   0:00 ps -aux

「Dockekr」Ubuntuコンテナをカスタマイズする

次にこのUbuntuコンテナがsystemctlを使えるようにコンテナに必要となるパッケージをインストールします。

事前のUbuntuアップデートを実施

root@ubuntu:latest:/# apt -y update
root@ubuntu:latest:/# apt -y upgrade

「/sbin/init」が使えるように「init」をインストールし、「systemctl」もインストールしておきます。

root@ubuntu:latest:/# apt-get install -y init
root@ubuntu:latest:/# apt-get install systemd

ちなみに事前に以下のリモートデスクトップツール「xrdp」と、Ubuntu公式デスクトップをインストールしといたほうが後々楽かもです。
※動作確認はまだしていないです。

root@ubuntu-test:/# apt-get -y install xrdp
root@ubuntu-test:/# apt-get -y install ubuntu-desktop

上記インストール完了をコンテナからログアウトします。

root@ubuntu:latest:/# exit

カスタマイズしたUbuntuコンテナから新規にイメージを作成する

次に上記でカスタマイズしたコンテナイメージから新しいイメージを作成します。
以下、コマンドで対象のコンテナイメージの「CONTAINER ID」を確認します。

$ docker ps      
CONTAINER ID   IMAGE                        COMMAND        CREATED         STATUS         PORTS                                                                   NAMES
6a77e56ccb22   ubuntu                       "/bin/bash"    6 minutes ago   Up 6 minutes   0.0.0.0:5901->5901/tcp, 0.0.0.0:3222->22/tcp, 0.0.0.0:13389->3389/tcp   ubuntu

「docker commit」コマンドで対象のコンテナから、新規にDockerイメージを作成します。

$ docker commit  6a77e56ccb22 ubuntu-test:test 
sha256:1800d0ff0c096c93149a71538f9a53d44607f1888dafb726c21da5e2df71b3c7

以下コマンドで、新しくDockerイメージが作成されて居ることを確認します。

$ docker images
REPOSITORY            TAG       IMAGE ID       CREATED        SIZE
ubuntu-test           test      4788f4c27c45   7 days ago     194MB
ubuntu                16.04     1f93e87bc68f   3 weeks ago    119MB

作成した、Dockerイメージから新規にUbuntuコンテナを起動します。
ここで、カスタマイズしたイメージには「init」パッケージをインストールしているので「/sbin/init」コマンドで起動することができます。

$ docker run -itd --privileged -p 3222:22 -p 13389:3389 -p 5901:5901 --name ubuntu-test --hostname ubuntu-test  ubuntu-test:test /sbin/init 
7386e5d47ad4247450b95b36ec26db35847b885c551800d62d7186f74756a0df

Ubuntuコンテナ起動後、コンテナにアクセスし、「ps -aux」コマンドでPID1が「/sbin/init」で起動していることが確認できます。

root@ubuntu-test:/# ps -aux
USER         PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root           1  0.0  0.5 167660 10248 ?        Ss   May08   0:12 /sbin/init
root          23  0.0  0.6  45384 12612 ?        S<s  May08   0:00 /lib/systemd/systemd-journald
systemd+      37  0.0  0.4  20968  8468 ?        Ss   May08   0:00 /lib/systemd/systemd-resolved
systemd+      38  0.0  0.3  89944  6192 ?        Ssl  May08   0:03 /lib/systemd/systemd-timesyncd
message+      41  0.0  0.2   8592  4564 ?        Ss   May08   0:09 /usr/bin/dbus-daemon --system --address=systemd: --nofork --nopidfile --systemd-activation --sys
root          43  0.0  0.8  26092 16308 ?        Ss   May08   0:00 /usr/bin/python3 /usr/bin/networkd-dispatcher --run-startup-triggers
root          45  0.0  0.3  16032  6212 ?        Ss   May08   0:04 /lib/systemd/systemd-logind
root          48  0.0  0.0   2348  1412 tty1     Ss+  May08   0:00 /sbin/agetty -o -p -- \u --noclear tty1 linux
root          54  0.0  0.1   3876  3088 pts/1    Ss   May08   0:00 /bin/bash
root       20219  0.0  0.2 232944  6012 ?        Ssl  May08   0:00 /usr/lib/policykit-1/polkitd --no-debug
root       22485  0.0  0.1   6408  2700 pts/1    R+   11:23   0:00 ps -aux

カスタムイメージ作成前に以下パッケージをインストールしていない場合は、起動後インストールしておきましょう。

root@ubuntu-test:/# apt-get -y install xrdp
root@ubuntu-test:/# apt-get -y install ubuntu-desktop

「Docker」公式のUbuntuデスクトップへアクセス

上記起動後、実際にUbuntuコンテナへリモートデスクトップでアクセスします。
リモートデスクトップのアクセスは「localhost:13389」でアクセスします。
※以下はMacOSからのアクセスです。

アクセス後、以下のように「Welcome」画面が表示されるので、手順にしたがって進みます。

公式のUbuntuデスクトップが表示されます。

インターネットの確認も問題なくできました。

DockerでUbuntuの公式デスクトップを起動・アクセスする方法は以上となります。

エンジニアスキルをアップする勉強法

ITエンジニアの開発・検証・学習としてインターネット上で専用のサーバ(VPS)を利用しましょう!
実務経験はVPSで学べます。

あわせて読みたい
現役エンジニアがおすすめするVPSレンタルサーバ比較(高速SSD限定) 格安VPS比較(2025年最新版)

Docker
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする コメントをキャンセル

email confirm*

post date*

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)



検索
カテゴリー
新着記事
  • XServerVPS アニメ風 男の子 プログラミングをしている VPSを利用している 楽しそうにしている
    XServerVPSで証明書(SSL)を取得する方法
    2025年3月24日
    XServerVPS
  • レンタルサーバ アニメ風 女の子 楽しんでパソコンをしている 目がキラキラ
    WordPressがレンタルサーバよりVPSで利用する方がおすすめの理由
    2025年3月19日
    VPS
  • VPS レンタルサーバー アニメ風 女の子 プログラミングをしている VPSを利用している 楽しそうにしている
    VPSとクラウドの違いとは?初心者向けにわかりやすく解説
    2025年3月5日
    VPS
  • シンVPS アニメ風 女の子 パソコン プログラミングをしている VPSを利用している 楽しそうにしている
    シンVPSはWindows serverを利用できない。その理由と利用できるOSは?
    2025年3月4日
    シンVPS
  • シンVPS アニメ風 女の子 パソコン プログラミングをしている VPSを利用している 楽しそうにしている
    シンVPSでゲームを利用する環境はあるのか
    2025年3月4日
    シンVPS
  • シンVPS アニメ風 女の子 パソコン プログラミングをしている VPSを利用している 楽しそうにしている
    シンVPSのサイトの表示速度は他社に比べて早いのか?
    2025年3月4日
    シンVPS
目次
目次