docker新建容器,拷贝容器目录出来,删除容器,启动容器并挂载卷,不是手动停止,异常停止的重新启动

#!/bin/bash

# 容器内目录
dockerData="/usr/local/mysql/data"
dockerImg="/www/python/static/img"
# 挂载主机目录
data="/home/dockerV/dade01_data"
img="/home/dockerV/dade01_img"


# 第一次创建使用,后面的就不用了
# 创建宿主机目标目录,不存在创建
mkdir -p $data
mkdir -p $img
# 如果提前有拷贝出来
# cp -r /home/dockerV/mysql/* $data/
# 启动容器复制
docker run -d --name dadeNameCp dade:120 /bin/bash -c "tail -f /dev/null"
sleep 2
# 需要去容器先拷贝一份出来,不知道为什么一直复制带了data目录一起复制过来
# docker cp "dadeNameCp:$dockerData/" "$data/"

# 或者使用方法二,在里面压缩,在复制就不会了
docker exec dadeNameCp tar -C "$dockerData" -c . | tar -C "$data" -x

# mysql数据库data目前权限,里面是dade权限,主机也要给一样的权限,不然mysql无法运行
sudo chown -R dade:dade $data
# 停止并删除容器
docker stop dadeNameCp
docker rm dadeNameCp

# 启动容器,创建容,memory限制容器内存大小5g,dade:120是那个容器版本,:rw表示读写,:ro是只读,不写(rw,ro默认读写) --restart=unless-stopped不是手动停止,异常停止的重新启动
docker run -d --name dadeName --memory=5120m -p 40060:80 -p 40061:3306 -v $data:$dockerData -v $img:$dockerImg --restart=unless-stopped dade:120 /bin/bash -c "/www/start.sh && tail -f /dev/null"

你可能感兴趣的:(docker,容器,运维)