基于容器打包镜像
- 以alpine下安装autossh为例
- 保存安装了autossh的容器为新的镜像
- 映射容器999端口到宿主机999端口
1.下载基础镜像alpine
docker pull alpine
2.运行容器
docker run -it alpine sh
- 此处应注意不要使用
-d
后台运行,因为docker的运行机制为:当检测到容器中没有正在运行的进程时,将自动终止容器的运行. - 所以想让docker容器保持运行,必须在创建容器时执行一个非后台进程
3.安装autossh
echo "http://dl-cdn.alpinelinux.org/alpine/edge/community" >> /etc/apk/repositories
apk update && apk add autossh
4.创建容器开启时的启动脚本(可选)
touch start.sh
chmod +x start.sh
echo "authssh -M 54321 -CNg -D 999 user@host"
- 如果不使用启动脚本,可以直接在创建容器的时候调用启动命令
- 如果使用启动脚本,需要保证脚本里的进程不会放入后台,否则docker容器会自动关闭
5.保存当前修改为新的镜像
docker ps
docker commit <container id> <image name>
6.基于镜像启动容器
#使用启动脚本
docker run --name=<container name> -it -p 999:999 -d <image name> /start.sh
#不使用启动脚本
docker run --name=<container name> -it -d 999:999 <image name> "authssh -M 54321 -CNg -D 999 user@host"