LoginSignup
1
0

More than 3 years have passed since last update.

LXDコンテナについて、lxc execコマンドでホストからコンテナ内の設定ができるのかを試したメモ書き【自分用】

Last updated at Posted at 2020-01-22

概要

LXDコンテナの設定をホスト側から自動でできるのかを試してみたときのメモ書きです。LXDのセットアップが既に終わっていることが前提です。

環境

  • ubuntu 18.04 on Virtualbox on Windows10 Pro
  • LXD 3.18(snapでインストール)

lxc execコマンド

lxc exec container_name bashなどと実行するとコンテナ内でコマンドを実行することができるので、入力したいコマンドをシェルスクリプトに書いたりしたら実行できるのかなーと思い試してみようと思います。

結果

いろいろ試行錯誤した結果、うまく動くコマンドと動かないコマンドがあるみたいです。単純にdockerなどのパッケージをインストールするためのコマンドを羅列しただけのスクリプトだったので、パイプとかを用いて工夫すればうまくいくかなーと思ったのですがうまくいきませんでした。

以下のようなコマンド実行しようと試みましたが、エラーが出たり途中で失敗したりでうまくいきませんでした...


lxc exec container_name -- sed -i.bak -e "s%http://[^ ]\+%http://linux.yz.yamagata-u.ac.jp/ubuntu/%g" /etc/apt/sources.list
lxc exec container_name -- ./xxxxxxx.sh

ひとまず落ち着いた方法

ホストで実行するLXDコンテナの設定に関するコマンドを羅列したシェルスクリプトと、LXDコンテナ内で実行するセットアップ用のシェルスクリプトに分けて、それぞれホストとコンテナ内で実行します。もっといいやり方がないか探しています...ansibleとかを利用するといいんでしょうかね。

# host
./lxd-start.sh
lxc exec container_name bash
# container
./lxd_setup.sh
lxd-start.sh
#!/bin/bash

lxc remote add --protocol simplestreams ubuntu-minimal https://cloud-images.ubuntu.com/minimal/releases/
lxc storage set default btrfs.mount_options user_subvol_rm_allowed,compress=lzo

lxc launch ubuntu-minimal:bionic u1804-sandbox -c security.nesting=true -c security.privileged=true
lxc config device add u1804-sandbox knowledge proxy listen=tcp:0.0.0.0:8080 connect=tcp:127.0.0.1:8080 bind=host
lxc config device add u1804-sandbox codimd proxy listen=tcp:0.0.0.0:3000 connect=tcp:127.0.0.1:3000 bind=host
lxc config device add u1804-sandbox share disk source=/home/xxxx path=/root/share

sleep 10s
lxc file push lxd-setup.sh u1804-sandbox/root/
lxc exec u1804-sandbox -- chmod +x lxd-setup.sh
lxd-setup.sh
#!/bin/bash

sudo sed -i.bak -e "s%http://[^ ]\+%http://linux.yz.yamagata-u.ac.jp/ubuntu/%g" /etc/apt/sources.list
sudo apt update
sudo apt -y dist-upgrade
sudo apt -y autoclean

sudo apt-get install -y \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg-agent \
    software-properties-common

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo apt-key fingerprint 0EBFCD88

sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"

sudo apt-get update
sudo apt-get install -y docker-ce

sudo curl -L "https://github.com/docker/compose/releases/download/1.25.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

docker -v
docker-compose -v
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0