在容器中进行外部访问(端口转发)

因为听说要从外部访问容器时需要使用端口转发,所以我尝试了一下。
我本来想使用apache,但是觉得配置很麻烦,又尝试了一下node.js,但是安装过程太长了,所以我决定使用官方网站上的nginx。
https://hub.docker.com/_/nginx/

从上往下看,会有一长串东西出现,所以首先尝试显示nginx的欢迎页面。
然后,挂载并尝试显示Hello World的html页面。
最后,使用Dockerfile的COPY命令将其复制到容器中,然后显示Hello World的html页面。

使用run命令来展示欢迎页面。

nginx_welcome.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

使用 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