標籤

bat (52) 作品 (38) python (21) shell (17) windows (11) 虛擬機 (11) php (10) CPP (6) KMS (6) 程式設計 (6) docker (5) 使用教學 (5) xoops (4) 公文 (4) Apache2 (3) Excel (3) juniper (3) 資料庫 (3) mysql (2) 免動手 (2) 資料結構 (2) 軟體廣播 (2) 電腦維修 (2) Android Studio (1) Apple IPAD管理 (1) Arduino (1) CSS (1) LAMP (1) NAS (1) Ubuntu (1) VHD (1) Windows Server (1) 原因 (1) 程式應用 (1) 程式積木 (1) 編輯器 (1) 雲端硬碟 (1)

2021年5月24日 星期一

Docker入門教學01_筆記與心得

文章分成

Docker入門教學01_筆記與心得

一、shell快速完成安裝docker
二、建立一個Docker版的Node.js程式,並完成部署與分享
三、利用ENTRYPOINT進行指定的程序
四、建立一個Nginx的Web服務器

Docker入門教學02_筆記與心得

五、建立Python3.8的開發環境
六、建立PostgreSql資料庫
七、使用pgadmin4管理PostgreSQL資料庫
八、建立自己的快取Redis

Docker入門教學03_筆記與心得

九、Docker Compose
十、Flask+Redis多服務開發部署
十一、建立Vue開發環境

一、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 了

將上述指令寫成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 Image
2.編寫程式
3.上傳到GitHub
4.DockerHub雲編譯打包
5.下載使用Docker Image

目標:

建立一個Docker版的Node.js程式,並完成部署與分享

實戰:

電腦一

1.建立Git->https://github.com/mark2470mark

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/

電腦二

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進行指定的程序

觀念:

ENTRYPOINT
ENTRYPOINT 具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找可用的Image
2.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

將上述指令寫成shell,快速完成安裝

檔案名稱: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

一、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 了

將上述指令寫成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 Image
2.編寫程式
3.上傳到GitHub
4.DockerHub雲編譯打包
5.下載使用Docker Image

目標:

建立一個Docker版的Node.js程式,並完成部署與分享

實戰:

電腦一

1.建立Git->https://github.com/mark2470mark

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/

電腦二

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進行指定的程序

觀念:

ENTRYPOINT
ENTRYPOINT 具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找可用的Image
2.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

將上述指令寫成shell,快速完成安裝

檔案名稱: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

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

沒有留言:

張貼留言

只要點兩下,傳統右鍵選單改回Win11右鍵選單

系列文章: 1. 只要點兩下,就能將Win11 右鍵選單 回復 傳統右鍵選單 2. 只要點兩下,傳統右鍵選單改回Win11右鍵選單 上一篇提到只要點兩下,就能將Win11選單回到傳統選單。但是有沒有方法能夠回到Win11選單呢?                    ...