zoukankan      html  css  js  c++  java
  • docker 使用:创建nginx容器

    在上一节中了解了镜像和容器。对于镜像可以这样的理解,镜像相当于一个光盘,里面刻录了一个系统这个系统已经带有相关的服务了。

    容器是通过镜像这个光盘安装的一个操作系统,光盘预加了什么服务,容器就有什么服务。

    对于docker来说,相当多的操作跟镜像和容器有关系,比如如何管理镜像,如何管理容器,容器和宿主机的关系,等等。

    在了解了docker的相关概念后,可以使用docker来创建各种服务,这里以创建一个nginx服务为例。

    获取nginx镜像

    可以从远程仓库中拉取相应的镜像,也可以使用本地仓库获取。

    在默认的情况下,从docker hub 拉取镜像。

    在docker hub中搜索nginx镜像。

    root@ubuntu:~# docker search nginx
    NAME                                                   DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
    nginx                                                  Official build of Nginx.                        11359               [OK]                
    jwilder/nginx-proxy                                    Automated Nginx reverse proxy for docker con…   1595                                    [OK]
    richarvey/nginx-php-fpm                                Container running Nginx + PHP-FPM capable of…   712                                     [OK]
    

    可以看到跟nginx相关的镜像。

    这里下载官方的nginx镜像:

    docker pull nginx
    

    镜像下载成功:

    Using default tag: latest
    latest: Pulling from library/nginx
    743f2d6c1f65: Pull complete 
    6bfc4ec4420a: Pull complete 
    688a776db95f: Pull complete 
    Digest: sha256:a08f3331865d6072d7a28a5b943d1526dbd3fe3b4ca723c0438750d5e23f21a1
    Status: Downloaded newer image for nginx:latest
    

    可以查看镜像,看看docker中的镜像是不是多了一个nginx

    root@ubuntu:~# docker images
    REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
    nginx               latest              53f3fd8007f7        4 hours ago         109MB
    

    启动nginx服务器

    这里创建启动一个nginx的容器:

    root@ubuntu:~# docker run --name tb-nginx -p 80:80 -d nginx
    f32217ebb3f75267eb5166776dde7600ef15955264daea7d6820cc289ec233d5
    

    其中参数的意义如下:

    • tb-nginx 容器名称。
    • -d设置容器在在后台一直运行。
    • -p 端口进行映射,将本地 80 端口映射到容器内部的 80 端口。

    成功的启动了一个nginx容器,nginx容器里面是什么呢?可以到容器去看看。

    其实nginx容器,是一个centos的系统加一个nginx的服务器,这个在后面构造镜像的时候会更加明白。

    在本地的中查看进程:

    root@ubuntu:~# ps ax | grep nginx
      7115 ?        Ss     0:00 nginx: master process nginx -g daemon off;
      7154 ?        S      0:00 nginx: worker process
      7281 pts/0    S+     0:00 grep --color=auto nginx
    

    可以看到本地中有nginx的进程,也就是说docker并不是虚拟机,创建的进程还是在本地中。这样就比较有意思了,创建的方式像虚拟机一样,但是运行的方式并不是虚拟机,这样不会浪费太多的虚拟资源。

    访问本地页面

    这样相当于在本地的机子上安装了一个nginx服务器,由于我们的端口也是映射到本地的80端口上,在外面访问网站没有什么差别。

    是不是,跟普通的访问一样。

    映射本地文件

    如果单纯这样,docker并不是很好用,如果单纯作为服务器的话,最好是能把nginx用到的相关文件都能够映射到本机中,这样在修改一些配置和html的时候,不需要每次都登入到docker中去,docker能够映射本地文件。

    启动docker的时候,带上相关的文件映射。

    docker run --name tb-nginx -p 80:80 -d -v /data/nginx/logs:/var/log/nginx -v /data/nginx/html:/usr/share/nginx/html  nginx
    

    需要注意的是,如果一开始需要用到docker中的文件需要把它拷贝出来:

    如拷贝html路径下的文件:

    docker cp  8366ba061467:/usr/share/nginx/html/ /data/nginx/
    

    在路径文件映射了以后,可以在目录/data/nginx/logs下看到访问日志和错误日志。在/data/nginx/html 可以修改相应的html代码。

    nginx-php

    在nginx中如果需要加入php,比较方便的是直接下载一个nginx-php的镜像,在hub中找了一个相关的:

    创建镜像并启动容器:

    docker run -d -p 80:80 richarvey/nginx-php-fpm
    

    访问本地可以看到相关的页面。

    如果需要还可以进一步的把地址映射出来。

  • 相关阅读:
    java实现动态上传多个文件并解决文件重名问题
    MySQL存储过程之事务管理
    Java IO--字符流--InputStreamReader 和 OutputStreamWriter
    Java IO--字符流--BufferedReader和BufferedWriter
    java线程同步小结
    进程和线程的区别与联系
    java中“==”和equals方法的区别,再加上特殊的String引用类型
    java.util.Date 与 java.sql.Date 之间的转换
    Java Applet 与Servlet之间的通信
    Applet 应用程序进行数字签名,对系统文件进行读写操作
  • 原文地址:https://www.cnblogs.com/bugingcode/p/12322783.html
Copyright © 2011-2022 走看看