文章分成
一、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開發環境
五、建立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
如何做?
$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
$sudo docker container run --rm -it testpython:v01
六、建立PostgreSql資料庫
觀念:
利用 docker image 建立PostgreSql資料庫,使用版本9.6.20
實戰:
1.到docker hub 找適合的image,關於 PostgreSql的官方image
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
$ 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
資料來源:
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
影片:
沒有留言:
張貼留言