docker installation
1 2 3 4 5 6 7 8 9 10 11 12 13
| for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done
sudo apt-get update sudo apt-get install ca-certificates curl sudo install -m 0755 -d /etc/apt/keyrings sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc sudo chmod a+r /etc/apt/keyrings/docker.asc
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \ $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null sudo apt-get update sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
|
user config
pull alpine
even if docker hub shows no alpine 3.15
create container
- -i: keep STDIN, 否则 docker start 直接退出,docker exec 也无效,非交互模式应该是在启动脚本里加入long live server
- -t: 创建伪终端,更好的cli交互体验
- –name alpine: 指定名字
- –publish-all: 公开端口
- -v /e:/e 共享挂载目录
1
| docker run -it --name alpine --publish-all -v /e:/e alpine:3.15
|
run
start container if not yet
1
| docker ps |grep alpine || docker start alpine
|
run interactive ali
1
| docker exec -it alpine sh
|
Appendix
running ssh service in these containers is a bit annoying
although you could just run
1 2
| apk add openssh `which sshd`
|