国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

vagrant嘗鮮及docker搭建nignx與reids

Vicky / 834人閱讀

摘要:啟動虛擬機,命令關閉虛擬機,查看運行狀態。此外如果修改了,也是執行該命令重新創建容器。該命令會同時會在前臺啟動容器并打印容器內的控制臺日志,方便查看是否啟動成功。安裝通過部署也是十分簡單,不用糾結版本和依賴及配置的問題。

虛擬化、容器化是這幾年來十分流行的一個理念,它使用“隔離”的手段,將不同服務的依賴、配置等隔離開來,
大大降低了管理成本及維護負擔。
vagrant是一款抽象層次更高的虛擬環境配置工具,基于virtualbox或者docker。
通過配置文件定義虛擬環境的各項參數,之后vagrant就能自動幫你搞定這些繁瑣事情。
接下來是不是該折騰下vagrant如何模擬集群、搞devops了?
No、No,我使用這把牛刀的最初目的是為了殺雞,把它當一個方便的、自動化的linux虛擬機使用,哈哈。

沙盒環境

在平時的學習和折騰中,比如說看到了一個新鮮的東西,想搭建一個看看,把玩把玩。
這個時候,如果在自己的主系統中搗鼓各種不熟悉的應用和服務,
一來如果出問題可能會把系統搞炸,二來系統本身的復雜環境也會影響到服務和應用的搭建。

而且,把服務安裝在自己的系統里,和把服務安裝到遠程主機上去,無論是ssh上去還是最終體驗自己的成果,
那感覺是完全不一樣的。所以,我需要:

一個完全隔離的沙盒環境,并且是一個完整的linux系統,就像一臺遠程的主機那樣。

對一個買不起阿里云的碼農來說,該虛擬環境能夠給人一種是遠程主機的錯覺。

一個選擇是virtualbox,但是初始的配置和安裝很麻煩。并且要用virutlabox的命令行工具,有些麻煩。
所以,用vagrant解決這個問題。

vagrant vagrant的安裝

雖然debian的源里有vagrant,但是還是建議去官方網站下載安裝最新版,老版本的vagrant有一些bug,在之前使用的時候就碰到過。使用命令:

sudo apt-get install virtualbox
wget https://releases.hashicorp.com/vagrant/2.1.4/vagrant_2.1.4_x86_64.deb
sudo dpkg -i vagrant_2.1.4_x86_64.deb

由于vagrant是virtualbox的前端,因此如果沒有安裝virtualbox的話,得先安裝virtualbox。

安裝一臺虛擬機

執行命令:

mkdir ~/myproject && cd ~/myproject
vagrant init debian/contrib-jessie64
vagrant up # 下載box鏡像并且安裝

vagrant init命令會在本地目錄中創建vagrantFile。打開這個文件,可以看到:

Vagrant.configure("2") do |config|
  config.vm.box = "debian/contrib-jessie64"
end

config.vm.boxdebian/contrib-jessie64,這項配置指定該虛擬機使用什么鏡像初始化。
vagrant為我們預制了大量的豐富鏡像,成為box。比如說,上面的debian/contrib-jessie64,那么在vagrant初始化的時候就會下載對應的鏡像然后安裝虛擬機。
更多box可以在這里找到:https://app.vagrantup.com/box...

好,當vagrant up執行成功時,虛擬機環境也就創建好了。
假如這個時候,打開virtualbox,你會發現實際上vagrant創建了一個virtualbox的虛擬機。

Vagrantfile文件

Vagrantfile中配置了虛擬機的各項基本參數。

網絡配置

首先是虛擬機網絡,和virtualbox一樣,它有三種類型的網絡:

NAT映射。

host-only。

橋接。

vagrant默認為在NAT映射,虛擬機是在一個私有網絡內部,并且通過NAT方式訪問外網。
這種方式主機是看不到虛擬機的,因此,需要配置端口映射:

config.vm.network "forwarded_port", guest: 80, host: 8080

這樣,虛擬機的80端口就被映射為主機的8080端口。

第二種方式,私有網絡,配置如下:

config.vm.network "private_network", ip: "192.168.50.4"

虛擬機和主機在同一個私有網絡內,主機和虛擬機能夠互相訪問。
但是,這個私有網絡是被虛擬出來的,根本不連接外網,所以虛擬機無法訪問外網。
當然,從網絡的角度來看,主機也在這個私有網絡里,而且主機能夠連接外網。
理論上可以通過配置將主機作為跳板(將私有網絡網卡和真實網卡橋接),讓這個私有網絡內的虛擬機也能訪問網絡。

第三鐘方式,橋接網絡:

config.vm.network "public_network" # DHCP獲取ip
config.vm.network "public_network", ip: "192.168.0.17" # 靜態ip
config.vm.network "public_network", bridge: "en1: Wi-Fi (AirPort)" # 指定橋接網卡

橋接網絡即將虛擬機置入和主機同一網絡內。假如主機通過無線網卡連接了自己的wifi,那么虛擬機就像一臺真實機器一樣也連接到了這臺wifi,有該wifi網絡的ip地址。

可以按照自己的需要選擇。比如我,想催眠自己把這臺虛擬機想象成遠程的服務器,就使用第三種方式,然后給個主機名,通過主機名訪問里面的服務。

共享文件夾

默認vagrant已經將存放vagrantfile文件的目錄映射到虛擬機的/vagrant下。
當然,也可以自己配置添加更多的目錄:

config.vm.synced_folder "src/", "/srv/website"
主機名
config.vm.hostname = "myserver"

主機名不僅用于網絡,當有多臺虛擬機時,也用來標記區分不同的虛擬機。

內存和CPu

默認是512M,如下配置修改:

config.vm.provider "virtualbox" do |v|
  v.memory = 1024
  v.cpus = 2
end
vagrant使用

好了,當配置完Vagrantfile文件后,使用vagrant reload命令重新使之生效。
vagrant up啟動虛擬機,vagrant halt命令關閉虛擬機,vagrant status查看運行狀態。vagrant destory刪除虛擬機。
最重要的是,vagrant sshssh到虛擬機上去。

docker和docker-compose的安裝

好了,現在我假象的遠程服務器已經搭建安裝完畢了。
接下來,開始在服務器上安裝些有趣的服務了。

先是安裝docker:

sudo apt-get update
sudo apt-get install apt-transport-https ca-certificates 
     curl gnupg2 software-properties-common
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -
sudo add-apt-repository 
   "deb [arch=amd64] https://download.docker.com/linux/debian 
   $(lsb_release -cs) 
   stable"
sudo apt-get update
sudo apt-get install docker-ce

Docker Compose是docker的一個輔助工具,可以將一組docker的配置、啟動參數等寫入到配置文件里去,然后通過docker compose管理。

安裝docker-compose,這個工具是python編寫的,因此pip安裝它:

pip install docker-compose
docker安裝nginx

由于使用的是docker-compose,安裝nginx十分方便,全部配置文件化。
首先在本地新建一個目錄,所有與nginx有關的配置文件都放在這里:

mkdir nginx
cd nginx

然后,編輯docker-compose.yml文件:

# vim: set shiftwidth=2 tabstop=2 softtabstop=-1 expandtab:
version: "2"
services:
  nginx:
    image: nginx:stable-alpine
    network_mode: host
    volumes:
      - ./conf:/etc/nginx
      - ./html:/var/www/html
      - ./log:/var/log/nginx
    ports:
      - "80:80"
    environment:
      - NGINX_HOST=your.domain
      - NGINX_PORT=80

其中,nginx:stable-alpine為選擇的docker鏡像,在第一次啟動時,會自動下載鏡像并創建docker容器。

在這里,docker鏡像不存儲任何的狀態信息,鏡像內的服務所有會讀寫的文件目錄,都映射到了主機的文件系統來。

之后,執行docker-compose up來初始化容器。此外:

如果修改了docker-compose.yml,也是執行該命令重新創建容器。

該命令會同時會在前臺啟動容器并打印容器內的控制臺日志,方便查看是否啟動成功。

切記容器內部不存放狀態,所有的文件系統讀寫都要映射出來,以防丟失。

之后,還需要配置nginx的配置文件,從docker-compose.yml可以看到,
配置文件放在了./conf中。我是直接從原生安裝的nginx的配置文件中直接拷貝過來的一份。
當一切都配置好后,使用docker-compose start啟動服務。之后,使用docker ps就能夠看到運行中的服務了。使用docker-compose stop停止服務。

可以看到,使用docker將nginx容器化后,不僅運行實例和整個系統隔離,
而且,nginx的相關的所有配置可以全部存放在一個局部目錄內。甚至還可以直接提交到git上去。
在另外一臺機器,無論環境如何,只要安裝了docker和docker-compose,就能從這些配置文件中docker-compose up一下,快速創建并部署nginx服務。

docker安裝redis

通過docker部署redis也是十分簡單,不用糾結版本和依賴及配置的問題。

首先是dokcer-compose.yml文件:

# vim: set shiftwidth=2 tabstop=2 softtabstop=-1 expandtab:

version: "2"
services:
  redis:
    image: redis:4.0.5-alpine
    network_mode: host
    volumes:
      - ./data:/data
    ports:
      - "6379:6379"
    command: [redis-server, "--appendonly", "yes"]

好了,之后docer-compose up初始化,docker-compose start即可啟動。

最后

有了vagrant,我就在本地擁有了一個完全的、方便的linux沙盒環境,可以用來嘗試各種新玩意,試驗自己的新想法。

有了docker,我可以先將需要的服務在本地配置、調試好。由于docker的隔離性,所以只要本地的docker配置和服務配置無誤,那么就能夠用這些配置直接快速的在遠程服務器上部署。

之后有時間,我準備將我在一臺國外vps的小水管上的服務,將其配置抽取為一組配置文件,之后使用這組配置文件,以后無論在那臺vps上都能快速部署。

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/27434.html

相關文章

  • 使用Docker compose編排Laravel應用

    摘要:代碼目錄使用數據卷從容器內映射到宿主機,配置文件等也是通過數據卷映射到容器內。比如中這里與的連接方式這是鏡像構建,這里改了服務器,并安裝了若干擴展。使用啟動啟動所有服務命令行總結具體可訪問 前言 Laravel官方開發環境推薦的是Homestead(其實就是一個封裝好的Vagrant box),我感覺這個比較重,于是自己用Docker compose編排了一套開發環境,在這里分享下。 ...

    antyiwei 評論0 收藏0
  • 使用Docker compose編排Laravel應用

    摘要:代碼目錄使用數據卷從容器內映射到宿主機,配置文件等也是通過數據卷映射到容器內。比如中這里與的連接方式這是鏡像構建,這里改了服務器,并安裝了若干擴展。使用啟動啟動所有服務命令行總結具體可訪問 前言 Laravel官方開發環境推薦的是Homestead(其實就是一個封裝好的Vagrant box),我感覺這個比較重,于是自己用Docker compose編排了一套開發環境,在這里分享下。 ...

    Imfan 評論0 收藏0
  • 談談 Docker 網絡

    摘要:基于近期學習的內容,整理與網絡相關的知識。針對這一問題,采用網絡來解決。但這篇博客的重點不在,我們可以在啟動時,為其指定一個分布式存儲,從而使得我們能夠實驗網絡。 基于近期學習的 Docker 內容,整理與 Docker 網絡相關的知識。實驗環境:Centos 7.4 Docker 版本如下: Client: Version: 18.03.1-ce API versio...

    mozillazg 評論0 收藏0
  • Docker overlay 網絡搭建

    摘要:快速開始跨主機網絡方案原生第三方方案之前介紹了搭建集群,所以在此直接選用自帶的方案來做,和完美結合。直接檢查網絡列表發現已經在其中。 Docker overlay 網絡搭建 Overlay網絡是指通過在現有網絡上疊加一個軟件定義的邏輯網絡,最大程度的保留原有網絡,通過定義其上的邏輯網絡,實現業務邏輯,解決原有數據中心的網絡問題。 快速開始 Docker跨主機網絡方案 docker ...

    Xufc 評論0 收藏0

發表評論

0條評論

Vicky

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<