使用Data Volume:html
使用Data Volume持久化的方式,是由於咱們容器是一個數據源的產生地方,自己會產生文件和數據,而咱們不想讓咱們的文件和數據隨着容器的消失而消失,所以用這種方式持久化。mysql
這種方式和第一種方式的區別是:nginx
建立一個Dockerfile,內容以下:web
FROM nginx:latest WORKDIR /usr/share/nginx/html COPY index.html index.html
這個能夠將本地的index.html 拷貝到容器中的/usr/share/nginx/html下面,sql
index.html的內容以下:docker
<body> <h1>hello docker !</h1> </body>
執行build:bash
ocker build -t vincent/my-nginx . Sending build context to Docker daemon 3.072kB Step 1/3 : FROM nginx:latest ---> 719cd2e3ed04 Step 2/3 : WORKDIR /usr/share/nginx/html ---> Using cache ---> ebda8a0ae3aa Step 3/3 : COPY index.html index.html ---> e3e9c5946773 Successfully built e3e9c5946773 Successfully tagged vincent/my-nginx:latest
建立一個容器:curl
docker run -d -p 80:80 --name web vincent/my-nginx 2cc59b89c8f4c2d60c65ad5b7490fec11c727f38a30c72a0d777209e2ea2b987
驗證一下:ui
curl 127.0.0.1 <body> <h1>hello docker !</h1> </body>
說明能夠訪問!url
刪除這個容器:
docker rm -f web
從新建立容器,而且添加參數-v,將本地的一個文件映射到裏面去:
docker run -d -v $(pwd):/usr/share/nginx/html -p 80:80 --name web vincent/my-nginx ec423f40c66477471f38d8bc8a1002a1767e99d810b69b4c991446b9ced5fdea
$(pwd)表示當前路徑。
進入到容器中,建立一個文件test.txt:
docker exec -it web /bin/bash root@ec423f40c664:/usr/share/nginx/html# ls Dockerfile index.html root@ec423f40c664:/usr/share/nginx/html# touch test.txt
退出後,在宿主機能夠看到這個文件test.txt。修改文件內容,能夠同步修改宿主機的內容,說明文件已經同步了。
由於咱們的宿主機的目錄$(pwd)和容器中的目錄/usr/share/nginx/html是同步的。