Dockerfile的使用、容器和主机间的数据共享

2018-06-17  本文已影响20人  在路上phper

上节课我们创建了一个docker镜像,这个镜像基于我们在官方拉去的一个纯净的centos镜像,并且通过Dockerfile的使用,通过yum自动安装了一个apache网站,这个网站通过端口的映射可以在外部通过8080来访问。这个8080就是当前centos主机里面的端口 8080映射到容器中的80 所以可以在windows上访问这个网站
下面思考下这个问题
如果我们做好一个网站后 我们是把我们的网站文件部署到我们的容器中 (是通过拷贝的方式还是让外部直接连这个容器呢)
这两种方式都可以 但是比较麻烦 每次修改文件 都要上传到容器
这节课介绍一种简单的方式
首先看下面内容


image.png

进入交互式命令


image.png
查看apache配置文件
docker exec -it myhttpd /bin/bash
cat /etc/httpd/conf/httpd.conf
可以看到网站的文件目录
image.png
存在/var/www/html下面
cd /var/www/html进入

echo bhc > index.html
在index.html里面写入bhc


image.png
浏览器访问
image.png
下面看下数据共享
一般来说写完程序之后 直接放到外部 通过共享的方式 进行操作
首先学下下面这个参数
image.png
docker run --privileged -d -p 8080:80 --name myhttpd -v /home/bhc/myweb:/var/www/html centos:httpd(其中 -v /home/bhc/myweb:/var/www/html)是新的参数 表示主机和容器间的映射
/home/bhc/myweb是主机的网站存放目录 /var/www/html是容器中apache网站默认目录
centos:httpd 是镜像名(加TAG标签名)
这个参数是给我们的容器和主机间进行关联映射 它在我们的容器中创建挂载点 让我们可以把当前主机已经存在的实际的磁盘的目录挂载到容器的某一个目录
接下来创建如下目录和文件
image.png
其中myweb就是我们网站的目录(做好的项目放到这个目录下面)
这样我们在启动容器的时候就可以把myweb这个目录映射到容器里面的某个目录
接下来执行pwd查看网站所在目录
image.png
下面执行

docker run --privileged -d -p 8080:80 --name myhttpd -v /home/bhc/myweb:/var/www/html centos:httpd
启动容器并挂载主机和容器间的映射


image.png
可以发现容器已经启动了
浏览器运行
image.png
出现了myweb 是因为我们创建了myweb文件夹 并写入了myweb
接下来在myweb目录
执行
echo abc >abc.html
如下
image.png
浏览器访问
image.png
出现了abc
接下来进入容器 并进入apache网站目录
image.png
创建了bhc.html
按下ctrl+d 退出 回到myweb目录
ls查看 可以看见bhc.html
可以发现myweb目录和 /var/www/html文件是一致的
通过-v命令可以实现主机和容器之间的映射
上一篇 下一篇

猜你喜欢

热点阅读