關於網路那些事...

網路行銷,SEO,網路趨勢,教學文章,網頁設計,生活時事

Docker 安裝與 Laradock 入門

歷史簡介

Docker 起於 2013 年,以Linux容器(LXC)為基礎,主要的目的是提供輕量級的作業系統虛擬化服務

Docker 一開始是 dotCloud 公司內部的使用Go開發的一套業餘專案

後來專案被納入Linux基金會中,遵循 Apache 2.0協議,並且在Github上以開源的方式進行維護

當Docker開源備受關注之後, dotCloud 公司也改名為 Docker Inc

LXC 介紹

Docker 是以 LXC 為基礎進行封裝,讓用戶可以輕鬆地操作,使用的體驗就像在操作輕量級的虛擬機,而不必去管理容器設定

與傳統虛擬化的方式差別在於:

  • Docker
    Docker 容器是以核心引擎會以本地Linux作業系統為基礎,直接實作需要的虛擬化
    Docker 以秒級的方式實作啟動
    一台主機可以同時執行數千個容器
    能有效運在系統資源,基本上容器執行時,不會消耗額外系統資源
    只要啟動Docker引擎,其他容器原則上都是用空間隔離的方式建立起虛擬環境

  • 傳統虛擬服務
    傳統虛擬是以硬體為基礎,因此虛擬化必須在硬碟中額外安裝需要的作業系統,再啟動虛擬化
    傳統虛擬機啟動往往是以分鐘級
    一台主機僅能有效運作幾十個虛擬
    效能消耗大,每個虛擬機都佔據大量的資源
    傳統虛擬機每一個應用都需建立獨立的虛擬機

因此,簡單來說 Docker 基本上就是 Linux 環境,並且可以建立多個 Container 在這個環境上運作

基本組成

Docker 主要有三個基本組成:

  • Image 映像檔
  • Container 容器
  • Repository 庫

容器就像是一個簡易版的 linux 環境
裡面包含了網路,root權限,可執行應用的空間等,每一個容器都是安全獨立的平台
通常會透過容器,來執行安裝映像檔

Repository 則是與 Git 概念相似的映像檔分享平台

其中也包含 public, private repository

最知名的 Repository 提供平台包括 Docker Hub, Docker Pool... 等

使用者可以透過 pull 的方式下載到本地使用,也可以將本地建立的新映像檔 push 上去

Mac 安裝 Docker

Docker 最基本需要在一個Linux 環境上才能運作

因此,要在 macOS 執行,原則上還是要先安裝一個VM執行 Linux

但現在不必這麼麻煩,可以直接透過 Docker for Mac 來達成

可以直接按照官方的方式,下載 Docker.dmg 直接安裝

這裡介紹另一個透過 brew 安裝的方式

環境:
Homebrew 1.6.0 以上
macOS High Sierra 10.13.3 以上
Docker for Mac 18.03.0.ce 以上

安裝Docker

brew update
brew cask install docker

執行過程,Homebrew 會自動下載 Docker.dmg 並且安裝在本機

$ brew cask install docker
==> Tapping homebrew/cask
Cloning into '/usr/local/Homebrew/Library/Taps/homebrew/homebrew-cask'...
remote: Counting objects: 4076, done.
remote: Compressing objects: 100% (4058/4058), done.
remote: Total 4076 (delta 24), reused 728 (delta 14), pack-reused 0
Receiving objects: 100% (4076/4076), 1.28 MiB | 437.00 KiB/s, done.
Resolving deltas: 100% (24/24), done.
Tapped 0 formulae (4,085 files, 4MB)
==> Satisfying dependencies
==> Downloading https://download.docker.com/mac/stable/24312/Docker.dmg
######################################################################## 100.0%
==> Verifying checksum for Cask docker
==> Installing Cask docker
==> Creating Caskroom at /usr/local/Caskroom
==> We'll set permissions properly so we won't need sudo in the future.
Password:
==> Moving App 'Docker.app' to '/Applications/Docker.app'.
🍺  docker was successfully installed!

安裝完畢,就能在 Application 裡面看到 Docker (鯨魚圖示)

點擊圖示執行,第一次會要求提供管理者權限

成功執行之後,就能在 terminal 查看目前安裝版本

docker -v

Laradock 安裝

將 Laradock 下載到本地

cd ~/
git clone https://github.com/Laradock/laradock.git

進入laradoc資料夾,並複製 env-example 為 .env

cd laradoc/
cp env-example .env

執行 container

laradoc 預設提供了 workspace 這個 container,啟動之後就可以使用 composer、artisan

> docker-compose up -d nginx mysql phpmyadmin redis workspace 

Starting laradock_workspace_1  ... done
Creating laradock_mysql_1     ... done
Creating laradock_redis_1     ... done
Creating laradock_phpmyadmin_1 ... done
Starting laradock_php-fpm_1    ... done
Creating laradock_nginx_1      ... done

這時可以開啟另一個terminal視窗

進入 workspace 這個container

> docker-compose exec workspace bash

:/var/www# 

我們將 laravel 下載到這個容器中

:/var/www#  composer create-project --prefer-dist laravel/laravel blog

接著檢查檔案會多一個 blog laravel 專案資料夾

:/var/www# ls
Applications  Desktop    Downloads  Library  Music     Projects  redis-4.0.10
blog          Documents  laradock   Movies   Pictures  Public

這時,因為 nginx 預設會指向 workspace 容器中的 /var/www/pubic/
我們要把這路徑改成 /var/www/blog/public/

先回到 另一個terminal視窗,前往 laradock/nginx/sites/ 並且開啟 default.conf

cd laradock/nginx/sites/
>nano default.conf

接著將 root 路徑調整為 /var/www/blog/public 後, Ctrl+x 儲存

server {

    listen 80 default_server;
    listen [::]:80 default_server ipv6only=on;

    server_name localhost;
    root /var/www/blog/public;

重新啟動 docker

docker-compose down

docker-compose up -d nginx mysql phpmyadmin redis workspace

接著,在另一個 terminal視窗 再重新進入 workspace 容器

docker-compose exec workspace bash

接著瀏覽器開啟 localhost 就能看到laravel首頁

多專案

通常在本地環境,會開發多個Laravel專案

因此,可以建立一個專案資料夾,並共用同一個Laradock 即可

先建立專案資料夾

cd ~/
mkdir Projects

接著開啟 ~/Laradock/.env

設定 APP_CODE_PATH_HOST 指向 ~/Projects/

# Point to the path of your applications code on your host
# APP_CODE_PATH_HOST=../
APP_CODE_PATH_HOST=~/Projects/

執行 Workspace 容器

docker-compose exec workspace bash

執行後就會看到工作目錄指向 /var/www 即 ~/Projects目錄內容

重啟 Docker

cd ~/laradock/docker-compose down
docker-compose run -d nginx mysql phpmyadmin redis

Docker預設開機就會啟動
若是在本地開發機,可以設定需要時再手動啟動

sudo systemctl disable docker

設定 Host

自定義網址,可以直接用管理者權限設定hosts

sudo -i
cd /etc/hosts

在這裡面新增一行

127.0.0.1 laravel.site

https://philipzheng.gitbooks.io/docker_practice/content/introduction/why.html
https://ithelp.ithome.com.tw/articles/10194127


如果你喜歡我們的文章內容,請在這裡按個讚



最新文章推薦