上节课我们创建了一个docker镜像,这个镜像基于我们在官方拉去的一个纯净的centos镜像,并且通过Dockerfile的使用,通过yum自动安装了一个apache网站,这个网站通过端口的映射可以在外部通过8080来访问。这个8080就是当前centos主机里面的端口 8080映射到容器中的80 所以可以在windows上访问这个网站
下面思考下这个问题
如果我们做好一个网站后 我们是把我们的网站文件部署到我们的容器中 (是通过拷贝的方式还是让外部直接连这个容器呢)
这两种方式都可以 但是比较麻烦 每次修改文件 都要上传到容器
这节课介绍一种简单的方式
首先看下面内容
![](https://img.haomeiwen.com/i2509361/8dca6c13badb34d3.png)
进入交互式命令
![](https://img.haomeiwen.com/i2509361/9258ec1bcfaf7fea.png)
查看apache配置文件
docker exec -it myhttpd /bin/bash
cat /etc/httpd/conf/httpd.conf
可以看到网站的文件目录
![](https://img.haomeiwen.com/i2509361/25aa86469e5c213d.png)
存在/var/www/html下面
cd /var/www/html进入
echo bhc > index.html
在index.html里面写入bhc
![](https://img.haomeiwen.com/i2509361/cfbcb3cd7810cae4.png)
浏览器访问
![](https://img.haomeiwen.com/i2509361/9d762577d73cfb01.png)
下面看下数据共享
一般来说写完程序之后 直接放到外部 通过共享的方式 进行操作
首先学下下面这个参数
![](https://img.haomeiwen.com/i2509361/73857645f21f8262.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标签名)
这个参数是给我们的容器和主机间进行关联映射 它在我们的容器中创建挂载点 让我们可以把当前主机已经存在的实际的磁盘的目录挂载到容器的某一个目录
接下来创建如下目录和文件
![](https://img.haomeiwen.com/i2509361/49eda8ec96abf909.png)
其中myweb就是我们网站的目录(做好的项目放到这个目录下面)
这样我们在启动容器的时候就可以把myweb这个目录映射到容器里面的某个目录
接下来执行pwd查看网站所在目录
![](https://img.haomeiwen.com/i2509361/38f50c74bab1fec8.png)
下面执行
docker run --privileged -d -p 8080:80 --name myhttpd -v /home/bhc/myweb:/var/www/html centos:httpd
启动容器并挂载主机和容器间的映射
![](https://img.haomeiwen.com/i2509361/2a5ce97fe130d383.png)
可以发现容器已经启动了
浏览器运行
![](https://img.haomeiwen.com/i2509361/c0bb7b8dfae39dfa.png)
出现了myweb 是因为我们创建了myweb文件夹 并写入了myweb
接下来在myweb目录
执行
echo abc >abc.html
如下
![](https://img.haomeiwen.com/i2509361/cedb4c851ccd9aed.png)
浏览器访问
![](https://img.haomeiwen.com/i2509361/bab0484bb2b421f3.png)
出现了abc
接下来进入容器 并进入apache网站目录
![](https://img.haomeiwen.com/i2509361/e993c4c1076fd3ac.png)
创建了bhc.html
按下ctrl+d 退出 回到myweb目录
ls查看 可以看见bhc.html
可以发现myweb目录和 /var/www/html文件是一致的
通过-v命令可以实现主机和容器之间的映射
网友评论