docker建立網站伺服器

docker

上上次提到過docker,並寫了一些介紹。
這次來寫寫如何在一台機器中安裝docker與使用docker快速佈署伺服器環境

當然在此之前,請各位大大可以先看看https://www.gitbook.com/book/philipzheng/docker_practice/details
這裡面說明了眾多docker的基本操作、概念與知識
廢話不多說,

安裝docker

ubuntu中安裝很容易

curl -sSL https://get.docker.com/ubuntu/ | sudo sh

更多版本中裝docker?
當然,有些過於老舊的系統,可能不支援安裝docker。
這種時候,可能就要仔細看看docker的說明了
https://docs.docker.com/engine/installation/ubuntulinux/

使用?

我在這邊舉一個最簡單的例子
首先下載一個映像檔

docker pull ununtu:12.04

如果直接打docker pull ubuntu
他會幫你下載最新的ubuntu

“:”後面接的是tags

建立一個ubuntu的container

docker run -t -i  ubuntu:12.04 /bin/bash

這樣就會發現自己進入docker內?
如何退出??
以往大多程式都是exit退出,但在docker container內輸入exit會直接關閉container (mysql的container除外)

所以我們的跳出指令是ctrl+p+q

這樣我們就會直接退出container

出來後我們打以下指令觀看我們啟動中的docker container

$ docker ps
CONTAINER ID        IMAGE                            COMMAND                  CREATED             STATUS              PORTS                                      NAMES

如果要查看有建立沒有啟動的container

$ docker ps -a
CONTAINER ID        IMAGE                            COMMAND                  CREATED             STATUS              PORTS                                      NAMES

CONTAINER ID是這個container的編號
IMAGE 是映像檔
COMMAND 啟動方式
CREATED 是這個container的建立時間
STATUS 是這個container的啟動時間
PORTS 是這個container的使用ip
NAMES 是這個container的名稱

依照我剛剛簡單建立的container
因為沒有設定ip與names所以ip會是空的,names會是一個docker幫你建立的名子

接下來就是進去container 的指令啦

docker attach 

接下來就是進階一點的docker container建立

docker run -t -i --name test.n.tw -p 1050:80  -v ~/project/autostart:/var/www  ubuntu:12.04  /bin/bash

###這次在裡面安裝apache2+php+mysql

apt-get install apache2 libapache2-mod-php5 php5 php5-gd mysql-server php5-mysql

###這在邊提醒下,ubuntu12.04的container 並不能使用mysql 所以網站資料用link 的方式連接外面mysql container會比較好
###在ubuntu 14.04的就沒有這個問題

-p 這個指令是給PORTS
-v 是同步外面本機的資料夾到container的資料夾
–name 是自己給這個container名子

至於我這邊是怎麼proxy這個container
這邊是使用本機的nginx

###在nginx那邊加入反向
nano /etc/nginx/sites-available/test.n.tw.conf

server {
    listen 80;
    server_name test.n.tw;

    location / {
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header Host $http_host;
        proxy_set_header X-NginX-Proxy true;

        proxy_pass http://127.0.0.1:1050;
    }
}

### 接著在cd到/etc/nginx/sites-enabled/

cd /etc/nginx/sites-enabled/
ln -s ../sites-available/test.n.tw.conf

service nginx restart

### 到/etc/hosts裡面加入
127.0.0.1   test.n.tw

當然也有container proxy container啦。
但那個進進階在說明啦,
這次就先到這邊,
期待下次文章吧XD