從零開始學 Docker - 為何它這麼重要?(Part 1)
1 | Docker 的三大功用: |
功用一:簡化部署流程
觀念解說
如果沒有使用 Docker,當你需要將應用程式部署到多台伺服器上時,必須逐一輸入指令進行設定。這不僅在環境安裝階段耗費大量時間且枯燥乏味,還容易因人為失誤而輸入錯誤指令。更重要的是,若需要在不同環境中進行部署,還得應對各種環境變數和配置的複雜性。
Docker 的推出為我們提供了一套強大的容器化解決方案。
透過使用 Docker,我們能夠將應用程式及其相依的環境、套件等打包成一個獨立、可攜帶的容器。這樣一來,無論在何處都能確保應用程式以相同的方式運行,避免受到不同環境的影響。
這種容器化的方法使得應用程式的部署和管理變得更加靈活、簡便,同時提供了更高度的一致性和可攜性。
實作示範
建立一個映像檔(Docker Image)
Docker Image 就像是一個獨立、可攜帶的程式部署包,其中包含了應用程式(在這個範例中是 Django 網站)以及它所需要的環境、套件等資源,都被一併打包在一起。
Start a Docker Container
1 | docker pull python:3.12-alpine |
Install packages in a Docker Container
1 | / # apk update |
Create a Django website in a Docker Container
1 | / # cd /home/ |
Django Settings
mysite/settings.py
1
2
3
4INSTALLED_APPS = [
#...
'app1',
]mysite/urls.py
1
2
3
4
5
6
7
8#...
from django.urls import re_path as url
from app1.views import hello_world
urlpatterns = [
#...
url(r'^hello/$', hello_world),
]app1/views.py
1
2
3
4
5#...
from django.http import HttpResponse
def hello_world(request):
return HttpResponse('Hello, World.')
Run a Django website in a Docker Container
1 | /home/mysite # python manage.py runserver 0.0.0.0:8000 |
Open your browser: http://localhost:8000/hello/
Create a new image from a container’s changes
1 | docker container ls -a |
部署一個 Django 網站
Use a Docker Image to create a Docker Container
1 | docker run --name mysite_002 -it -p 8000:8000 django_site:v1 /bin/sh |
哇!只要三行指令,就能把事先打包好的 Django 網站建立起來了~
Open your browser: http://localhost:8000/hello/
PS. 後續還有更進階的部署作法,像是 Dockerfile、Docker Compose 喔!