这里采用Dockerfile 来构建自己的nginx 镜像
mkdir mynginx 新建一个目录
touch Dockerfile新建一个Dockerfile
vim Dockerfile 并加入如下命令
FROM nginx
RUN echo '<h1>Hello, Docker!</h1>' > /usr/share/nginx/html/index.html
这个 Dockerfile 很简单,一共就两行涉及到了两条指令:FROM 和 RUN,FROM 表示获取指定基础镜像,RUN 执行命令,在执行的过程中重写了 nginx 的默认页面信息,将信息替换为:Hello, Docker!。
在 Dockerfile 文件所在目录执行:
docker build -t nginx:v1 .
命令最后有一个. 表示当前目录,标签为v1
docker images
查看所有镜像,v1的这个就是你的
接下来使用 docker run 命令来启动容器
docker run --name docker_nginx_v1 -d -p 80:80 nginx:v1
这条命令会用 nginx 镜像启动一个容器,命名为docker_nginx_v1
,并且映射了 80 端口,这样我们可以用浏览器去访问这个 nginx 服务器:http://192.168.0.54/
,页面返回信息:
修改容器内容
容器启动后,需要对容器内的文件进行进一步的完善,可以使用docker exec -it xx bash
命令再次进行修改,以上面的示例为基础,修改 nginx 启动页面内容:
docker exec -it docker_nginx_v1 bash
root@3729b97e8226:/# echo '<h1>Hello, Docker neo!</h1>' > /usr/share/nginx/html/index.html
root@3729b97e8226:/# exit
exit
以交互式终端方式进入 docker_nginx_v1 容器,并执行了 bash 命令,也就是获得一个可操作的 Shell。然后,我们用<h1>Hello, Docker neo!</h1>
覆盖了 /usr/share/nginx/html/index.html
的内容。
再次刷新浏览器,会发现内容被改变。
修改了容器的文件,也就是改动了容器的存储层,可以通过 docker diff 命令看到具体的改动。
设置文件挂载目录
docker 容器不支持vim 编辑,修改起来比较麻烦,可以设置文件挂载目录,把容器的目录挂载到宿主机上,这样直接修改宿主机的就行了
例如:
run --name mynginx -p 80:80 -v /opt/nginx/data/html:/usr/share/nginx/html -d nginx:v1
其中 -v /opt/nginx/data/html:/usr/share/nginx/html
就是把容器的/usr/share/nginx/html 目录挂载到 /opt/nginx/data/html
注意需要先在宿主机上创建这个目录,然后把容器上的该目录下的文件复制过来
可以用docker cp docker_nginx_v1:/usr/share/nginx/html /opt/nginx/data/html
docker ps 查看运行的镜像
docker stop 2af1 停掉镜像
docker run --name mynginx -p 80:80 -v /opt/nginx/data/html:/usr/share/nginx/html -d nginx:v1
修改宿主机的html页面刷新网页会发现也变了