成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

vagrant嘗鮮及docker搭建nignx與reids

Vicky / 844人閱讀

摘要:?jiǎn)?dòng)虛擬機(jī),命令關(guān)閉虛擬機(jī),查看運(yùn)行狀態(tài)。此外如果修改了,也是執(zhí)行該命令重新創(chuàng)建容器。該命令會(huì)同時(shí)會(huì)在前臺(tái)啟動(dòng)容器并打印容器內(nèi)的控制臺(tái)日志,方便查看是否啟動(dòng)成功。安裝通過(guò)部署也是十分簡(jiǎn)單,不用糾結(jié)版本和依賴及配置的問(wèn)題。

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

沙盒環(huán)境

在平時(shí)的學(xué)習(xí)和折騰中,比如說(shuō)看到了一個(gè)新鮮的東西,想搭建一個(gè)看看,把玩把玩。
這個(gè)時(shí)候,如果在自己的主系統(tǒng)中搗鼓各種不熟悉的應(yīng)用和服務(wù),
一來(lái)如果出問(wèn)題可能會(huì)把系統(tǒng)搞炸,二來(lái)系統(tǒng)本身的復(fù)雜環(huán)境也會(huì)影響到服務(wù)和應(yīng)用的搭建。

而且,把服務(wù)安裝在自己的系統(tǒng)里,和把服務(wù)安裝到遠(yuǎn)程主機(jī)上去,無(wú)論是ssh上去還是最終體驗(yàn)自己的成果,
那感覺(jué)是完全不一樣的。所以,我需要:

一個(gè)完全隔離的沙盒環(huán)境,并且是一個(gè)完整的linux系統(tǒng),就像一臺(tái)遠(yuǎn)程的主機(jī)那樣。

對(duì)一個(gè)買不起阿里云的碼農(nóng)來(lái)說(shuō),該虛擬環(huán)境能夠給人一種是遠(yuǎn)程主機(jī)的錯(cuò)覺(jué)。

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

vagrant vagrant的安裝

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

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的前端,因此如果沒(méi)有安裝virtualbox的話,得先安裝virtualbox。

安裝一臺(tái)虛擬機(jī)

執(zhí)行命令:

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

vagrant init命令會(huì)在本地目錄中創(chuàng)建vagrantFile。打開(kāi)這個(gè)文件,可以看到:

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

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

好,當(dāng)vagrant up執(zhí)行成功時(shí),虛擬機(jī)環(huán)境也就創(chuàng)建好了。
假如這個(gè)時(shí)候,打開(kāi)virtualbox,你會(huì)發(fā)現(xiàn)實(shí)際上vagrant創(chuàng)建了一個(gè)virtualbox的虛擬機(jī)。

Vagrantfile文件

Vagrantfile中配置了虛擬機(jī)的各項(xiàng)基本參數(shù)。

網(wǎng)絡(luò)配置

首先是虛擬機(jī)網(wǎng)絡(luò),和virtualbox一樣,它有三種類型的網(wǎng)絡(luò):

NAT映射。

host-only。

橋接。

vagrant默認(rèn)為在NAT映射,虛擬機(jī)是在一個(gè)私有網(wǎng)絡(luò)內(nèi)部,并且通過(guò)NAT方式訪問(wèn)外網(wǎng)。
這種方式主機(jī)是看不到虛擬機(jī)的,因此,需要配置端口映射:

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

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

第二種方式,私有網(wǎng)絡(luò),配置如下:

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

虛擬機(jī)和主機(jī)在同一個(gè)私有網(wǎng)絡(luò)內(nèi),主機(jī)和虛擬機(jī)能夠互相訪問(wèn)。
但是,這個(gè)私有網(wǎng)絡(luò)是被虛擬出來(lái)的,根本不連接外網(wǎng),所以虛擬機(jī)無(wú)法訪問(wèn)外網(wǎng)。
當(dāng)然,從網(wǎng)絡(luò)的角度來(lái)看,主機(jī)也在這個(gè)私有網(wǎng)絡(luò)里,而且主機(jī)能夠連接外網(wǎng)。
理論上可以通過(guò)配置將主機(jī)作為跳板(將私有網(wǎng)絡(luò)網(wǎng)卡和真實(shí)網(wǎng)卡橋接),讓這個(gè)私有網(wǎng)絡(luò)內(nèi)的虛擬機(jī)也能訪問(wèn)網(wǎng)絡(luò)。

第三鐘方式,橋接網(wǎng)絡(luò):

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

橋接網(wǎng)絡(luò)即將虛擬機(jī)置入和主機(jī)同一網(wǎng)絡(luò)內(nèi)。假如主機(jī)通過(guò)無(wú)線網(wǎng)卡連接了自己的wifi,那么虛擬機(jī)就像一臺(tái)真實(shí)機(jī)器一樣也連接到了這臺(tái)wifi,有該wifi網(wǎng)絡(luò)的ip地址。

可以按照自己的需要選擇。比如我,想催眠自己把這臺(tái)虛擬機(jī)想象成遠(yuǎn)程的服務(wù)器,就使用第三種方式,然后給個(gè)主機(jī)名,通過(guò)主機(jī)名訪問(wèn)里面的服務(wù)。

共享文件夾

默認(rèn)vagrant已經(jīng)將存放vagrantfile文件的目錄映射到虛擬機(jī)的/vagrant下。
當(dāng)然,也可以自己配置添加更多的目錄:

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

主機(jī)名不僅用于網(wǎng)絡(luò),當(dāng)有多臺(tái)虛擬機(jī)時(shí),也用來(lái)標(biāo)記區(qū)分不同的虛擬機(jī)。

內(nèi)存和CPu

默認(rèn)是512M,如下配置修改:

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

好了,當(dāng)配置完Vagrantfile文件后,使用vagrant reload命令重新使之生效。
vagrant up啟動(dòng)虛擬機(jī),vagrant halt命令關(guān)閉虛擬機(jī),vagrant status查看運(yùn)行狀態(tài)。vagrant destory刪除虛擬機(jī)。
最重要的是,vagrant sshssh到虛擬機(jī)上去。

docker和docker-compose的安裝

好了,現(xiàn)在我假象的遠(yuǎn)程服務(wù)器已經(jīng)搭建安裝完畢了。
接下來(lái),開(kāi)始在服務(wù)器上安裝些有趣的服務(wù)了。

先是安裝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的一個(gè)輔助工具,可以將一組docker的配置、啟動(dòng)參數(shù)等寫入到配置文件里去,然后通過(guò)docker compose管理。

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

pip install docker-compose
docker安裝nginx

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

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鏡像,在第一次啟動(dòng)時(shí),會(huì)自動(dòng)下載鏡像并創(chuàng)建docker容器。

在這里,docker鏡像不存儲(chǔ)任何的狀態(tài)信息,鏡像內(nèi)的服務(wù)所有會(huì)讀寫的文件目錄,都映射到了主機(jī)的文件系統(tǒng)來(lái)。

之后,執(zhí)行docker-compose up來(lái)初始化容器。此外:

如果修改了docker-compose.yml,也是執(zhí)行該命令重新創(chuàng)建容器。

該命令會(huì)同時(shí)會(huì)在前臺(tái)啟動(dòng)容器并打印容器內(nèi)的控制臺(tái)日志,方便查看是否啟動(dòng)成功。

切記容器內(nèi)部不存放狀態(tài),所有的文件系統(tǒng)讀寫都要映射出來(lái),以防丟失。

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

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

docker安裝redis

通過(guò)docker部署redis也是十分簡(jiǎn)單,不用糾結(jié)版本和依賴及配置的問(wèn)題。

首先是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即可啟動(dòng)。

最后

有了vagrant,我就在本地?fù)碛辛艘粋€(gè)完全的、方便的linux沙盒環(huán)境,可以用來(lái)嘗試各種新玩意,試驗(yàn)自己的新想法。

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

之后有時(shí)間,我準(zhǔn)備將我在一臺(tái)國(guó)外vps的小水管上的服務(wù),將其配置抽取為一組配置文件,之后使用這組配置文件,以后無(wú)論在那臺(tái)vps上都能快速部署。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/27434.html

相關(guān)文章

  • 使用Docker compose編排Laravel應(yīng)用

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

    antyiwei 評(píng)論0 收藏0
  • 使用Docker compose編排Laravel應(yīng)用

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

    Imfan 評(píng)論0 收藏0
  • 談?wù)?Docker 網(wǎng)絡(luò)

    摘要:基于近期學(xué)習(xí)的內(nèi)容,整理與網(wǎng)絡(luò)相關(guān)的知識(shí)。針對(duì)這一問(wèn)題,采用網(wǎng)絡(luò)來(lái)解決。但這篇博客的重點(diǎn)不在,我們可以在啟動(dòng)時(shí),為其指定一個(gè)分布式存儲(chǔ),從而使得我們能夠?qū)嶒?yàn)網(wǎng)絡(luò)。 基于近期學(xué)習(xí)的 Docker 內(nèi)容,整理與 Docker 網(wǎng)絡(luò)相關(guān)的知識(shí)。實(shí)驗(yàn)環(huán)境:Centos 7.4 Docker 版本如下: Client: Version: 18.03.1-ce API versio...

    mozillazg 評(píng)論0 收藏0
  • Docker overlay 網(wǎng)絡(luò)搭建

    摘要:快速開(kāi)始跨主機(jī)網(wǎng)絡(luò)方案原生第三方方案之前介紹了搭建集群,所以在此直接選用自帶的方案來(lái)做,和完美結(jié)合。直接檢查網(wǎng)絡(luò)列表發(fā)現(xiàn)已經(jīng)在其中。 Docker overlay 網(wǎng)絡(luò)搭建 Overlay網(wǎng)絡(luò)是指通過(guò)在現(xiàn)有網(wǎng)絡(luò)上疊加一個(gè)軟件定義的邏輯網(wǎng)絡(luò),最大程度的保留原有網(wǎng)絡(luò),通過(guò)定義其上的邏輯網(wǎng)絡(luò),實(shí)現(xiàn)業(yè)務(wù)邏輯,解決原有數(shù)據(jù)中心的網(wǎng)絡(luò)問(wèn)題。 快速開(kāi)始 Docker跨主機(jī)網(wǎng)絡(luò)方案 docker ...

    Xufc 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<