小型・
サーバー版ではなくUbuntu Coreをサーバーとして使う
第646回の
- ※1
- 今回はRaspberry Piに特化してUbuntu Coreのサーバー化を説明しますが,
Ubuntu Coreのインストール部分さえ気をつければ仮想マシンやNUCなど他のプラットフォームでも状況は同じです。他のアーキテクチャー向けのUbuntu Coreイメージはcdimages. ubuntu. comからダウンロードできます。また, 個別のインストール方法はこちらのサイトを参照してください。
Raspberry Piを
それに対してUbuntu Coreはセキュリティ上の制約からできることが限られているため普通のLinuxサーバーのように運用するとなるといろいろな壁が立ちはだかります。それでもDockerコンテナを立ち上げるならそこまで難しくありませんし,
ここではDockerとLXDのふたつを例に,
Ubuntu Coreそのものは制約が大きいためそのままでは普通のパッケージはインストールできませんし,
Ubuntu Coreの上でDockerをセットアップ
サーバー上で動かしたいサービスが出来合いのものであるのなら,
$ snap info docker name: docker summary: Docker container runtime publisher: Canonical✓ store-url: https://snapcraft.io/docker contact: https://github.com/docker-snap/docker-snap/issues?q= license: Apache-2.0 description: | Build and run container images with Docker. This build requires all files that Docker uses, such as dockerfiles, to be in $HOME. Keep files there for 'docker build', 'docker save' and 'docker load'. This snap is built by Canonical based on source code published by Docker, Inc. It is not endorsed or published by Docker, Inc. Docker and the Docker logo are trademarks or registered trademarks of Docker, Inc. in the United States and/or other countries. Docker, Inc. and other parties may also have trademark rights in other terms used herein. snap-id: sLCsFAO8PKM5Z0fAKNszUOX0YASjQfeZ channels: latest/stable: 19.03.11 2020-06-09 (474) 102MB - latest/candidate: 19.03.11 2020-06-09 (474) 102MB - latest/beta: 19.03.13 2020-11-18 (654) 104MB - latest/edge: 19.03.13 2020-12-19 (738) 104MB - 17.03/stable: 17.03.2-ce-1 2017-07-20 (161) 38MB - 17.03/candidate: 17.03.2-ce-1 2017-06-30 (161) 38MB - 17.03/beta: ↑ 17.03/edge: 17.03.2-ce-1 2017-06-30 (161) 38MB -
インストールは次のコマンドを実行するだけです。
$ snap install docker
ちなみにDockerのdata-root
は,/var/
」/media
」/mnt
」/media
」
- ※2
- snap版のdockerパッケージはホームディレクトリ以下にはアクセス権が設定されてます。しかしながらそれ以外のシステムディレクトリにはアクセスできません。また,
ホームディレクトリ以下であっても直下の隠しディレクトリ (ドットディレクトリ) にはアクセス不可です。
外部ストレージのマウント方法は,/media/
にストレージがマウントされたものとします。なお,data-root
はDokcerを起動する上で必須といえるディレクトリです。これを外部ストレージに頼るのであれば,
[Unit] Description=External Storage for Nextcloud Before=snap.docker.dockerd.service [Mount] What=/dev/disk/by-label/EXT Where=/media/data Type=ext4 [Install] WantedBy=multi-user.target RequiredBy=snap.docker.dockerd.service
追加したのはBefore=
」RequiredBy=
」snap.
」
/media/
がマウントできるようになったら,data-root
の移行を行います。
$ sudo systemctl stop snap.docker.dockerd.service $ sudo cp -a /var/snap/docker/common/var-lib-docker/ /media/data/docker $ sudo mv /var/snap/docker/common/var-lib-docker/ ~/var-lib-docker.old $ sudo mkdir /var/snap/docker/common/var-lib-docker/ $ sudo mount --bind /media/data/docker /var/snap/docker/common/var-lib-docker $ sudo snap connect docker:removable-media $ sudo systemctl start snap.docker.dockerd.service
これで無事に/media/
以下にDockerのファイルが作られるようになるはずです。試しに適当なインスタンスを立ち上げてみましょう。
RasPi 2/3/4を32bitで起動している場合 $ sudo docker run arm32v7/hello-world RasPi 3/4を64bitで起動している場合 $ sudo docker run arm64v8/hello-world
問題なければ~/var-lib-docker.
」
$ sudo rm -rf ~/var-lib-docker.old/ $ sudo systemctl stop snap.docker.dockerd.service $ sudo umount /var/snap/docker/common/var-lib-docker
unitファイルを次の手順で作成します。
$ cat <<'EOF' | sudo tee /etc/systemd/system/var-snap-docker-common-var\\x2dlib\\x2ddocker.mount [Unit] Description=External Storage for Docker After=media-data.mount Before=snap.docker.dockerd.service [Mount] What=/media/data/docker Where=/var/snap/docker/common/var-lib-docker Options=bind [Install] WantedBy=multi-user.target [Install] WantedBy=multi-user.target RequiredBy=snap.docker.dockerd.service Requires=media-data.mount EOF
気をつけなければいけないのはハイフンの扱いです。前回の記事でも説明したように,systemd-escape
コマンドで確認できます。
$ systemd-escape -p /var/snap/docker/common/var-lib-docker var-snap-docker-common-var\x2dlib\x2ddocker
ハイフンは\x2d
」\
」\\
」var\\x2dlib\\x2ddocker.
」
前回と同様動作確認して,
$ sudo systemctl daemon-reload $ sudo systemctl start var-snap-docker-common-var\\x2dlib\\x2ddocker.mount $ sudo systemctl enable var-snap-docker-common-var\\x2dlib\\x2ddocker.mount $ sudo systemctl start snap.docker.dockerd.service
念のためシステムを再起動して,
あとは普通のDockerとして利用できます。snap版のdockerパッケージにはdocker-compose
」
snap版のDockerは