しばらく前にDockerが動くLXCコンテナのプロファイルを書いたので、貼り付けます。Ubuntu 20.04用です。18.04などでも動くと思います。
storage backendはzfsでしか試していません。
cloud-configで、ユーザーを作ったりDockerのレポジトリを追加したりパッケージをインストールしたりしています。
docker-composeコマンドと、docker-composeのbash completionもインストールされます。
config:
security.nesting: "true"
user.user-data: |
#cloud-config
#ssh_pwauth: no
ssh_pwauth: yes
apt:
primary:
- arches: [default]
uri: http://ftp.naist.jp/pub/Linux/ubuntu/
users:
- name: docker
passwd: $6$9CiMkNR5Cj50qjKQ$TRyisZVTOPMFW2I.F9SFSeNBhXhrMoPPhVzcOo..f0RdIbGU5z8QWXQtxH1cGTm6cSNhQArnrZWWCue9fDQie/
lock_passwd: false
#ssh_import_id:
# - gh:jkbys
#ssh-authorized-keys:
# - ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDl8kFVmvZEPkXBlj0Up3QAG/u86+6U8cWAM4uT9UE9p jkbys@ubuntu-vm
groups: sudo
shell: /bin/bash
package_update: true
package_upgrade: true
packages:
- tzdata
- bash-completion
- cron
- iptables
- ufw
- iputils-ping
- less
- locales
- rsync
- vim
- curl
- language-pack-ja
- manpages-ja
- manpages-ja-dev
- apt-transport-https
- ca-certificates
- gnupg-agent
- software-properties-common
runcmd:
- timedatectl set-timezone Asia/Tokyo
- localectl set-locale 'LANG=ja_JP.utf8'
- update-alternatives --set editor /usr/bin/vim.basic
- curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add - &&
add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" &&
apt update && apt install -y docker-ce docker-ce-cli containerd.io &&
gpasswd -a docker docker
- COMPOSE_VERSION=`git ls-remote https://github.com/docker/compose | grep refs/tags | grep -oE "[0-9]+\.[0-9][0-9]+\.[0-9]+$" | sort --version-sort | tail -n 1`
- curl -L https://github.com/docker/compose/releases/download/${COMPOSE_VERSION}/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose &&
chmod +x /usr/local/bin/docker-compose
- curl -L https://raw.githubusercontent.com/docker/compose/${COMPOSE_VERSION}/contrib/completion/bash/docker-compose > /etc/bash_completion.d/docker-compose
description: Docker on LXC
devices:
eth0:
name: eth0
network: lxdbr0
type: nic
root:
path: /
pool: default
type: disk
name: docker
used_by: []
以下、最低限のメモです。
aptミラーを「http://ftp.naist.jp/pub/Linux/ubuntu/」にしてあります。適切なミラーに変えて使ったほうがいいです。
ユーザー名を「docker」、初期パスワードを「docker」にしてあります。参考にされる場合は適切に変更してください。「ssh_import_id:」を有効にしてsshの公開鍵をインポートさせることもできます。「gh:ユーザー名」でGitHubからインポートされます。「ssh-authorized-keys:」にAuthorized Keysを直接書くこともできます。詳しくはcloud-initのドキュメントに載っています。なお、パスワード認証を使わないなら「ssh_pwauth: no」にしたほうがいいでしょう。
「docker」という名前でプロファイルを保存した場合は、以下のようなコマンドでコンテナが起動します(docker-hostはコンテナ名の例)。
lxc launch ubuntu:20.04 -p docker docker-host
コンテナがスタートした後、ユーザーが作られ、Dockerのインストールが終わるまでしばらく時間がかかります。
上の例ではUbuntu 20.04 LTSのイメージを使っていますが、snapなどが含まれないUbuntu Minimalイメージを使う場合は、以下のように実行します。Dockerを動かすだけなら、こちらのほうがコンテナのサイズやメモリ消費を節約できます。
lxc remote add --protocol simplestreams ubuntu-minimal https://cloud-images.ubuntu.com/minimal/releases lxc launch ubuntu-minimal:20.04 -p docker docker-host

コメント