しばらく前に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
コメント