在容器中进行外部访问(端口转发)
因为听说要从外部访问容器时需要使用端口转发,所以我尝试了一下。
我本来想使用apache,但是觉得配置很麻烦,又尝试了一下node.js,但是安装过程太长了,所以我决定使用官方网站上的nginx。
https://hub.docker.com/_/nginx/
从上往下看,会有一长串东西出现,所以首先尝试显示nginx的欢迎页面。
然后,挂载并尝试显示Hello World的html页面。
最后,使用Dockerfile的COPY命令将其复制到容器中,然后显示Hello World的html页面。
使用run命令来展示欢迎页面。
![nginx_welcome.png](https://cdn.silicloud.com/blog-img/blog/img/657d17be37434c4406c04b8f/3-0.png)
停止nginx容器
- 一旦nginxを落とす
$ docker stop 013518db8609
挂载并显示Hello World
- 簡単にHello WorldのHTMLファイルを用意し、/home/tiffany/nginx/index.htmlに保存
<html>
<head>
<title>Hello</title>
</head>
<body>
<p>Hello World!</p>
</body>
</html>
![nginx_hello.png](https://cdn.silicloud.com/blog-img/blog/img/657d17be37434c4406c04b8f/10-0.png)
使用 Dockerfile 将 Hello World 复制到容器并显示出来。
- Dockerfileの作成
FROM nginx
COPY html /usr/share/nginx/html
-
- はじめてのCOPYでハマった…
- ローカル側は絶対パスではなく、読み込むディレクトリはDockerfileから見た相対パス(コンテナ側は絶対パス)
nginx/
├── Dockerfile
└── html
└── index.html
- ビルド
$ docker build -t hello-nginx .
$ docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
hello-nginx latest c0f13486865d 10 minutes ago 132.8 MB
- nginxの実行し、一応ポートを8082番にしてみたけど上記同様にHello Worldが表示された
$ docker run --name hello -d -p 8082:80 hello-nginx
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1b734082ec74 hello-nginx "nginx -g 'daemon off" 20 minutes ago Up 20 minutes 443/tcp, 0.0.0.0:8082->80/tcp hello