文章分成
一、shell快速完成安裝docker
二、建立一個Docker版的Node.js程式,並完成部署與分享
三、利用ENTRYPOINT進行指定的程序
四、建立一個Nginx的Web服務器
二、建立一個Docker版的Node.js程式,並完成部署與分享
三、利用ENTRYPOINT進行指定的程序
四、建立一個Nginx的Web服務器
五、建立Python3.8的開發環境
六、建立PostgreSql資料庫
七、使用pgadmin4管理PostgreSQL資料庫
八、建立自己的快取Redis
六、建立PostgreSql資料庫
七、使用pgadmin4管理PostgreSQL資料庫
八、建立自己的快取Redis
九、Docker Compose
十、Flask+Redis多服務開發部署
十一、建立Vue開發環境
十、Flask+Redis多服務開發部署
十一、建立Vue開發環境
一、shell快速完成安裝docker
應用程式運行環境
開發工具:
Visual Studio Code
Docker版本:
Docker Engine - Community
Docker安裝
Docker Engine - Community for Ubuntu 18.04(LTS)
指令
#系統更新
$sudo apt update
#安裝系統套件包
$sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent
$sudo apt-get install software-properties-common
或是
$sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
gnupg-agent \
software-properties-common
#加入Docker套件庫密鑰
$curl -fsSL https://download.docker.com/linux/ubuntu/gpg|sudo apt-key add -
9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88
#密鑰確認
$apt-key list
#最後8位作為fingerprint參數
$sudo apt-key fingerprint 0EBFCD88
#將Docker套件庫加入本地端套件庫
$sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
#檢查ubuntu核心版本 同 檢查套件庫加入的位置與內容
$lsb_release -cs
#檢查套件庫加入的位置與內容
$cat /etc/apt/sources.list|grep docker
#系統更新
$sudo apt update
#取得apt內docker-ce的內容
$sudo apt show docker-ce
#安裝Docker-ce
$sudo apt-get install docker-ce docker-ce-cli containerd.io
#檢驗安裝
$docker help
$docker version
$sudo docker run hellp-world
#檢查docker狀態
$service docker status
#將自己的使用者帳號webadmin加入至 docker 群組:
$sudo usermod -aG docker webadmin
登出再重新登入之後,就可以開始使用 Docker 了
#!/bin/bash
apt update
apt-get install apt-transport-https ca-certificates curl gnupg-agent
apt-get install software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg|sudo apt-key add -
apt-key fingerprint 0EBFCD88
add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
apt update
apt-get install docker-ce docker-ce-cli containerd.io
usermod -aG docker webadmin
2.編寫程式
3.上傳到GitHub
4.DockerHub雲編譯打包
5.下載使用Docker Image
2.將Git下載到本地端
$git clone https://github.com/mark2470mark/mynode
$cd mynode
3.取得Node.js 8.16.1 LTS的鏡像
$sudo docker image pull node:8.16.1
$sudo docker image ls
4.編寫Node.js程式
$pico hello.js
內容為
console.log("Hello World!!");
5.執行此程式,需先建立一個Node.js的執行環境(container/容器)
$pico Dockerfile
內容為
FROM node:8.16.1
RUN mkdir /src
COPY hello.js /src
CMD ["node","/src/hello.js"]
6.編譯打包我們的執行環境
$sudo docker image build -t mark2470mark/mynode:v01 .
$sudo docker image ls
7.在目前環境中執行我們的程式
$sudo docker container run mark2470mark/mynode:v01
8.Git 提交
$git add .
$git commit -m "mynode1"
$git push
$git tag v01
$git tag
$git push origin v01
9.Docker Hub 雲編譯->https://hub.docker.com/
ENTRYPOINT 具CMD功能,且可以跟CMD合用。
例如:
ENTRYPOINT ["curl"]
CMD ["http://www.skjh.chc.edu.tw/"]
container 啟動時會執行 curl http://www.skjh.chc.edu.tw/
$sudo docker image pull node:latest
或
$sudo docker pull node:latest
2.啟動container,執行container內命令
$sudo docker container run node:latest ls /etc/
$sudo docker container run node:latest cat /etc/hosts
$sudo docker container run node:latest cat /etc/os-release
3.執行node進程,顯示版本號
$sudo docker image ls
$sudo docker container run node:latest node -v
$pico Dockerfile
其內容為
FROM node:latest
ENTRYPOINT ["node"]
CMD [""]
$sudo docker image build -t mynode:latest .
$sudo docker image ls
$sudo docker container run mynode:latest -v
等同步驟3.$sudo docker container run node:latest node -v
$sudo docker container run mynode:latest -help
等同步驟3.$sudo docker container run node:latest node -help
5.使用CMD命令指定程序的預設參數
$pico Dockerfile
其內容為
FROM node:latest
ENTRYPOINT ["node"]
CMD ["-v"]
$sudo docker image build -t mynode:latest .
$sudo docker container run -it mynode:latest
等同步驟4.$sudo docker container run mynode:latest -v
等同步驟3.$sudo docker container run node:latest node -v
$sudo docker container run -it mynode:latest -help
等同步驟4.$sudo docker container run mynode:latest -help
等同步驟3.$sudo docker container run node:latest node -help
這意思是若指定參數-help,則原先的參數-v,則會被覆蓋。
$sudo docker container run -it mynode:latest -e "console.log('hello')"
-e 執行js腳本
2.Image的使用方法
(1)到 Nginx.org,查閱目前最新版
(2)到Docker Hub,查詢Nginx
image版本說明:
image中alpine的意思是?
答:alpine 等於最小化系统,功能相同。
$sudo docker pull nginx:1.19.0-alpine
$sudo docker image ls
2.列出container內目錄
$sudo docker container run nginx:1.19.0-alpine ls
3.確認container 核心版本
$sudo docker container run nginx:1.19.0-alpine cat /etc/os-release
4.列出/etc/nginx目錄下的檔案或目錄
$sudo docker container run nginx:1.19.0-alpine ls -R -l /etc/nginx
5. 列出nginx 全域設定檔案nginx.conf
$sudo docker container run nginx:1.19.0-alpine cat /etc/nginx/nginx.conf
6.列出Web虛擬主機的預設文件default.conf
$sudo docker container run nginx:1.19.0-alpine cat /etc/nginx/conf.d/default.conf
7.確認虛擬目錄下的內容
$sudo docker container run nginx:1.19.0-alpine ls -R -l /usr/share/nginx/html
8.啟動容器,確認效果
$sudo docker container run --name myweb -d -p 8088:80 nginx:1.19.0-alpine
$sudo docker container ls
9.服務動作確認
$curl http://127.0.0.1:8088
10.停止容器服務
$sudo docker container stop myweb
(1)停止所有容器與刪除所有容器
$sudo docker stop $(docker ps -a -q) && sudo docker rm $(docker ps -a -q)
11.啟動現有的container
$sudo docker container start myweb
12.列出所有container
$sudo docker container ls -a
13.刪除指定的container
$sudo docker container rm -f myweb
14.刪除所有的容器
$sudo docker container prune
15.如何在本地端建立自己的網頁目錄與相關的html
$mkdir myweb
$cd myweb
$pico index.html
其內容為
<html>
<head>
<title></title>
</head>
<body>
<h1>Nginx Container index.html</h1>
</body>
</html>
$sudo docker container run --name myweb -d -p 8088:80 -v /home/webadmin/myweb:/usr/share/nginx/html:ro nginx:1.19.0-alpine
應用程式運行環境
開發工具:
Visual Studio Code
Docker版本:
Docker Engine - Community
Docker安裝
Docker Engine - Community for Ubuntu 18.04(LTS)
指令
#系統更新
$sudo apt update
#安裝系統套件包
$sudo apt-get install software-properties-common
或是
$sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
gnupg-agent \
software-properties-common
#加入Docker套件庫密鑰
$curl -fsSL https://download.docker.com/linux/ubuntu/gpg|sudo apt-key add -
9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88
#密鑰確認
$apt-key list
#最後8位作為fingerprint參數
$sudo apt-key fingerprint 0EBFCD88
#將Docker套件庫加入本地端套件庫
$sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
#檢查ubuntu核心版本 同 檢查套件庫加入的位置與內容
$lsb_release -cs
#檢查套件庫加入的位置與內容
$cat /etc/apt/sources.list|grep docker
#系統更新
$sudo apt update
#取得apt內docker-ce的內容
$sudo apt show docker-ce
#安裝Docker-ce
$sudo apt-get install docker-ce docker-ce-cli containerd.io
#檢驗安裝
$docker help
$docker version
$sudo docker run hellp-world
#檢查docker狀態
$service docker status
#將自己的使用者帳號webadmin加入至 docker 群組:
$sudo usermod -aG docker webadmin
登出再重新登入之後,就可以開始使用 Docker 了
將上述指令寫成shell,快速完成安裝
檔名:DockerInstall.sh#!/bin/bash
apt update
apt-get install apt-transport-https ca-certificates curl gnupg-agent
apt-get install software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg|sudo apt-key add -
apt-key fingerprint 0EBFCD88
add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
apt update
apt-get install docker-ce docker-ce-cli containerd.io
usermod -aG docker webadmin
二、建立一個Docker版的Node.js程式,並完成部署與分享
觀念:
1建立Docker Image2.編寫程式
3.上傳到GitHub
4.DockerHub雲編譯打包
5.下載使用Docker Image
目標:
建立一個Docker版的Node.js程式,並完成部署與分享實戰:
電腦一
1.建立Git->https://github.com/mark2470mark2.將Git下載到本地端
$git clone https://github.com/mark2470mark/mynode
$cd mynode
3.取得Node.js 8.16.1 LTS的鏡像
$sudo docker image pull node:8.16.1
$sudo docker image ls
4.編寫Node.js程式
$pico hello.js
內容為
console.log("Hello World!!");
5.執行此程式,需先建立一個Node.js的執行環境(container/容器)
$pico Dockerfile
內容為
FROM node:8.16.1
RUN mkdir /src
COPY hello.js /src
CMD ["node","/src/hello.js"]
6.編譯打包我們的執行環境
$sudo docker image build -t mark2470mark/mynode:v01 .
$sudo docker image ls
7.在目前環境中執行我們的程式
$sudo docker container run mark2470mark/mynode:v01
8.Git 提交
$git add .
$git commit -m "mynode1"
$git push
$git tag v01
$git tag
$git push origin v01
9.Docker Hub 雲編譯->https://hub.docker.com/
電腦二
1.取得執行環境,執行應用
$sudo docker image pull mark2470/mynode:latest
$sudo docker container run mark2470/mynode:latest
$sudo docker image pull mark2470/mynode:v01
$sudo docker container run mark2470/mynode:v01
三、利用ENTRYPOINT進行指定的程序
觀念:
ENTRYPOINTENTRYPOINT 具CMD功能,且可以跟CMD合用。
例如:
ENTRYPOINT ["curl"]
CMD ["http://www.skjh.chc.edu.tw/"]
container 啟動時會執行 curl http://www.skjh.chc.edu.tw/
實戰:
1.取得最新版的node.js鏡像$sudo docker image pull node:latest
或
$sudo docker pull node:latest
2.啟動container,執行container內命令
$sudo docker container run node:latest ls /etc/
$sudo docker container run node:latest cat /etc/hosts
$sudo docker container run node:latest cat /etc/os-release
3.執行node進程,顯示版本號
$sudo docker image ls
$sudo docker container run node:latest node -v
$sudo docker container run node:latest node -help
4.設置node為預設的程序,然後顯示版本號$pico Dockerfile
其內容為
FROM node:latest
ENTRYPOINT ["node"]
CMD [""]
$sudo docker image build -t mynode:latest .
$sudo docker image ls
$sudo docker container run mynode:latest -v
等同步驟3.$sudo docker container run node:latest node -v
$sudo docker container run mynode:latest -help
等同步驟3.$sudo docker container run node:latest node -help
5.使用CMD命令指定程序的預設參數
$pico Dockerfile
其內容為
FROM node:latest
ENTRYPOINT ["node"]
CMD ["-v"]
$sudo docker image build -t mynode:latest .
$sudo docker container run -it mynode:latest
等同步驟4.$sudo docker container run mynode:latest -v
等同步驟3.$sudo docker container run node:latest node -v
$sudo docker container run -it mynode:latest -help
等同步驟4.$sudo docker container run mynode:latest -help
等同步驟3.$sudo docker container run node:latest node -help
這意思是若指定參數-help,則原先的參數-v,則會被覆蓋。
$sudo docker container run -it mynode:latest -e "console.log('hello')"
-e 執行js腳本
四、建立一個Nginx的Web服務器
觀念:
1.在Docker Hub找可用的Image2.Image的使用方法
實戰:
1.找到需要的Image,並下載到本地端(1)到 Nginx.org,查閱目前最新版
(2)到Docker Hub,查詢Nginx
image版本說明:
image中alpine的意思是?
答:alpine 等於最小化系统,功能相同。
$sudo docker pull nginx:1.19.0-alpine
$sudo docker image ls
2.列出container內目錄
$sudo docker container run nginx:1.19.0-alpine ls
3.確認container 核心版本
$sudo docker container run nginx:1.19.0-alpine cat /etc/os-release
4.列出/etc/nginx目錄下的檔案或目錄
$sudo docker container run nginx:1.19.0-alpine ls -R -l /etc/nginx
5. 列出nginx 全域設定檔案nginx.conf
$sudo docker container run nginx:1.19.0-alpine cat /etc/nginx/nginx.conf
6.列出Web虛擬主機的預設文件default.conf
$sudo docker container run nginx:1.19.0-alpine cat /etc/nginx/conf.d/default.conf
7.確認虛擬目錄下的內容
$sudo docker container run nginx:1.19.0-alpine ls -R -l /usr/share/nginx/html
8.啟動容器,確認效果
$sudo docker container run --name myweb -d -p 8088:80 nginx:1.19.0-alpine
$sudo docker container ls
9.服務動作確認
$curl http://127.0.0.1:8088
10.停止容器服務
$sudo docker container stop myweb
(1)停止所有容器與刪除所有容器
$sudo docker stop $(docker ps -a -q) && sudo docker rm $(docker ps -a -q)
11.啟動現有的container
$sudo docker container start myweb
12.列出所有container
$sudo docker container ls -a
13.刪除指定的container
$sudo docker container rm -f myweb
14.刪除所有的容器
$sudo docker container prune
15.如何在本地端建立自己的網頁目錄與相關的html
$mkdir myweb
$cd myweb
$pico index.html
其內容為
<html>
<head>
<title></title>
</head>
<body>
<h1>Nginx Container index.html</h1>
</body>
</html>
$sudo docker container run --name myweb -d -p 8088:80 -v /home/webadmin/myweb:/usr/share/nginx/html:ro nginx:1.19.0-alpine
$curl http://127.0.0.1:8088
檔案名稱:DockerNginxInstall.sh
檔案內容:
#!/bin/bash
docker container prune
docker pull nginx:1.19.0-alpine
mkdir myweb
cd myweb
echo "<html>" >index.html
echo "<head>" >>index.html
ec
檔案內容:
#!/bin/bash
docker container prune
docker pull nginx:1.19.0-alpine
mkdir myweb
cd myweb
echo "<html>" >index.html
echo "<head>" >>index.html
ec
一、shell快速完成安裝docker
Docker定義:應用程式運行環境
開發工具:
Visual Studio Code
Docker版本:
Docker Engine - Community
Docker安裝
Docker Engine - Community for Ubuntu 18.04(LTS)
指令
#系統更新
$sudo apt update
#安裝系統套件包
$sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent
$sudo apt-get install software-properties-common
或是
$sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
gnupg-agent \
software-properties-common
#加入Docker套件庫密鑰
$curl -fsSL https://download.docker.com/linux/ubuntu/gpg|sudo apt-key add -
9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88
#密鑰確認
$apt-key list
#最後8位作為fingerprint參數
$sudo apt-key fingerprint 0EBFCD88
#將Docker套件庫加入本地端套件庫
$sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
#檢查ubuntu核心版本 同 檢查套件庫加入的位置與內容
$lsb_release -cs
#檢查套件庫加入的位置與內容
$cat /etc/apt/sources.list|grep docker
#系統更新
$sudo apt update
#取得apt內docker-ce的內容
$sudo apt show docker-ce
#安裝Docker-ce
$sudo apt-get install docker-ce docker-ce-cli containerd.io
#檢驗安裝
$docker help
$docker version
$sudo docker run hellp-world
#檢查docker狀態
$service docker status
#將自己的使用者帳號webadmin加入至 docker 群組:
$sudo usermod -aG docker webadmin
登出再重新登入之後,就可以開始使用 Docker 了
#!/bin/bash
apt update
apt-get install apt-transport-https ca-certificates curl gnupg-agent
apt-get install software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg|sudo apt-key add -
apt-key fingerprint 0EBFCD88
add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
apt update
apt-get install docker-ce docker-ce-cli containerd.io
usermod -aG docker webadmin
2.編寫程式
3.上傳到GitHub
4.DockerHub雲編譯打包
5.下載使用Docker Image
2.將Git下載到本地端
$git clone https://github.com/mark2470mark/mynode
$cd mynode
3.取得Node.js 8.16.1 LTS的鏡像
$sudo docker image pull node:8.16.1
$sudo docker image ls
4.編寫Node.js程式
$pico hello.js
內容為
console.log("Hello World!!");
5.執行此程式,需先建立一個Node.js的執行環境(container/容器)
$pico Dockerfile
內容為
FROM node:8.16.1
RUN mkdir /src
COPY hello.js /src
CMD ["node","/src/hello.js"]
6.編譯打包我們的執行環境
$sudo docker image build -t mark2470mark/mynode:v01 .
$sudo docker image ls
7.在目前環境中執行我們的程式
$sudo docker container run mark2470mark/mynode:v01
8.Git 提交
$git add .
$git commit -m "mynode1"
$git push
$git tag v01
$git tag
$git push origin v01
9.Docker Hub 雲編譯->https://hub.docker.com/
ENTRYPOINT 具CMD功能,且可以跟CMD合用。
例如:
ENTRYPOINT ["curl"]
CMD ["http://www.skjh.chc.edu.tw/"]
container 啟動時會執行 curl http://www.skjh.chc.edu.tw/
$sudo docker image pull node:latest
或
$sudo docker pull node:latest
2.啟動container,執行container內命令
$sudo docker container run node:latest ls /etc/
$sudo docker container run node:latest cat /etc/hosts
$sudo docker container run node:latest cat /etc/os-release
3.執行node進程,顯示版本號
$sudo docker image ls
$sudo docker container run node:latest node -v
$pico Dockerfile
其內容為
FROM node:latest
ENTRYPOINT ["node"]
CMD [""]
$sudo docker image build -t mynode:latest .
$sudo docker image ls
$sudo docker container run mynode:latest -v
等同步驟3.$sudo docker container run node:latest node -v
$sudo docker container run mynode:latest -help
等同步驟3.$sudo docker container run node:latest node -help
5.使用CMD命令指定程序的預設參數
$pico Dockerfile
其內容為
FROM node:latest
ENTRYPOINT ["node"]
CMD ["-v"]
$sudo docker image build -t mynode:latest .
$sudo docker container run -it mynode:latest
等同步驟4.$sudo docker container run mynode:latest -v
等同步驟3.$sudo docker container run node:latest node -v
$sudo docker container run -it mynode:latest -help
等同步驟4.$sudo docker container run mynode:latest -help
等同步驟3.$sudo docker container run node:latest node -help
這意思是若指定參數-help,則原先的參數-v,則會被覆蓋。
$sudo docker container run -it mynode:latest -e "console.log('hello')"
-e 執行js腳本
2.Image的使用方法
(1)到 Nginx.org,查閱目前最新版
(2)到Docker Hub,查詢Nginx
image版本說明:
image中alpine的意思是?
答:alpine 等於最小化系统,功能相同。
$sudo docker pull nginx:1.19.0-alpine
$sudo docker image ls
2.列出container內目錄
$sudo docker container run nginx:1.19.0-alpine ls
3.確認container 核心版本
$sudo docker container run nginx:1.19.0-alpine cat /etc/os-release
4.列出/etc/nginx目錄下的檔案或目錄
$sudo docker container run nginx:1.19.0-alpine ls -R -l /etc/nginx
5. 列出nginx 全域設定檔案nginx.conf
$sudo docker container run nginx:1.19.0-alpine cat /etc/nginx/nginx.conf
6.列出Web虛擬主機的預設文件default.conf
$sudo docker container run nginx:1.19.0-alpine cat /etc/nginx/conf.d/default.conf
7.確認虛擬目錄下的內容
$sudo docker container run nginx:1.19.0-alpine ls -R -l /usr/share/nginx/html
8.啟動容器,確認效果
$sudo docker container run --name myweb -d -p 8088:80 nginx:1.19.0-alpine
$sudo docker container ls
9.服務動作確認
$curl http://127.0.0.1:8088
10.停止容器服務
$sudo docker container stop myweb
(1)停止所有容器與刪除所有容器
$sudo docker stop $(docker ps -a -q) && sudo docker rm $(docker ps -a -q)
11.啟動現有的container
$sudo docker container start myweb
12.列出所有container
$sudo docker container ls -a
13.刪除指定的container
$sudo docker container rm -f myweb
14.刪除所有的容器
$sudo docker container prune
15.如何在本地端建立自己的網頁目錄與相關的html
$mkdir myweb
$cd myweb
$pico index.html
其內容為
<html>
<head>
<title></title>
</head>
<body>
<h1>Nginx Container index.html</h1>
</body>
</html>
$sudo docker container run --name myweb -d -p 8088:80 -v /home/webadmin/myweb:/usr/share/nginx/html:ro nginx:1.19.0-alpine
$sudo apt-get install software-properties-common
或是
$sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
gnupg-agent \
software-properties-common
#加入Docker套件庫密鑰
$curl -fsSL https://download.docker.com/linux/ubuntu/gpg|sudo apt-key add -
9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88
#密鑰確認
$apt-key list
#最後8位作為fingerprint參數
$sudo apt-key fingerprint 0EBFCD88
#將Docker套件庫加入本地端套件庫
$sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
#檢查ubuntu核心版本 同 檢查套件庫加入的位置與內容
$lsb_release -cs
#檢查套件庫加入的位置與內容
$cat /etc/apt/sources.list|grep docker
#系統更新
$sudo apt update
#取得apt內docker-ce的內容
$sudo apt show docker-ce
#安裝Docker-ce
$sudo apt-get install docker-ce docker-ce-cli containerd.io
#檢驗安裝
$docker help
$docker version
$sudo docker run hellp-world
#檢查docker狀態
$service docker status
#將自己的使用者帳號webadmin加入至 docker 群組:
$sudo usermod -aG docker webadmin
登出再重新登入之後,就可以開始使用 Docker 了
將上述指令寫成shell,快速完成安裝
檔名:DockerInstall.sh#!/bin/bash
apt update
apt-get install apt-transport-https ca-certificates curl gnupg-agent
apt-get install software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg|sudo apt-key add -
apt-key fingerprint 0EBFCD88
add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
apt update
apt-get install docker-ce docker-ce-cli containerd.io
usermod -aG docker webadmin
二、建立一個Docker版的Node.js程式,並完成部署與分享
觀念:
1建立Docker Image2.編寫程式
3.上傳到GitHub
4.DockerHub雲編譯打包
5.下載使用Docker Image
目標:
建立一個Docker版的Node.js程式,並完成部署與分享實戰:
電腦一
1.建立Git->https://github.com/mark2470mark2.將Git下載到本地端
$git clone https://github.com/mark2470mark/mynode
$cd mynode
3.取得Node.js 8.16.1 LTS的鏡像
$sudo docker image pull node:8.16.1
$sudo docker image ls
4.編寫Node.js程式
$pico hello.js
內容為
console.log("Hello World!!");
5.執行此程式,需先建立一個Node.js的執行環境(container/容器)
$pico Dockerfile
內容為
FROM node:8.16.1
RUN mkdir /src
COPY hello.js /src
CMD ["node","/src/hello.js"]
6.編譯打包我們的執行環境
$sudo docker image build -t mark2470mark/mynode:v01 .
$sudo docker image ls
7.在目前環境中執行我們的程式
$sudo docker container run mark2470mark/mynode:v01
8.Git 提交
$git add .
$git commit -m "mynode1"
$git push
$git tag v01
$git tag
$git push origin v01
9.Docker Hub 雲編譯->https://hub.docker.com/
電腦二
1.取得執行環境,執行應用
$sudo docker image pull mark2470/mynode:latest
$sudo docker container run mark2470/mynode:latest
$sudo docker image pull mark2470/mynode:v01
$sudo docker container run mark2470/mynode:v01
三、利用ENTRYPOINT進行指定的程序
觀念:
ENTRYPOINTENTRYPOINT 具CMD功能,且可以跟CMD合用。
例如:
ENTRYPOINT ["curl"]
CMD ["http://www.skjh.chc.edu.tw/"]
container 啟動時會執行 curl http://www.skjh.chc.edu.tw/
實戰:
1.取得最新版的node.js鏡像$sudo docker image pull node:latest
或
$sudo docker pull node:latest
2.啟動container,執行container內命令
$sudo docker container run node:latest ls /etc/
$sudo docker container run node:latest cat /etc/hosts
$sudo docker container run node:latest cat /etc/os-release
3.執行node進程,顯示版本號
$sudo docker image ls
$sudo docker container run node:latest node -v
$sudo docker container run node:latest node -help
4.設置node為預設的程序,然後顯示版本號$pico Dockerfile
其內容為
FROM node:latest
ENTRYPOINT ["node"]
CMD [""]
$sudo docker image build -t mynode:latest .
$sudo docker image ls
$sudo docker container run mynode:latest -v
等同步驟3.$sudo docker container run node:latest node -v
$sudo docker container run mynode:latest -help
等同步驟3.$sudo docker container run node:latest node -help
5.使用CMD命令指定程序的預設參數
$pico Dockerfile
其內容為
FROM node:latest
ENTRYPOINT ["node"]
CMD ["-v"]
$sudo docker image build -t mynode:latest .
$sudo docker container run -it mynode:latest
等同步驟4.$sudo docker container run mynode:latest -v
等同步驟3.$sudo docker container run node:latest node -v
$sudo docker container run -it mynode:latest -help
等同步驟4.$sudo docker container run mynode:latest -help
等同步驟3.$sudo docker container run node:latest node -help
這意思是若指定參數-help,則原先的參數-v,則會被覆蓋。
$sudo docker container run -it mynode:latest -e "console.log('hello')"
-e 執行js腳本
四、建立一個Nginx的Web服務器
觀念:
1.在Docker Hub找可用的Image2.Image的使用方法
實戰:
1.找到需要的Image,並下載到本地端(1)到 Nginx.org,查閱目前最新版
(2)到Docker Hub,查詢Nginx
image版本說明:
image中alpine的意思是?
答:alpine 等於最小化系统,功能相同。
$sudo docker pull nginx:1.19.0-alpine
$sudo docker image ls
2.列出container內目錄
$sudo docker container run nginx:1.19.0-alpine ls
3.確認container 核心版本
$sudo docker container run nginx:1.19.0-alpine cat /etc/os-release
4.列出/etc/nginx目錄下的檔案或目錄
$sudo docker container run nginx:1.19.0-alpine ls -R -l /etc/nginx
5. 列出nginx 全域設定檔案nginx.conf
$sudo docker container run nginx:1.19.0-alpine cat /etc/nginx/nginx.conf
6.列出Web虛擬主機的預設文件default.conf
$sudo docker container run nginx:1.19.0-alpine cat /etc/nginx/conf.d/default.conf
7.確認虛擬目錄下的內容
$sudo docker container run nginx:1.19.0-alpine ls -R -l /usr/share/nginx/html
8.啟動容器,確認效果
$sudo docker container run --name myweb -d -p 8088:80 nginx:1.19.0-alpine
$sudo docker container ls
9.服務動作確認
$curl http://127.0.0.1:8088
10.停止容器服務
$sudo docker container stop myweb
(1)停止所有容器與刪除所有容器
$sudo docker stop $(docker ps -a -q) && sudo docker rm $(docker ps -a -q)
11.啟動現有的container
$sudo docker container start myweb
12.列出所有container
$sudo docker container ls -a
13.刪除指定的container
$sudo docker container rm -f myweb
14.刪除所有的容器
$sudo docker container prune
15.如何在本地端建立自己的網頁目錄與相關的html
$mkdir myweb
$cd myweb
$pico index.html
其內容為
<html>
<head>
<title></title>
</head>
<body>
<h1>Nginx Container index.html</h1>
</body>
</html>
$sudo docker container run --name myweb -d -p 8088:80 -v /home/webadmin/myweb:/usr/share/nginx/html:ro nginx:1.19.0-alpine
$curl http://127.0.0.1:8088
檔案名稱:DockerNginxInstall.sh
檔案內容:
#!/bin/bash
docker container prune
docker pull nginx:1.19.0-alpine
mkdir myweb
cd myweb
echo "<html>" >index.html
echo "<head>" >>index.html
echo "<title>myweb</title>" >>index.html
echo "</head>" >>index.html
echo "<body>" >>index.html
echo "<h1>Nginx Container index.html</h1>" >>index.html
echo "</body>" >>index.html
echo "</html>" >>index.html
docker container run --name myweb -d -p 8088:80 -v /home/webadmin/myweb:/usr/share/nginx/html:ro nginx:1.19.0-alpine
curl http://127.0.0.1:8088
檔案內容:
#!/bin/bash
docker container prune
docker pull nginx:1.19.0-alpine
mkdir myweb
cd myweb
echo "<html>" >index.html
echo "<head>" >>index.html
echo "<title>myweb</title>" >>index.html
echo "</head>" >>index.html
echo "<body>" >>index.html
echo "<h1>Nginx Container index.html</h1>" >>index.html
echo "</body>" >>index.html
echo "</html>" >>index.html
docker container run --name myweb -d -p 8088:80 -v /home/webadmin/myweb:/usr/share/nginx/html:ro nginx:1.19.0-alpine
curl http://127.0.0.1:8088
ho "<title>myweb</title>" >>index.html
echo "</head>" >>index.html
echo "<body>" >>index.html
echo "<h1>Nginx Container index.html</h1>" >>index.html
echo "</body>" >>index.html
echo "</html>" >>index.html
docker container run --name myweb -d -p 8088:80 -v /home/webadmin/myweb:/usr/share/nginx/html:ro nginx:1.19.0-alpine
curl http://127.0.0.1:8088
echo "</head>" >>index.html
echo "<body>" >>index.html
echo "<h1>Nginx Container index.html</h1>" >>index.html
echo "</body>" >>index.html
echo "</html>" >>index.html
docker container run --name myweb -d -p 8088:80 -v /home/webadmin/myweb:/usr/share/nginx/html:ro nginx:1.19.0-alpine
curl http://127.0.0.1:8088
資料來源:
1.Docker入門教學
2.Docker官網
3.在Ubuntu上安裝Docker Engine
4.解决docker:pull access denied for hello-wrold, repository does not exist or may require 'docker login'.
5.Ubuntu Linux 安裝 Docker 步驟與使用教學
6.Ubuntu Docker 安装
7.Dockerfile 中的 ENTRYPOINT
8.Nginx.org
9.Docker基础命令(一)
10.Error response from daemon: cannot stop container
2.Docker官網
3.在Ubuntu上安裝Docker Engine
4.解决docker:pull access denied for hello-wrold, repository does not exist or may require 'docker login'.
5.Ubuntu Linux 安裝 Docker 步驟與使用教學
6.Ubuntu Docker 安装
7.Dockerfile 中的 ENTRYPOINT
8.Nginx.org
9.Docker基础命令(一)
10.Error response from daemon: cannot stop container
影片:
沒有留言:
張貼留言