標籤

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入門教學02_筆記與心得

 文章分成

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開發環境

五、建立Python3.8的開發環境

觀念:

1.建立Python3.8的開發環境

實戰:

1.到Docker Hub,找所需的image

2.下載到本機
$sudo docker pull python:3.8.0-alpine3.10

3.進入 python 3.8.0 互動式視窗
$sudo docker container run --rm -it python:3.8.0-alpine3.10
>>> exit()

4.確認linux版本、pip與python 版本
$sudo docker container run --rm -it python:3.8.0-alpine3.10 cat /etc/os-release
$sudo docker container run --rm -it python:3.8.0-alpine3.10 pip -V
$sudo docker container run --rm -it python:3.8.0-alpine3.10 python -V

5.執行本機的python程式
$mkdir docker
$cd docker
$pico test.py
其內容為:
import numpy as np
myarray = np.array([1,2,3,4,5])
print(myarray)

(1)執行test.py
$sudo docker container run --rm -it -v /home/webadmin/docker:/workfolder:ro python:3.8.0-alpine3.10 python /workfolder/test.py
現在出現問題:ModuleNotFoundError: No module named 'numpy'
因為python:3.8.0-alpine3.10這個image功能有限,所以改用python:3.8.0
如何做?
A.建立Dockerfile
$pico Dockerfile
內容為
FROM python:3.8
 
RUN pip3 install numpy
RUN mkdir -p /workfolder
COPY ./test.py /workfolder/
 
CMD [ "python","/workfolder/test.py" ]
B.建立image
$sudo docker image build -t testpython:v01 .
$sudo docker image ls
C.容器運行  
$sudo docker container run --rm -it testpython:v01

六、建立PostgreSql資料庫

觀念:
利用 docker image 建立PostgreSql資料庫,使用版本9.6.20
實戰:



3.指令:
安裝postgres:9.6.20-alpine
$ sudo docker pull postgres:9.6.20-alpine

啟動PostgresSql資料庫 - webdb 帳號:webadmin 密碼:demo1234
$ sudo docker run --name webdb -p 5432:5432 -e POSTGRES_USER=webadmin -e POSTGRES_PASSWORD=demo1234 -d  postgres:9.6.20-alpine
Docker container 列表
$ sudo docker container ls 
檢查本機開放那些port
$ nmap 127.0.0.1
連接PostgreSql
$ psql -h localhost -U webadmin
查詢有多少資料表
webadmin=# select * from pg_tables;

離開PostgreSQL
webadmin=# \q
停止資料庫
$ sudo docker stop webdb
檢查本機開放那些port
$ nmap 127.0.0.1
Docker container 列表
$ sudo docker container ls 
 Docker container 列表
$ sudo docker container ls -a

啟動資料庫
$sudo docker start webdb
執行資料庫的bash
$sudo docker exec -it webdb /bin/bash
bash-5.0# cd /var/lib/postgresql/data
bash-5.0# ls
bash-5.0# cat pg_hba.conf

bash-5.0# cat postgresql.conf
bash-5.0# exit
                      
接下來,要提到的是資料庫文件脫離Docker Container 永久保存
建立專用的獨立使用的Volume
$sudo docker volume create --name v_webdb_data
$sudo docker volume ls
$sudo docker volume inspect v_webdb_data
          
清除舊的webdb
$sudo docker stop webdb
$sudo docker container rm webdb
$sudo docker container ls -a
建立新的webdb
$sudo docker run --name webdb -v v_webdb_data:/var/lib/postgresql/data -p 5432:5432 -e POSTGRE_USER=webadmin -e POSTGRE_PASSWORD=demo1234 -d postgres:9.6.16-alpine

如何檢查綁定的volume
$sudo docker inspect webdb
......
"Mounts": [
            {
                "Type": "volume",
                "Name": "v_webdb_data",
                "Source": "/var/lib/docker/volumes/v_webdb_data/_data",
                "Destination": "/var/lib/postgresql/data",
                "Driver": "local",
                "Mode": "z",
                "RW": true,
                "Propagation": ""
            }
        ],
........
        值得注意的是...當未來postgres:9.6.16-alpine更新到postgres:9.6.17-alpine,只要資料庫格式不變的條件下,可直接將其綁定volume,即可完成更新。


七、使用pgadmin4管理PostgreSQL資料庫

觀念:
pgadmin4 Docker image的基本使用(postgre資料庫管理工具)

官網:

Docker Hub
https://hub.docker.com/r/dpage/pgadmin4 (此image非官方認證的image)

實戰演練:
安裝
$sudo docker pull dpage/pgadmin4:4.29
$sudo docker image ls

啟動資料庫
$sudo docker pull postgres:9.6.20-alpine
$sudo docker volume create --name v_webdb_data
$sudo docker run --name webdb -v v_webdb_data:/var/lib/postgresql/data -p 5432:5432 -e POSTGRES_USER=webadmin -e POSTGRES_PASSWORD=demo1234 -d postgres:9.6.20-alpine
啟動pgadmin4
$sudo docker run --name pgadmin4 --rm -p 8080:80 \
      -e 'PGADMIN_DEFAULT_EMAIL=mark2470mark@skjh.chc.edu.tw' \
      -e 'PGADMIN_DEFAULT_PASSWORD=demo1234' \
      -d dpage/pgadmin4:4.29

$sudo docker container ls
此時開啟網頁http://IP:8080,即可看到

停止pgadmin4、 webdb
$sudo docker stop pgadmin4
$sudo docker stop webdb
顯示系統內的container
$sudo docker container ls -a
顯示運行中的container
$sudo docker container ls 

八、建立自己的快取Redis

觀念:
建立自己的快取Redis

官網:
Docker Hub
實戰:
$ sudo docker pull redis:6.0.9-alpine
$ sudo docker image ls

建立永久性的Volume
$ sudo docker volume create --name v_redis_data
$ sudo docker volume ls
$ sudo docker run --name redis1 -v v_redis_data:/data -p 6379:6379 -d redis:6.0.9-alpine redis-server --appendonly yes --requirepass demo1234
$ sudo docker container ls

確認本地打開的TCP port
$ netstat -nltp
$ sudo docker exec -it redis1 top

啟用client 連接redis1
$ sudo apt-get install redis-tools

$ redis-cli -h 127.0.0.1 -p 6379 -a demo1234
127.0.0.1:6379> ping
127.0.0.1:6379> info

127.0.0.1:6379> set data01 "hello, redis."
127.0.0.1:6379> get data01
127.0.0.1:6379> set data02 "mark2470mark"
127.0.0.1:6379> get data02  
127.0.0.1:6379> keys *

127.0.0.1:6379> exit


沒有留言:

張貼留言

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

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