docker run --restart=always --name linux \
-p 80:80 -p 12922:22 \
-v /Users/wml/alidata:/Users/wml/alidata \
-v /Users/wml/alidata/data/docker/linux/alidata:/alidata \
-h docker-lnmp \
-dit ubuntu:latest
1、安装 ssh 服务
apt update && apt install -y openssh-server
2、新增部署用户
useradd -m wml
passwd wml
3、新用户授予root权限
apt-get install -y sudo
apt install -y vim
sudo visudo
# 在文件最后新增这一行
wml ALL=(ALL) ALL
4、创建秘钥
su wml
ssh-keygen -t rsa
5、配置 ssh 公钥登录
vim ~/.ssh/authorized_keys
# 将 .ssh 文件夹 内容复制到宿主机
docker cp linux:/home/wml/.ssh /Users/wml/alidata/data/docker/linux/home/wml/ssh
6、安装 logrotate、supervisor 服务
logrotate 默认应该已安装
sudo apt-get install -y supervisor
# 将容器整个 etc 目录内容复制到宿主机
docker cp linux:/etc /Users/wml/alidata/data/docker/linux/etc
1、利用 lnmp 安装 php、nginx 服务
2、复制以上服务的配置文件到宿主机
docker cp linux:/usr/local/php/etc /Users/wml/alidata/data/docker/linux/usr/local/php/etc
docker cp linux:/usr/local/nginx/conf /Users/wml/alidata/data/docker/linux/usr/local/nginx/conf
3、利用初始 linux 容器创建自定义镜像
docker commit linux linux:105
4、利用上述自定义镜像挂载宿主机以上服务配置文件所在目录创建新的镜像
注意需要开机重启的服务都配置到 supervisord 中
docker run --privileged --restart=always --name linux \
-p 443:443 -p 80:80 -p 12922:22 -p 8000:8000 -p 8001:8001 -p 8002:8002 -p 8003:8003 \
-v /Users/wml/alidata:/Users/wml/alidata \
-v /Users/wml/alidata/data/docker/linux/alidata:/alidata \
-v /Users/wml/alidata/data/docker/linux/home/wml/ssh:/home/wml/.ssh \
-v /Users/wml/alidata/data/docker/linux/usr/local/php/etc:/usr/local/php/etc \
-v /Users/wml/alidata/data/docker/linux/usr/local/nginx/conf:/usr/local/nginx/conf \
-h docker-lnmp --user root --network lnmp002 --ip=172.25.0.3 \
-dit linux:115 \
/usr/bin/supervisord -n -c /etc/supervisor/supervisord.conf
# 进入容器
docker attach linux
# 启动 supervisor 服务
sudo supervisord -c /etc/supervisor/supervisord.conf
创建 Linux 容器后若进行了修改我们想备份该容器可以使用如下方法
docker commit
命令可以将一个容器的当前状态提交为一个新的镜像。基本语法如下:
docker commit [OPTIONS] {容器的 ID 或名称} {新镜像的仓库名称:标签}
例如,假设你有一个运行中的容器 my_container
,你想将它制作成一个名为 my_image
的新镜像,你可以执行:
docker commit linux linux:114
使用 docker save
命令可以将镜像保存为归档文件。
# gzip 表示导出时对归档文件进行压缩
$ docker save {镜像名} | gzip > {归档文件名}.tar.gz
# 备份 linux 镜像
docker save linux:114 | gzip > linux114.tar.gz
然后我们将 {归档文件名}.tar.gz 文件复制到要存储的位置