Post

Docker в Unprivileged LXC контейнере

обновим списки контейнеров и покажем доступные template

1
pveam update && pveam available

Я выберу этот

1
system          debian-13-standard_13.1-2_amd64.tar.zst

Скачаем в local

1
pveam download local debian-13-standard_13.1-2_amd64.tar.zst

Найдем полное название

1
pveam list local
1
local:vztmpl/debian-13-standard_13.1-2_amd64.tar.zst

Создадим lxc контейнер

1
pct create 112 local:vztmpl/debian-13-standard_13.1-2_amd64.tar.zst --cmode shell --cores 2 --hostname docker-test --memory 512 --unprivileged 1 --ostype debian --net0 name=eth0,bridge=vmbr0,gw=10.0.10.1,ip=10.0.10.11/24,firewall=1,tag=20 --ssh-public-keys /root/.ssh/authorized_keys --storage Samsung_SSD --features fuse=1,keyctl=1,nesting=1 --rootfs Samsung_SSD:10 --onboot 1

Запустим контейнер и зайдем в консоль

1
pct start 112 && pct console 112

Я добавлю свой кэш

1
2
3
echo 'Acquire::HTTP::Proxy "[http://10.0.10.6:3142";'](http://10.0.10.6:3142";'/) >> /etc/apt/apt.conf.d/01proxy && echo 'Acquire::HTTPS::Proxy "false";' >> /etc/apt/apt.conf.d/01proxy

apt update && apt upgrade

Начнем настраивать docker репозиторий

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
apt update
apt install ca-certificates curl
install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc
chmod a+r /etc/apt/keyrings/docker.asc

# Add the repository to Apt sources:
tee /etc/apt/sources.list.d/docker.sources <<EOF
Types: deb
URIs: http://download.docker.com/linux/debian
Suites: $(. /etc/os-release && echo "$VERSION_CODENAME")
Components: stable
Signed-By: /etc/apt/keyrings/docker.asc
EOF

apt update

Установим docker

1
apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin fuse-overlayfs

Поставим другой storage драйвер

1
2
3
4
5
6
cat <<EOF >/etc/docker/daemon.json 
{
  "storage-driver": "fuse-overlayfs"
}
EOF
systemctl restart docker.service

Проверим работу

1
docker run helloworld

Создадим другого пользователя

1
2
3
4
5
6
7
8
9
useradd -m -d /home/docker-user -U -s /bin/bash docker-user
usermod -aG docker docker-user
mkdir /docker
mkdir /home/docker-user/.ssh
cp ~/.ssh/authorized_keys /home/docker-user/.ssh/authorized_keys
chown -R docker-user:docker-user /home/docker-user/.ssh/
chown -R docker-user:docker /docker/
chmod 700 /home/docker-user/.ssh/
chmod 600 /home/docker-user/.ssh/authorized_keys

Готово

This post is licensed under CC BY 4.0 by the author.