docker镜像和容器数据持久化

1.为什么持久化

     在我们部署环境中,会利用Mysql来储存数据,而假如我们不小心删除了Mysql所处的container,那么我们之前所储存的数据将会丢失,所以说数据的持久化对我们来说是至关重要的.

持久化的方法:

                   

2.持久化的操作

     1.Data Volume

                            

             1.1 首先我们通过命令 docker pull mysql 拉取mysql的image

                   

             1.2 其次我们运行mysql,命令如下: 

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

      -d:后台运行

      -v:数据持久化的操作(把volume中的名字修改为mysql1,文件位置为/var/lib/mysql)

      -e:操作mysql的内部命令(MYSQL_ALLOW_EMPTY_PASSWORD=true代表密码为空)

    运行完后,查看volume用: docker volume ls 命令

             1.3 最后验证

     我们进入mysql容器中去,并在mysql中创建dockersssssss表,如图:

                                  

完后退出,并删除容器;最后重新创建容器mysql:

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

我们创建的容器mysql2同样使用的是mysql1的volume,最后进入容器mysql2中,查看数据表:

                               

     2.bind Mounting

                            

          我们这里使用nginx来实现bind mounting

          2.1 首先建立Dockerfile和index.html

                

               并生成images: Docker build -t html .

          2.2 其次运行文件,并把文件目录映射到当前的目录 docker run -d -v $(pwd):/usr/share/nginx/html -p 80:80 html

          2.3 最后,只要我们在当前目录中的index.html修改数据,那么我们线上的文件也会发生变化

一般来说,我们的80端口假如已经被占用,那么在linux中开启81端口,只要把容器中的80端口映射到实际中的81端口就行了,操作如下:

    docker run -d -v $(pwd):/usr/share/nginx/html -p 81:80 html

这样就可以实现

猜你喜欢

转载自blog.csdn.net/feiwutudou/article/details/84025862