成都商城類網(wǎng)站設(shè)計(jì)淘寶店鋪怎么引流推廣

docker學(xué)習(xí)
文章目錄
- 一、下載安裝docker
- (一)Windows桌面應(yīng)用安裝
- (二)Linux命令安裝
- 二、windows注冊登錄docker
- 三、Docker的常規(guī)操作
- (一)、基本的 Docker 命令
- (二)、鏡像操作
- (三)、容器的配置
- (四)、登錄遠(yuǎn)程倉庫
- 四、鏡像管理
- (一)、搜索官方倉庫鏡像
- (二)、獲取鏡像
- (三)、導(dǎo)出鏡像
- (四)、導(dǎo)入鏡像
- (五)、刪除鏡像
- (六)、查看鏡像詳細(xì)信息
- (七)、上傳自己公共倉庫
- 五、管理docker容器
- (一)、容器的啟用/停止
- (二)、進(jìn)入容器的方法
- (三)、容器與主機(jī)間的數(shù)據(jù)傳輸
- 六、docker 數(shù)據(jù)卷的管理
- (一)、掛載時(shí)創(chuàng)建卷
- (二)、提前創(chuàng)建數(shù)據(jù)卷
- 七、項(xiàng)目實(shí)戰(zhàn)(附錄)
- 1,安裝SSL證書
- 2,配置nginx
- 3,重啟nginx服務(wù)器
前言:
Docker
通過虛擬化安裝和運(yùn)行應(yīng)用程序的操作系統(tǒng)來簡化構(gòu)建、運(yùn) 行、管理和分發(fā)應(yīng)用程序的過程。 目的是使應(yīng)用程序在不同的系統(tǒng)環(huán) 境中高效工作。
一、下載安裝docker
(一)Windows桌面應(yīng)用安裝
-
下載安裝包
官網(wǎng):https://www.docker.com/
-
安裝Docker
點(diǎn)擊安裝包,自動安裝
成功安裝,重新啟動
-
重新啟動如果版本不對會報(bào)錯(cuò)內(nèi)存較低
報(bào)錯(cuò)使用命令進(jìn)行安裝
wsl --update
然后就可以正常打開了
(二)Linux命令安裝
-
安裝要求
更新軟件包索引并安裝依賴包:
sudo apt update sudo apt install apt-transport-https ca-certificates curl software-properties-common
添加 Docker 官方 GPG 密鑰:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive- keyring.gpg
添加 Docker APT 倉庫:
echo "deb [signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
-
添加國內(nèi)yum源
根據(jù)每個(gè)系統(tǒng)的不同的yum源進(jìn)行配置
windows:
{"builder": {"gc": {"defaultKeepStorage": "20GB","enabled": true}},"experimental": false,"features": {"buildkit": true},"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn","https://registry.docker-cn.com","http://hub-mirror.c.163.com","https://mirror.ccs.tencentyun.com"] }
-
開始安裝
sudo apt update sudo apt install docker-ce
-
啟動docker服務(wù)
sudo systemctl start docker
-
驗(yàn)證docker是否安裝成功
docker --version
二、windows注冊登錄docker
Linux系統(tǒng)直接去到官網(wǎng)或者使用的時(shí)候在進(jìn)行注冊
打開軟件選擇登錄
登記注冊賬號
登錄賬號
打開桌面應(yīng)用
登錄中
登錄成功
三、Docker的常規(guī)操作
(一)、基本的 Docker 命令
-
檢查 docker 的版本
docker --version
-
活動容器的列表
docker ps
在這里插入圖片描述
-
全部容器列表
docker ps -a
-
系統(tǒng)中鏡像列表
docker images
-
使用鏡像名稱創(chuàng)建容器
docker run ARGUMENT IMAGE-NAME
這里的參數(shù)
-itd
(或者-i
-t
-d
) 是指:i ? 交互模式
t ? 連接到顯示終端
d ? 后臺運(yùn)行模式
我們可以使用我們所需的任何參數(shù)來運(yùn)行容器
-
停止容器
docker stop CONTAINER-ID/NAME
-
刪除容器
docker rm CONTAINER-ID/NAME docker rm -f CONTAINER-ID/NAME // 強(qiáng)制刪除
-
刪除鏡像
docker rmi IMAGE-ID
-
訪問容器
docker exec -it container name /bin/bash
(二)、鏡像操作
從碼頭工人中心 (docker.com)上獲取鏡像
Docker 鏡像倉庫地址:地址格式一般是<域名/ip>[:端口號] ,默認(rèn)地址是Dcoker Hub官方地址
倉庫名:這里的倉庫是兩段式名稱,即<用戶名>/<軟件名>,
-
查看本地?fù)碛心男╃R像
docker image
-
刪除鏡像
docker rmi -f 鏡像名稱
-
查看docker中可以使用的操作
docker --help
-
給鏡像重新打上一個(gè)tag
docker tag nginx nginx:test
-
將鏡像導(dǎo)出成一個(gè)獨(dú)立的文件
docker save nginx >/tmp/nginx.tar.gz
-
如果無法連接到互聯(lián)網(wǎng),使用這個(gè)命令導(dǎo)出
docker load</tmp/nginx.tar.gz
(三)、容器的配置
-
啟動第一個(gè)容器
以某個(gè)鏡像為基礎(chǔ)運(yùn)行一個(gè)容器
docker run --name webserver -d -p:8100:80 nginx
-
訪問容器地址
(四)、登錄遠(yuǎn)程倉庫
-
登錄命令
$ docker login
-
退出登錄
$ docker logout
四、鏡像管理
(一)、搜索官方倉庫鏡像
docker search <imoge_name>
$ docker login$ docker search nginx | head -3
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
nginx Official build of Nginx. 18888 [OK]
unit Official build of NGINX Unit: Universal Web … 8 [OK]
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-vKwrZnwG-1692692682546)(./images/image-20230822104621254.png)]
(二)、獲取鏡像
docker pull <imoge_name>:<tog>
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-wEA48DFt-1692692682546)(./images/image-20230822104723490.png)]
$ docker pull nginx:1.25.2-perl #下載1.25.2版本
1.25.2-perl: Pulling from library/nginx
52d2b7f179e3: Already exists
fd9f026c6310: Already exists
055fa98b4363: Already exists
96576293dd29: Already exists
a7c4092be904: Already exists
e3b6889c8954: Already exists
da761d9a302b: Already exists
60c2235cc8b6: Pull complete
Digest: sha256:da5e596e27292bedea3c1a59fbef9852e7b0b7e5c21178982c4cc78cb2d700f4
Status: Downloaded newer image for nginx:1.25.2-perl
docker.io/library/nginx:1.25.2-perlWhat's Next?View summary of image vulnerabilities and recommendations → docker scout quickview nginx:1.25.2-perl
$ docker image ls # 查看鏡像
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx 1.25.2-perl a465b9c519a0 5 days ago 236MB
nginx latest eea7b3dcba7e 5 days ago 187MB
(三)、導(dǎo)出鏡像
docker image save <imoge_name>:<tog> >/路徑/<imoge_name>.tar.gz
$ docker tag nginx nginx:test # 給鏡像重新打上一個(gè)tag
$ docker image save nginx:1.25.2-perl > C:\Users\daiyu\Desktop\nginx-v2.0.tar.gz #Windows與Linux一樣
$ docker load</tmp/nginx.tar.gz #如果沒有辦法訪問外網(wǎng)的情況下可以使用這個(gè)命令進(jìn)行導(dǎo)出
(四)、導(dǎo)入鏡像
docker image load i <imoge_name>.tar.gz
$ docker image load i nginx-v2.0.tar.gz$ docker image ls
(五)、刪除鏡像
$ docker image rm nginx:1.25.2-perl
(六)、查看鏡像詳細(xì)信息
$ docker image inspect nginx
PS C:\Users\daiyu\Desktop> docker image inspect nginx
[{"Id": "sha256:eea7b3dcba7ee47c0d16a60cc85d2b977d166be3960541991f3e6294d795ed24","RepoTags": ["nginx:latest"],"RepoDigests": ["nginx@sha256:104c7c5c54f2685f0f46f3be607ce60da7085da3eaa5ad22d3d9f01594295e9c"],"Parent": "","Comment": "","Created": "2023-08-16T09:50:55.765544033Z","Container": "50b019921f82064e1d8af7e2723929d4c5fafcfd6d8b03595711bd1e455dd3c4","ContainerConfig": {"Hostname": "50b019921f82","Domainname": "","User": "","AttachStdin": false,"AttachStdout": false,"AttachStderr": false,"ExposedPorts": {"80/tcp": {}},"Tty": false,"OpenStdin": false,"StdinOnce": false,"Env": ["PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin","NGINX_VERSION=1.25.2","NJS_VERSION=0.8.0","PKG_RELEASE=1~bookworm"],"Cmd": ["/bin/sh","-c","#(nop) ","CMD [\"nginx\" \"-g\" \"daemon off;\"]"],"Image": "sha256:d59ed5fe14c2a306f94488f41ddc8fb060312ee31997f5e077a4c4b29b19114e","Volumes": null,"WorkingDir": "","Entrypoint": ["/docker-entrypoint.sh"],"OnBuild": null,"Labels": {"maintainer": "NGINX Docker Maintainers <docker-maint@nginx.com>"},"StopSignal": "SIGQUIT"},"DockerVersion": "20.10.23","Author": "","Config": {"Hostname": "","Domainname": "","User": "","AttachStdin": false,"AttachStdout": false,"AttachStderr": false,"ExposedPorts": {"80/tcp": {}},"Tty": false,"OpenStdin": false,"StdinOnce": false,"Env": ["PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin","NGINX_VERSION=1.25.2","NJS_VERSION=0.8.0","PKG_RELEASE=1~bookworm"],"Cmd": ["nginx","-g","daemon off;"],"Image": "sha256:d59ed5fe14c2a306f94488f41ddc8fb060312ee31997f5e077a4c4b29b19114e","Volumes": null,"WorkingDir": "","Entrypoint": ["/docker-entrypoint.sh"],"OnBuild": null,"Labels": {"maintainer": "NGINX Docker Maintainers <docker-maint@nginx.com>"},"StopSignal": "SIGQUIT"},"Architecture": "amd64","Os": "linux","Size": 186639842,"VirtualSize": 186639842,"GraphDriver": {"Data": {"LowerDir": "/var/lib/docker/overlay2/a5a633a93c5ecaf9c0dd7c64176078a19f62e4902b72671aac868cea4f34d62c/diff:/var/lib/docker/overlay2/926886d52dd0b566a6a96ac3fe3481b9f5e5b92fa7ae354e8b19c3dc8e37ca69/diff:/var/lib/docker/overlay2/14689eb83ef85938fbfc46af9987f07c5ef1f4e058a75ab5b2021c97903a1028/diff:/var/lib/docker/overlay2/57a9f4fdcb8ba210cd81e460f116e30ea33be8abb820c8f3bdb49c965fb46e61/diff:/var/lib/docker/overlay2/5485a2ea4a95a9bdefe35136dc9c41958d5a860dd618171d0679fec6becdcc36/diff:/var/lib/docker/overlay2/145318f6dd8347b6db03a6f60e976f85a16c04067e6301cbe2dfe6ef5113a5f1/diff", "MergedDir": "/var/lib/docker/overlay2/ff41488d38d52c94f16d3ef5bf823f2183235420cc795fb523f64a7ced1c5979/merged","UpperDir": "/var/lib/docker/overlay2/ff41488d38d52c94f16d3ef5bf823f2183235420cc795fb523f64a7ced1c5979/diff","WorkDir": "/var/lib/docker/overlay2/ff41488d38d52c94f16d3ef5bf823f2183235420cc795fb523f64a7ced1c5979/work"},"Name": "overlay2"},"RootFS": {"Type": "layers","Layers": ["sha256:511780f88f80081112aea1bfdca6c800e1983e401b338e20b2c6e97f384e4299","sha256:4713cb24eeff341d0c36343149beba247572a5ff65c2be5b5d9baafb345c7393","sha256:d0a62f56ef413f60049bc87e43e60032b2a2ab8d931e15b86ee0286c85ae91a2","sha256:8a7e12012e6f60450e6d2d777b2a2c2256d34a0ccd84d605f72cc5329a87c8b8","sha256:e161c3f476b5199ab13856c7e190ed12a6562b7be059c7026ae9f594e1abbcaf","sha256:6fb960878295b567d25900b590157b976d080340caeaa8bf8c46d38c01b4537d","sha256:563c64030925e9016a2329d3a2b7d47b0c90931baf5d2d0aa926c4c8d94ab894"]},"Metadata": {"LastTagTime": "0001-01-01T00:00:00Z"}}
]
(七)、上傳自己公共倉庫
公共倉庫地址:nginx Tags (docker.com)
選擇登錄進(jìn)行創(chuàng)建倉庫
新建倉庫
上傳鏡像
$ docker tag nginx daiyunjie/adlerian_nginx
$ docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest eea7b3dcba7e 5 days ago 187MB
daiyunjie/adlerian_nginx latest eea7b3dcba7e 5 days ago 187MB
$ docker push daiyunjie/adlerian_nginx
Using default tag: latest
The push refers to repository [docker.io/daiyunjie/adlerian_nginx]
563c64030925: Mounted from library/nginx
6fb960878295: Mounted from library/nginx
e161c3f476b5: Mounted from library/nginx
8a7e12012e6f: Mounted from library/nginx
d0a62f56ef41: Mounted from library/nginx
4713cb24eeff: Mounted from library/nginx
511780f88f80: Mounted from library/nginx
latest: digest: sha256:48a84a0728cab8ac558f48796f901f6d31d287101bc8b317683678125e0d2d35 size: 1778
上傳成功
五、管理docker容器
(一)、容器的啟用/停止
$ docker container ls #查看已經(jīng)啟動的容器
$ docker stop 43737ef7d61e #終止運(yùn)行中的容器
$ docker start 43737ef7d61e #重新啟動之前終止過的容器
$ docker kill 43737ef7d61e #終止運(yùn)行中的容器
$ docker container rm 43737ef7d61e #強(qiáng)制刪除某個(gè)容器
(二)、進(jìn)入容器的方法
$ docker run --name <name> -d -p:8100:80 nginx #創(chuàng)建一個(gè)容器<name>自己起名字
$ docker exec -it <name/ID> /bin/bash #進(jìn)入容器
$ cat /etc/nginx/conf.d/default.conf #nginx配置文件
$ exit #退出
(三)、容器與主機(jī)間的數(shù)據(jù)傳輸
$ docker cp webserver:/etc/nginx/conf.d/default.conf . #傳輸?shù)街鳈C(jī)
$ vim default.conf #修改
$ docker cp default.conf webserver:/etc/nginx/conf.d/default.conf #傳輸?shù)饺萜?/span>
$ docker restart webserver # 重啟
六、docker 數(shù)據(jù)卷的管理
(一)、掛載時(shí)創(chuàng)建卷
$ mkdir /opt/docker-volumes
PS C:\Users\daiyu\Desktop> mkdir /opt/docker-volumes #創(chuàng)建卷目錄: C:\optMode LastWriteTime Length Name
---- ------------- ------ ----
d----- 2023/8/22 15:10 docker-volumes$ docker rm -f $(docker ps -a -q) #強(qiáng)制刪除所用容器$ docker container run -itd --name webserver -p 8080:80 -v /opt/docker-volumes/webserver:/usr/share/nginx/html nginx
025e425bcf03148bce7ceffbec1a1bf41e43f14dab5b70af021edacef049f6cc$ curl http://localhost:8080
$ echo "hello docker volume" > /opt/docker-volumes/webserver/index.html$ curl http://localhost:8080
(二)、提前創(chuàng)建數(shù)據(jù)卷
$ docker volume create --name webserver \
$ docker volume create --name webserver \
$ docker volume inspect webserver
$ docker container run -itd --name webserver -p 8080:80 -v webserver:/usr/share/nginx/html nginx
$ curl http://localhost:8081
$ echo "hello docker webserver" > /var/lib/docker/volumes/webserver/index.html
$ curl -i http://localhost:8081
七、項(xiàng)目實(shí)戰(zhàn)(附錄)
在Ubuntu上運(yùn)行一個(gè)項(xiàng)目,并且使用nginx反向代理通過域名訪問
1,安裝SSL證書
首先,需要安裝Python及相關(guān)組件。可以通過以下命令來完成:
$ sudo apt-get update
$ sudo apt-get install python3-certbot-apache
需要安裝Certbot證書頒發(fā)機(jī)構(gòu)的證書
$ sudo certbot certonly --standalone --agree-tos --email 郵箱賬號 --domains 域名
最后,需要在Ubuntu系統(tǒng)中啟用SSL
sudo certbot enable-ssl --apache --cert-file /etc/letsencrypt/live/example.com/fullchain.pem --key-file /etc/letsencrypt/live/example.com/privkey.pem
2,配置nginx
? 需要在etc/nginx/sites-available/目錄下創(chuàng)建一個(gè)新的空白文件,然后進(jìn)行以下配置
server { listen 443 ssl; server_name test.thesky-xh.cn; ssl_certificate 下載的ssl目錄地址; ssl_certificate_key ssl密鑰的地址; location / { proxy_pass http://localhost:5678; }
}
配置nginx.conf文件:
server {listen 80;server_name test.thesky-xh.cn www.test.thesky-xh.cn;location / {return 301 https://$host$request_uri;}}server {listen 443 ssl;server_name test.thesky-xh.cn www.test.thesky-xh.cn;ssl_certificate /etc/letsencrypt/live/test.thesky-xh.cn/fullchain.pem;ssl_certificate_key /etc/letsencrypt/live/test.thesky-xh.cn/privkey.pem;location / {proxy_pass http://127.0.0.1:5700;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme;}}
3,重啟nginx服務(wù)器
$ sudo systemctl stop nginx
$ sudo systemctl start nginx
