docker能够将应用运行在容器中,它有许多优点,例如与主机环境隔离,应用部署方便等等。但是我现在希望能够将应用的数据存放到主机上,这样一来我就可以随意的创建和销毁docker容器,而不必担心应用数据的丢失了。
用过docker的人应当都知道docker可以进行端口映射,也就是将容器中的端口映射到主机的端口上,例如
docker run -d -p 1004:1004 -p 80:1005 duguying/judger
上例中就是将docker容器的1004端口映射到1004端口,将docker容器中的1005端口映射到80端口,其中-d表示以deamon进程的方式运行应用(即服务)。其实docker除了能够映射端口还能够映射目录,如下命令
docker run -d -p 1004:1004 -p 1005:1005 -v /var/goj/judger:/data duguying/judger
其中 -v /var/goj/judger:/data
便是将docker容器中的/data
目录映射到主机的/var/goj/judger
目录。但是有一点却需要注意,那就是当运行命令后docker初始化完成会将/var/goj/judger
目录挂载到docker容器的/data
目录,这样一来原docker容器/data
目录将会消失,自然其中的内容也会丢失,因此,若是希望将配置文件放在挂载目录必须等到挂载完成后在docker容器中通过程序拷贝到挂载目录。若一切正常,那么/data
目录下的内容会在主机的/var/goj/judger
中,如此便可以实现将数据保存到主机目录。