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

訪問本地可以看到相關的頁面。

如果需要還可以進一步的把地址映射出來。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM