Docker系列器八:docker data volume与docker bind Mouting

意义:不能随着容器得删除而把数据删除

创建一个mysql
docker run -d --name mysql -e MYSQL_ALLOW_EMPTY_PASSWORD=true mysql

查看volume

[root@docker-node1 vagrant]# docker volume ls
DRIVER              VOLUME NAME
local               f60b9180661fe1335c4837b9ca0cb44e7555dcc8888849797e0345c7aa61a802

[root@docker-node1 vagrant]# docker volume inspect f60b9180661fe1335c4837b9ca0cb44e7555dcc8888849797e0345c7aa61a802
[
    {
        "Driver": "local",
        "Labels": null,
        "Mountpoint": "/var/lib/docker/volumes/f60b9180661fe1335c4837b9ca0cb44e7555dcc8888849797e0345c7aa61a802/_data",
        "Name": "f60b9180661fe1335c4837b9ca0cb44e7555dcc8888849797e0345c7aa61a802",
        "Options": {},
        "Scope": "local"
    }
]

实验发现,删除docker的容器之后,volume并没有删除
docker volume ls
还是存在的

docker volume 默认不友好

删除docker volume
docker volume rm [volume id]

docker volume ls 这是为空

创建一个指定位置的docker 存储

docker run -d -v mysql:/var/lib/mysql --name mysql1 -e MYSQL_ALLOW_EMPTY_PASSWORD=true mysql

[root@docker-node1 vagrant]# docker volume ls
DRIVER              VOLUME NAME
local               mysql

[root@docker-node1 vagrant]# docker volume inspect mysql
[
    {
        "Driver": "local",
        "Labels": null,
        "Mountpoint": "/var/lib/docker/volumes/mysql/_data",
        "Name": "mysql",
        "Options": {},
        "Scope": "local"
    }
]

进入容器:
[root@docker-node1 vagrant]# docker exec -it mysql1 /bin/bash
root@23e96f17ca27:/# musql -uroot
创建一个数据库
create database docker;
create database jesse;

退出容器,删除容器

[root@docker-node1 vagrant]# docker volume ls
DRIVER              VOLUME NAME
local               mysql

再次创建一个容器,并且进入
docker run -d -v mysql:/var/lib/mysql --name mysql3 -e MYSQL_ALLOW_EMPTY_PASSWORD=true mysql

docker run -d -v mysql:/var/lib/mysql --name mysql3 -e MYSQL_ALLOW_EMPTY_PASSWORD=true mysql

进入容器之后,show databases;

还会发现刚刚创建的两个docker容器。


docker 数据虚拟化二:docker bind Mouting

文件夹目录下:
Dockerfile
index.html

目的:可以替换docker内部的docker

需要的docker images :nginx
dockerfile源码:
[root@docker-node1 docker-nginx]# cat 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
内容:hello,word

dockerfile开始构建;
docker build -t jesse/nginx .

查看docker images是否生成

第一次开始构建:
docker run -d -p 80:80 --name web jesse/nginx
curl 127.0.0.1 测试是否打开成功
删除容器

第二次开始构建
docker run -d -v $(pwd):/usr/share/nginx/html -p 80:80 --name web jesse/nginx
curl 127.0.0.1 测试是否打开成功

思考:
1.通过宿主机可以共享docker内部的文件,实现docker内部的文件实现和宿主机文件共享
2.宿主机由于是通过vagrant创建的,也可以宿主机和本地的开发环境相关联

 

你可能感兴趣的:(Docker,软件工程)