linux 安裝docker 並使用docker 安裝nginx

    啊 , 感嘆下,生活不會虧待努力的人(雖然我不是  嘻嘻),但是一直過着 聰明、健康、有愛的生活。。。。。。。。。。。。。。。

   之前也在linux下安裝過docker,並且也一直使用,但是一直沒有記錄下安裝的過程,爲了多年以後能再次發現自己的足跡,就抽個時間記錄下這些過程。

什麼是 Docker

Docker 最初是 dotCloud 公司創始人 Solomon Hykes 在法國期間發起的一個公司內部項目,它是基於 dotCloud 公司多年雲服務技術的一次革新,並於 2013 年 3 月以 Apache 2.0 授權協議開源,主要項目代碼在 GitHub 上進行維護。Docker 項目後來還加入了 Linux 基金會,併成立推動 開放容器聯盟(OCI)

Docker 自開源後受到廣泛的關注和討論,至今其 GitHub 項目已經超過 4 萬 6 千個星標和一萬多個 fork。甚至由於 Docker 項目的火爆,在 2013 年底,dotCloud 公司決定改名爲 Docker。Docker 最初是在 Ubuntu 12.04 上開發實現的;Red Hat 則從 RHEL 6.5 開始對 Docker 進行支持;Google 也在其 PaaS 產品中廣泛應用 Docker。

Docker 使用 Google 公司推出的 Go 語言 進行開發實現,基於 Linux 內核的 cgroupnamespace,以及AUFS 類的 Union FS 等技術,對進程進行封裝隔離,屬於 操作系統層面的虛擬化技術。由於隔離的進程獨立於宿主和其它的隔離的進程,因此也稱其爲容器。最初實現是基於 LXC,從 0.7 版本以後開始去除 LXC,轉而使用自行開發的 libcontainer,從 1.11 開始,則進一步演進爲使用 runC 和 containerd

Docker 在容器的基礎上,進行了進一步的封裝,從文件系統、網絡互聯到進程隔離等等,極大的簡化了容器的創建和維護。使得 Docker 技術比虛擬機技術更爲輕便、快捷。

下面的圖片比較了 Docker 和傳統虛擬化方式的不同之處。傳統虛擬機技術是虛擬出一套硬件後,在其上運行一個完整操作系統,在該系統上再運行所需應用進程;而容器內的應用進程直接運行於宿主的內核,容器內沒有自己的內核,而且也沒有進行硬件虛擬。因此容器要比傳統虛擬機更爲輕便。

安裝 Docker

Docker 分爲 CE 和 EE 兩大版本。CE 即社區版(免費,支持週期 7 個月),EE 即企業版,強調安全,付費使用,支持週期 24 個月。

Docker CE 分爲 stabletest, 和 nightly 三個更新頻道。每六個月發佈一個 stable 版本 (18.09, 19.03, 19.09...)。

CentOS 安裝 Docker CE

警告:切勿在沒有配置 Docker YUM 源的情況下直接使用 yum 命令安裝 Docker.

準備工作

Docker CE 支持 64 位版本 CentOS 7,並且要求內核版本不低於 3.10。 CentOS 7 滿足最低內核的要求,但由於內核版本比較低,部分功能(如 overlay2 存儲層驅動)無法使用,並且部分功能可能不太穩定。

可以使用 uname -r 查看linux的內核

安裝一些必要的系統工具:

sudo yum install -y yum-utils device-mapper-persistent-data lvm2

添加軟件源信息:

sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

更新 yum 緩存:

sudo yum makecache fast

安裝 Docker-ce:

sudo yum -y install docker-ce
安裝成功後,我們啓用並啓動服務:
sudo systemctl enable docker  #在服務器上設置設置開機啓動
sudo systemctl start docker   #啓動docker服務
查看是否啓動成功:

docker info 或者 docker version都可以看出docker是否啓動成功

 

-------------------------------------------至此docker的安裝算是完成了------------------------------------------

docker安裝nginx

 

1. docker hub上查詢 nginx

   docker search nginx

2. 下載最新版的 nginx
   docker pull nginx

下載完成後,使用docker images 查看下載的nginx 鏡像

 

 3、啓動跑個靜態網頁,測試下 nginx 容器

# 啓動一個名爲nginx(名字自己根據需求起名字,一般見名知意即可) 的容器 docker run --name nginx -d -p 80:80 -v /usr/docker/nginx/html:/usr/share/nginx/html nginx

# 默認容器對這個目錄有可讀寫權限,可以通過指定ro,將權限改爲只讀(readonly) # docker run --name my-nginx -d -p 80:80 -v /usr/docker/nginx/html:/usr/share/nginx/html:ro -d nginx

 4、部署nginx 項目並修改配置文件

 一般情況下docker啓動時進行配置,只要把配置文件的目錄掛載出來就可以,但是nginx卻是先加載一個主配置文件nginx.conf,在nginx.conf裏再加載conf.d目錄下的子配置文件(一般最少一個default.conf文件)。

docker run --name nginx -d -p 80:80 -v /usr/share/nginx/html:/usr/share/nginx/html:ro -v /etc/nginx/conf.d:/etc/nginx/conf.d:ro -v /var/log/nginx:/var/log/nginx -v /etc/nginx/nginx.conf /etc/nginx/nginx.conf  nginx

# 1. 第一個“-v”,是項目位置,把項目放到掛載到的目錄下即可

# 2. 第二個“-v”,是掛載的主配置文件"nginx.conf",注意"nginx.conf"文件內有一行 # "include /etc/nginx/conf.d/*.conf;" ,

# 這個include指向了子配置文件的路徑,此處注意include後所跟的路徑一定不能出錯

# 3. 第三個“-v”,把docker內子配置文件的路徑也掛載了出來,注意要與 “2.” 中include指向路徑一致

# 4. nginx.conf是掛載了一個文件(docker是不推薦這樣用的),conf.d掛載的是一個目錄

-v 宿主主機的目錄:容器的目錄

準備掛載的 nginx.conf :

# For more information on configuration, see:
#   * Official English Documentation: http://nginx.org/en/docs/
#   * Official Russian Documentation: http://nginx.org/ru/docs/

user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;

# Load dynamic modules. See /usr/share/nginx/README.dynamic.
include /usr/share/nginx/modules/*.conf;

events {
    worker_connections 1024;
}

http {
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile            on;
    tcp_nopush          on;
    tcp_nodelay         on;
    keepalive_timeout   65;
    types_hash_max_size 2048;

    include             /etc/nginx/mime.types;
    default_type        application/octet-stream;

    # Load modular configuration files from the /etc/nginx/conf.d directory.
    # See http://nginx.org/en/docs/ngx_core_module.html#include
    # for more information.
    include /etc/nginx/conf.d/*.conf;

}

 準備掛載的 default.conf :

server {

   listen 80;

   server_name localhost;

#charset koi8-r;

#access_log /var/log/nginx/host.access.log main;

location / {

    root /usr/share/nginx/html;

    index index.html index.htm;

   }

location /api{

   proxy_pass http://ip:port/api;

      # access_log "logs/test.log"; } }

 

 

 

此時訪問ip+端口即可

 

說明成功,如果出現403.則是找不到文件,可以參考https://blog.csdn.net/zhezhebie/article/details/73331335解決

 

------------------------------------nginx有很多功能,本人也在持續學習中--------------------------------------

下面使用自己的自定義配置,實現nginx的轉發功能

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章