因为容器是临时存储数据,所以删除container会导致数据丢失:
方案:
Data Volume
本身产生的数据
volumes:Docker管理宿主机文件系统的一部分,默认位于 /var/lib/docker/volumes
需要在Dockerfile指定创建的volume
本地跑一个mysql,环境变量设置为空
docker run --name mysql1 -e MYSQL_ALLOW_EMPTY_PASSWORD=true -d mysql
产生的数据会mount到本地到/var/lib/docker/volumes/
再跑一个
docker run --name mysql2 -e MYSQL_ALLOW_EMPTY_PASSWORD=true -d mysql
volume的名字很不友好
删除所有容器:
docker rm -f $(docker ps -aq)
volume依然会在
自定义volume挂载位置:
docker run --name mysql1 -v mysql:/var/lib/mysql -e MYSQL_ALLOW_EMPTY_PASSWORD=true -d mysql
进入容器,查看数据库:
docker exec -it mysql1 bash
mysql -u root
创建一个docker数据库:
删除容器,创建一个新的容器共享volume数据:
docker rm -f mysql1
docker run --name mysql2 -v mysql:/var/lib/mysql -e MYSQL_ALLOW_EMPTY_PASSWORD=true -d mysql
进入容器查看创建的数据库是否还存在:
docker exec -it mysql2 bash
mysql -u root -p
bind mouting
构建一个镜像:
Dockerfile
# this same shows how we can extend/change an existing official image from Docker Hub
FROM nginx:latest
# highly recommend you always pin versions for anything beyond dev/learn
WORKDIR /usr/share/nginx/html
# change working directory to root of nginx webhost
# using WORKDIR is prefered to using 'RUN cd /some/path'
COPY index.html index.html
# I don't have to specify EXPOSE or CMD because they're in my FROM
index.html
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>hello</title>
</head>
<body>
<h1>Hello Docker! </h1>
</body>
</html>
docker build -t ljh/my-nginx:latest .
docker run -d -p 80:80 --name=web ljh/my-nginx
目录数据完全共享,将宿主机的目录挂到里面:
docker run -d -p 80:80 -v $(pwd):/usr/share/nginx/html --name=web ljh/my-nginx
注意:目录要写绝对路径,可以挂文件,也可以挂目录,根据外面所决定,外面的文件或者目录会覆盖里面的文件或目录
docker exec -it web bash
如果容器外面的目录和里面的目录发成冲突。外面的优先级更高
利用macOS调试网页:
项目连接:
flask-skeleton
docker build -t skeleton .
docker run --name=flask-skeleton -p 80:5000 -d skeleton
本地调试测试:
如果需要对程序实时调试,需要通过bind-mounting将本地目录映射到容器目录中去:
docker rm -f flask-skeleton
docker run --name=flask-skeleton -p 80:5000 -v $(pwd):/skeleton -d skeleton
修改文件:
/flask-skeleton/skeleton/client/templates/main/home.html
将Welcome修改成Welcome to docker home!,界面立刻发生修改
发布者:LJH,转发请注明出处:https://www.ljh.cool/6974.html