日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

docker部署教程

發(fā)布時(shí)間:2023/12/20 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 docker部署教程 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

如今Docker的使用已經(jīng)非常普遍,特別在一線互聯(lián)網(wǎng)公司。使用Docker技術(shù)可以幫助企業(yè)快速水平擴(kuò)展服務(wù),從而到達(dá)彈性部署業(yè)務(wù)的能力。在云服務(wù)概念興起之后,Docker的使用場(chǎng)景和范圍進(jìn)一步發(fā)展,如今在微服務(wù)架構(gòu)越來(lái)越流行的情況下,微服務(wù)+Docker的完美組合,更加方便微服務(wù)架構(gòu)運(yùn)維部署落地。

本文詳細(xì)解釋介紹Docker入門相關(guān)內(nèi)容,Docker在微服務(wù)體系中的使用。在了解Docker之前我們先考慮幾個(gè)問(wèn)題:
1、Docker是什么?2、為什么要使用Docker,它有什么優(yōu)勢(shì)?帶著這些問(wèn)題我們來(lái)看看下面的內(nèi)容。

什么是Docker?

Docker 是世界領(lǐng)先的軟件容器平臺(tái)。開(kāi)發(fā)人員利用 Docker 可以消除協(xié)作編碼時(shí)“在我的機(jī)器上可正常工作”的問(wèn)題。運(yùn)維人員利用 Docker 可以在隔離容器中并行運(yùn)行和管理應(yīng)用,獲得更好的計(jì)算密度。企業(yè)利用 Docker 可以構(gòu)建敏捷的軟件交付管道,以更快的速度、更高的安全性和可靠的信譽(yù)為 Linux 和 Windows Server 應(yīng)用發(fā)布新功能。

Docker 屬于 Linux 容器的一種封裝,提供簡(jiǎn)單易用的容器使用接口。它是目前最流行的 Linux 容器解決方案。Docker 將應(yīng)用程序與該程序的依賴,打包在一個(gè)文件里面。運(yùn)行這個(gè)文件,就會(huì)生成一個(gè)虛擬容器。程序在這個(gè)虛擬容器里運(yùn)行,就好像在真實(shí)的物理機(jī)上運(yùn)行一樣。有了 Docker,就不用擔(dān)心環(huán)境問(wèn)題。

總體來(lái)說(shuō),Docker 的接口相當(dāng)簡(jiǎn)單,用戶可以方便地創(chuàng)建和使用容器,把自己的應(yīng)用放入容器。容器還可以進(jìn)行版本管理、復(fù)制、分享、修改,就像管理普通的代碼一樣。

Docker 最初是 dotCloud 公司創(chuàng)始人 Solomon Hykes 在法國(guó)期間發(fā)起的一個(gè)公司內(nèi)部項(xiàng)目,它是基于 dotCloud 公司多年云服務(wù)技術(shù)的一次革新,并于 2013 年 3 月以 Apache 2.0 授權(quán)協(xié)議開(kāi)源,主要項(xiàng)目代碼在 GitHub 上進(jìn)行維護(hù)。Docker 項(xiàng)目后來(lái)還加入了 Linux 基金會(huì),并成立推動(dòng) 開(kāi)放容器聯(lián)盟。

Docker 自開(kāi)源后受到廣泛的關(guān)注和討論,至今其 GitHub 項(xiàng)目已經(jīng)超過(guò) 4 萬(wàn) 6 千個(gè)星標(biāo)和一萬(wàn)多個(gè) fork。甚至由于 Docker 項(xiàng)目的火爆,在 2013 年底,dotCloud 公司決定改名為 Docker。Docker 最初是在 Ubuntu 12.04 上開(kāi)發(fā)實(shí)現(xiàn)的;Red Hat 則從 RHEL 6.5 開(kāi)始對(duì) Docker 進(jìn)行支持;Google 也在其 PaaS 產(chǎn)品中廣泛應(yīng)用 Docker。

為什么要使用Docker

容器除了運(yùn)行其中應(yīng)用外,基本不消耗額外的系統(tǒng)資源,使得應(yīng)用的性能很高,同時(shí)系統(tǒng)的開(kāi)銷盡量小。傳統(tǒng)虛擬機(jī)方式運(yùn)行 10 個(gè)不同的應(yīng)用就要起 10 個(gè)虛擬機(jī),而Docker 只需要啟動(dòng) 10 個(gè)隔離的應(yīng)用即可。

具體說(shuō)來(lái),Docker 在如下幾個(gè)方面具有較大的優(yōu)勢(shì)。

1、更快速的交付和部署

對(duì)開(kāi)發(fā)和運(yùn)維人員來(lái)說(shuō),最希望的就是一次創(chuàng)建或配置,可以在任意地方正常運(yùn)行。

開(kāi)發(fā)者可以使用一個(gè)標(biāo)準(zhǔn)的鏡像來(lái)構(gòu)建一套開(kāi)發(fā)容器,開(kāi)發(fā)完成之后,運(yùn)維人員可以直接使用這個(gè)容器來(lái)部署代碼。 Docker 可以快速創(chuàng)建容器,快速迭代應(yīng)用程序,并讓整個(gè)過(guò)程全程可見(jiàn),使團(tuán)隊(duì)中的其他成員更容易理解應(yīng)用程序是如何創(chuàng)建和工作的。 Docker 容器很輕很快!容器的啟動(dòng)時(shí)間是秒級(jí)的,大量地節(jié)約開(kāi)發(fā)、測(cè)試、部署的時(shí)間。

2、更高效的虛擬化

Docker 容器的運(yùn)行不需要額外的 hypervisor 支持,它是內(nèi)核級(jí)的虛擬化,因此可以實(shí)現(xiàn)更高的性能和效率。

3、更輕松的遷移和擴(kuò)展

Docker 容器幾乎可以在任意的平臺(tái)上運(yùn)行,包括物理機(jī)、虛擬機(jī)、公有云、私有云、個(gè)人電腦、服務(wù)器等。 這種兼容性可以讓用戶把一個(gè)應(yīng)用程序從一個(gè)平臺(tái)直接遷移到另外一個(gè)。

4、更簡(jiǎn)單的管理

使用 Docker,只需要小小的修改,就可以替代以往大量的更新工作。所有的修改都以增量的方式被分發(fā)和更新,從而實(shí)現(xiàn)自動(dòng)化并且高效的管理。

Docker vs VM

從下圖可以看出,VM是一個(gè)運(yùn)行在宿主機(jī)之上的完整的操作系統(tǒng),VM運(yùn)行自身操作系統(tǒng)會(huì)占用較多的CPU、內(nèi)存、硬盤資源。Docker不同于VM,只包含應(yīng)用程序以及依賴庫(kù),基于libcontainer運(yùn)行在宿主機(jī)上,并處于一個(gè)隔離的環(huán)境中,這使得Docker更加輕量高效,啟動(dòng)容器只需幾秒鐘之內(nèi)完成。由于Docker輕量、資源占用少,使得Docker可以輕易的應(yīng)用到構(gòu)建標(biāo)準(zhǔn)化的應(yīng)用中。但Docker目前還不夠完善,比如隔離效果不如VM,共享宿主機(jī)操作系統(tǒng)的一些基礎(chǔ)庫(kù)等;網(wǎng)絡(luò)配置功能相對(duì)簡(jiǎn)單,主要以橋接方式為主;查看日志也不夠方便靈活。

Docker 在容器的基礎(chǔ)上,進(jìn)行了進(jìn)一步的封裝,從文件系統(tǒng)、網(wǎng)絡(luò)互聯(lián)到進(jìn)程隔離等等,極大的簡(jiǎn)化了容器的創(chuàng)建和維護(hù)。使得 Docker 技術(shù)比虛擬機(jī)技術(shù)更為輕便、快捷。

作為一種新興的虛擬化方式,Docker 跟傳統(tǒng)的虛擬化方式相比具有眾多的優(yōu)勢(shì)。Docker 容器的啟動(dòng)可以在秒級(jí)實(shí)現(xiàn),這相比傳統(tǒng)的虛擬機(jī)方式要快得多;Docker 對(duì)系統(tǒng)資源的利用率很高,一臺(tái)主機(jī)上可以同時(shí)運(yùn)行數(shù)千個(gè) Docker 容器。

相關(guān)概念

Docker是CS架構(gòu),主要有兩個(gè)概念:

Docker daemon: 運(yùn)行在宿主機(jī)上,Docker守護(hù)進(jìn)程,用戶通過(guò)Docker client(Docker命令)與Docker daemon交互
Docker client: Docker 命令行工具,是用戶使用Docker的主要方式,Docker client與Docker daemon通信并將結(jié)果返回給用戶,Docker client也可以通過(guò)socket或者RESTful api訪問(wèn)遠(yuǎn)程的Docker daemon

了解了Docker的組成,再來(lái)了解一下Docker的三個(gè)主要概念:

Docker image:鏡像是只讀的,鏡像中包含有需要運(yùn)行的文件。鏡像用來(lái)創(chuàng)建container,一個(gè)鏡像可以運(yùn)行多個(gè)container;鏡像可以通過(guò)Dockerfile創(chuàng)建,也可以從Docker hub/registry上下載。
Docker container:容器是Docker的運(yùn)行組件,啟動(dòng)一個(gè)鏡像就是一個(gè)容器,容器是一個(gè)隔離環(huán)境,多個(gè)容器之間不會(huì)相互影響,保證容器中的程序運(yùn)行在一個(gè)相對(duì)安全的環(huán)境中。
Docker hub/registry: 共享和管理Docker鏡像,用戶可以上傳或者下載上面的鏡像,官方地址為 https://registry.hub.docker.com/,也可以搭建自己私有的Docker registry。
鏡像就相當(dāng)于打包好的版本,鏡像啟動(dòng)之后運(yùn)行在容器中,倉(cāng)庫(kù)就是裝存儲(chǔ)鏡像的地方。

好了,接下來(lái)就是具體進(jìn)行docker實(shí)戰(zhàn)演練了!!!
這幾天學(xué)習(xí)了docker相關(guān)的教程,做個(gè)筆記,可以日后查看。
第一節(jié)課docker前戲
購(gòu)買了一臺(tái)騰訊云的服務(wù)器。首先進(jìn)行了服務(wù)器的系統(tǒng)更新:

yum update
  • 1

第二步,更新內(nèi)核

rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm yum --enablerepo=elrepo-kernel install kernel-ml-devel kernel-ml -y cat /boot/grub2/grub.cfg grub2-set-default 'CentOS Linux (4.20.13-1.el7.elrepo.x86_64) 7 (Core)'
  • 1
  • 2
  • 3
  • 4
  • 5

第三步,內(nèi)核更新完成。進(jìn)行重啟:

reboot
  • 1

通過(guò) uname -r 查看系統(tǒng)的最新版本。

安裝掛載磁盤
通過(guò) 命令查看系統(tǒng)盤和磁盤:

fdisk -l
  • 1


第二步,格式化硬盤 ;

fdisk /dev/vdb
  • 1

接著 執(zhí)行 n p 1; wq

3.創(chuàng)建分區(qū)

mkfs.ext4 /dev/vdb1
  • 1

4.將數(shù)據(jù)盤掛載
命令:

mkdir/data
  • 1
mount /dev/vdb1 /data
  • 1

第五步:寫入硬盤啟動(dòng)信息,下次啟動(dòng)后自動(dòng)掛載數(shù)據(jù)盤

echo /dev/vdb1 /data ext4 defaults 0 0 >> /etc/fstab
  • 1

第二課docker安裝及注意事項(xiàng)
接下來(lái)就是在購(gòu)買的云服務(wù)器上進(jìn)行docker的安裝。具體步驟如下:
創(chuàng)建一個(gè)docker 文件夾: mkdir docker
第一步:下載一個(gè)工具類

yum install -y yum-utils \device-mapper-persistent-data \lvm2
  • 1
  • 2
  • 3

第二步:添加docker源

yum-config-manager \--add-repo \https://download.docker.com/linux/centos/docker-ce.repo
  • 1
  • 2
  • 3

第三步,安裝docker

yum install -y docker-ce
  • 1

安裝完docker之后,就要啟動(dòng)docker服務(wù)了。

systemctl start docker
  • 1

可以通過(guò)以下命令,查看docker服務(wù)開(kāi)啟的狀態(tài)

systemctl status docker
  • 1

讓dokcer服務(wù)開(kāi)啟自動(dòng)啟動(dòng)

systemctl enable docker
  • 1

查看docker的信息

docker info
  • 1

查看信息的時(shí)候,會(huì)發(fā)現(xiàn)有報(bào)錯(cuò)。如下:

WARNING: bridge-nf-call-iptables is disabled WARNING: bridge-nf-call-ip6tables is disabled
  • 1
  • 2

解決辦法,編輯

vim /etc/sysctl.conf
  • 1

文件增加下面兩行配置

net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1
  • 1
  • 2

然后執(zhí)行命令:

sysctl -p
  • 1

查看信息的時(shí)候,如果出現(xiàn)報(bào)錯(cuò),如下:

WARNING: IPv4 forwarding is disabled
  • 1

解決辦法,編輯

vim /etc/sysctl.conf
  • 1

添加一行配置文件

net.ipv4.ip_forward=1
  • 1

重啟docker的命令:

systemctl daemon-reload systemctl restart docker
  • 1
  • 2

下載安裝docker -compose。
第一步,下載一個(gè)compose上傳到服務(wù)器,或者使用該地址下載

curl -L https://github.com/docker/compose/releases/download/1.23.2/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose
  • 1

網(wǎng)速慢,用百度云:鏈接:https://pan.baidu.com/s/1Dxz-QnxECHW3fLFQjsndag
提取碼:uumo
復(fù)制這段內(nèi)容后打開(kāi)百度網(wǎng)盤手機(jī)App,操作更方便哦

第二步:給docker-compose添加可執(zhí)行權(quán)限

chmod +x /usr/local/bin/docker-compose
  • 1

第三步:

docker-compose --version
  • 1

如何卸載 docker -compose

rm /usr/local/bin/docker-compose
  • 1

第三課docker安裝 openvpn
https://docs.docker.com/compose/install/
創(chuàng)建 openvpn文件夾 mkdir openvpn
在data掛載盤,進(jìn)行編輯配置文件

vim docker-compose.yml
  • 1
version: '2' services: openvpn:cap_add:- NET_ADMINimage: kylemanna/openvpncontainer_name: openvpnports:- "1194:1194/udp"restart: alwaysvolumes:- /data/openvpn:/etc/openvpn
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

cd 到 openvpn路徑下

docker-compose run --rm openvpn ovpn_genconfig -u udp://129.211.130.142
  • 1

初始化

docker-compose run --rm openvpn ovpn_initpki
  • 1

這些是提示的輸入

Enter PEM pass phrase: 輸入123456(你是看不見(jiàn)的) Verifying - Enter PEM pass phrase: 輸入123456(你是看不見(jiàn)的) Common Name (eg: your user, host, or server name) [Easy-RSA CA]:回車一下 Enter pass phrase for /etc/openvpn/pki/private/ca.key:輸入123456 ```
  • 1
  • 2
  • 3
  • 4

// 開(kāi)啟 openvpn服務(wù)

docker-compose up -d openvpn
  • 1

創(chuàng)建一個(gè)客戶端用戶

docker-compose run --rm openvpn easyrsa build-client-full virtuousOne nopass Enter pass phrase for /etc/openvpn/pki/private/ca.key:輸入123456
  • 1
  • 2

把證書導(dǎo)入到virtuousOne.ovpn中
在openvpn中創(chuàng)建文件夾: mkdir clientovpn

docker-compose run --rm openvpn ovpn_getclient virtuousOne > /data/openvpn/clientovpn/virtuousOne.ovpn
  • 1

同時(shí),去云服務(wù)控制臺(tái)開(kāi)啟端口

win客戶端下載一個(gè)openVPN的連接工具:地址 https://openvpn.net/index.php/open-source/downloads.html
同時(shí),我們把證書下載下來(lái),放到安裝在win的conf目錄下


查看哪些是正常啟動(dòng)的:

docker ps -a
  • 1

第四課–docker實(shí)戰(zhàn)-安裝mysql、redis
在data目錄下創(chuàng)建mysql: mkdir mysql
然后再里面創(chuàng)建配置文件,配置好配置文件

vim my.cnf
  • 1
[mysqld] default-time-zone = '+8:00' max_connections = 1200 thread_cache_size = 100 character_set_server = utf8mb4 #default-storage-engine=INNODB #init_connect='SET NAMES utf8' max_allowed_packet=1024M skip-name-resolve [mysql] #default-character-set=utf8 [client] #default-character-set=utf8
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

安裝mysql

docker run --restart=always --name mysql \-v /data/docker/mysql/data:/var/lib/mysql -v /data/docker/mysql:/etc/mysql/conf.d \ -v /etc/localtime:/etc/localtime:ro \ -e MYSQL_ROOT_PASSWORD='123456' -d mysql:5.7.25 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
  • 1
  • 2
  • 3
  • 4

設(shè)置mysql的版本

將安裝到docker的mysql,設(shè)置到openvpn的網(wǎng)絡(luò)中

docker network connect openvpn_default mysql
  • 1

查看mysql在該容器中的 網(wǎng)絡(luò)IP

docker exec mysql cat /etc/hosts
  • 1

查看openvpn的網(wǎng)絡(luò)IP

docker exec openvpn cat /etc/hosts
  • 1


本地計(jì)算機(jī)開(kāi)啟openVPN GUI

然后就可以遠(yuǎn)程連接mysql.

在mysql中查看設(shè)置的配置連接池:
show VARIABLES like ‘%max_connections%’;
安裝redis

在data目錄下,創(chuàng)建redis文件夾。mkdir redis

docker run --restart=always --name redis -p 6379:6379 -v /data/redis/data:/data -d redis --appendonly yes
  • 1

安裝完成,進(jìn)行配置redis的openvpn

docker network connect openvpn_default redis
  • 1

查看redis在openvpn對(duì)應(yīng)的IP

docker exec redis cat /etc/hosts
  • 1

查看docker對(duì)應(yīng)的openvpn對(duì)應(yīng)的IP

docker exec openvpn cat /etc/hosts
  • 1


成功連接后,即可表示安裝完成!

第五課–docker實(shí)戰(zhàn)-安裝nginx,配置https
首先創(chuàng)建 mdkir nginx 。然后繼續(xù)
在nginx文件夾下創(chuàng)建三個(gè)文件建

1.mkdir conf.d 2.mkdir cert 3. mkdir www
  • 1
  • 2
  • 3

下一步,在www目錄下編輯index.html

cd www vim index.html
  • 1
  • 2

在nginx中 創(chuàng)建 nginx.conf文件

vim nginx.conf
  • 1

編輯的內(nèi)容是:

#user nobody; user root; worker_processes 4; #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; #pid logs/nginx.pid; events {use epoll; worker_connections 20480; } http {include mime.types;default_type application/octet-stream;log_format main '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for"';#access_log logs/access.log main; #下面三行是nginx解決跨域問(wèn)題#add_header Access-Control-Allow-Origin *;# add_header Access-Control-Allow-Headers X-Requested-With;#add_header Access-Control-Allow-Methods GET,POST,OPTIONS;sendfile on;#tcp_nopush on;#keepalive_timeout 0;keepalive_timeout 65;#gzip on;#關(guān)閉顯示nginx版本號(hào)server_tokens off;include /etc/nginx/conf.d/*.conf; }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32

在 conf.d中創(chuàng)建 docker.virtuousone.cn.conf文件,編輯的內(nèi)容為:

server{listen 443 ssl http2 default_server ;server_name docker.virtuousone.cn;index index.html index.htm ;root /usr/share/nginx/html; ssl on;ssl_certificate /etc/nginx/cert/fullchain.pem;ssl_certificate_key /etc/nginx/cert/privkey.pem;ssl_protocols TLSv1.1 TLSv1.2;ssl_prefer_server_ciphers on;ssl_session_timeout 10m;ssl_session_cache builtin:1000 shared:SSL:10m; #SSL 會(huì)話緩存類型和大小ssl_buffer_size 1400; # 1400 bytes to fit in one MTUadd_header Strict-Transport-Security max-age=15768000;ssl_stapling on;ssl_stapling_verify on;#如果使用這個(gè)AES256+EECDH:AES256+EDH:!aNULL 當(dāng)nginx開(kāi)啟http2的時(shí)候,瀏覽器會(huì)訪問(wèn)不了,chrome瀏覽器報(bào)錯(cuò)內(nèi)容ERR_SPDY_INADEQUATE_TRANSPORT_SECURITY#http://www.chinaz.com/web/2016/0323/515111.shtml 參考這個(gè)#ssl_ciphers AES256+EECDH:AES256+EDH:!aNULL;#強(qiáng)烈推薦使用下面這個(gè)ssl_ciphers EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5; # location / {# proxy_pass http://127.0.0.1:5250;# proxy_set_header Host $host;# proxy_set_header X-Real-IP $remote_addr; # proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; #}#access_log /home/wwwlogs/access.log;location ~* \.(jpg|jpeg|png|gif|ico|css|js|mp3)$ {expires 30d;}

}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35

復(fù)制文件

cp docker.virtuousone.cn.conf api.virtuousone.cn.conf.bak docker.virtuousone.cn.conf test.virtuousone.cn.conf.bak
  • 1
  • 2

生成證書:

docker run --name certbot -p 443:443 -p 80:80 -v /data/certbot/letsencrypt:/etc/letsencrypt -d certbot/certbot certonly --standalone --agree-tos --non-interactive --email 2812927266@qq.com -d docker.virtuousone.cn -d api.virtuousone.cn -d test.virtuousone.cn
  • 1

這個(gè)證書的有效期是90天,到期之后,可以更新證書:

docker run --name certbot -p 443:443 -p 80:80 -v /data/docker/certbot/letsencrypt:/etc/letsencrypt -d certbot/certbot certonly renew --force-renew
  • 1

在域名網(wǎng)站開(kāi)啟二級(jí)域名以及 開(kāi)通443和80端口
進(jìn)入到cerbot下。的 letsencrypt的live的目錄下

cd certbotlscd letsencrypt ls cd live ls cd docker.virtuousone.cn ls
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

復(fù)制生成的證書 到cert中

cp fullchain.pem privkey.pem /data/nginx/cert
  • 1

進(jìn)入到cert目錄下

cd /data/nginx/cert ls cd ..
  • 1
  • 2
  • 3

查看 .conf文件

cat conf.d/docker.virtuousone.cn.conf
  • 1

拉取并啟動(dòng) nginx

docker run --net host --restart=always --name nginx -e TZ="Asia/Shanghai" -v /data/nginx/nginx.conf:/etc/nginx/nginx.conf -v /etc/localtime:/etc/localtime:ro -v /data/nginx/conf.d:/etc/nginx/conf.d -v /data/nginx/cert:/etc/nginx/cert -v /data/nginx/www:/usr/share/nginx/html -d nginx
  • 1

在 conf.d中的 docker.virtuousone.cn.conf中
添加一個(gè)Server配置

server { listen 80; server_name docker.virtuousone.cn ; #return 301 https://docker.virtuousone.cn$request_uri; #【這是 nginx 最新支持的寫法】 return 301 https://$server_name$request_uri; #rewrite ^(.*) https://docker.virtuousone.cn$1 permanent; }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

重啟nginx服務(wù)

docker restart nginx
  • 1

在瀏覽器中輸入二級(jí)域名,就可以看到nginx配置成功的了。


同時(shí),可以在https://www.sslshopper.com/ssl-checker.html
進(jìn)行檢測(cè)配置的https的安全級(jí)別。

第六課 docker實(shí)戰(zhàn)-spring boot項(xiàng)目docker容器化的部署
周末學(xué)習(xí)了下如何在docker中部署spring boot項(xiàng)目。
第一步,是打包。

在data目錄下,創(chuàng)建 api文件夾和 test文件夾

mkdir api test
  • 1

進(jìn)入api,創(chuàng)建一個(gè)Dockerfile文件夾
進(jìn)行編輯:

vim Dockerfile
  • 1

里面的內(nèi)容為:

FROM java:8 MAINTAINER virtuousone <2812927266@qq.com> VOLUME /tmp ADD docker-0.0.1-SNAPSHOT.jar app.jar #RUN bash -c 'touch /app.jar' ENV JAVA_OPTS="" ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /app.jar --spring.profiles.active=prod" ]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

同理,在test中的Dockerfile中編輯內(nèi)容:

[root@virtuousOne test]# cat Dockerfile FROM java:8 MAINTAINER virtuousone <2812927266@qq.com> VOLUME /tmp ADD docker-0.0.1-SNAPSHOT.jar app.jar #RUN bash -c 'touch /app.jar' ENV JAVA_OPTS="" ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /app.jar --spring.profiles.active=test" ]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

將打包的spring boot項(xiàng)目,傳到api文件夾中。
復(fù)制一份,到test中

cp docker-0.0.1-SNAPSHOT.jar ../test/
  • 1

修改在nginx中的nginx.conf的配置:

vim /data/nginx/conf.d/api.virtuousone.cn.conf
  • 1

修改nginx對(duì)應(yīng)的轉(zhuǎn)發(fā)配置(方式一):是根據(jù)宿主主機(jī)映射端口,進(jìn)行訪問(wèn)。

server{listen 443 ssl http2;#listen 80;server_name test.virtuousone.cn;index index.html index.htm ;root /usr/share/nginx/html; ssl_certificate /etc/nginx/cert/fullchain.pem;ssl_certificate_key /etc/nginx/cert/privkey.pem;ssl_protocols TLSv1.1 TLSv1.2;ssl_prefer_server_ciphers on;ssl_session_timeout 10m;ssl_session_cache builtin:1000 shared:SSL:10m; #SSL 會(huì)話緩存類型和大小ssl_buffer_size 1400; # 1400 bytes to fit in one MTUadd_header Strict-Transport-Security max-age=15768000;ssl_stapling on;ssl_stapling_verify on;#如果使用這個(gè)AES256+EECDH:AES256+EDH:!aNULL 當(dāng)nginx開(kāi)啟http2的時(shí)候,瀏覽器會(huì)訪問(wèn)不了,chrome瀏覽器報(bào)錯(cuò)內(nèi)容ERR_SPDY_INADEQUATE_TRANSPORT_SECURITY#http://www.chinaz.com/web/2016/0323/515111.shtml 參考這個(gè)#ssl_ciphers AES256+EECDH:AES256+EDH:!aNULL;#強(qiáng)烈推薦使用下面這個(gè)ssl_ciphers EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;location / {proxy_pass http://127.0.0.1:10001;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;}#access_log /home/wwwlogs/access.log;location ~* \.(jpg|jpeg|png|gif|ico|css|js|mp3)$ {expires 30d;}

}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37

改變端口號(hào),就可以寫到test中

修改nginx對(duì)應(yīng)的轉(zhuǎn)發(fā)配置(方式二):根據(jù)容器的IP端口映射訪問(wèn)
1.通過(guò)該命令,查詢下該項(xiàng)目對(duì)應(yīng)的ID

docker ps -a
  • 1


2.通過(guò)該ID,查詢?cè)赿ocker容器中的IP:

docker exec 378cc5f1bee1 cat /etc/hosts
  • 1


3,修改conf.d里面的配置文件的IP

vim /data/nginx/conf.d/test.virtuousone.cn.conf
  • 1


這樣就可以了。另一個(gè)環(huán)境的也是同理這樣解決!
以上兩種修改conf.d路徑下的test.virtuousone.cn.conf的方式,選擇一種即可。
第三步,在docker鏡像中執(zhí)行打包上去的項(xiàng)目:
執(zhí)行api環(huán)境中的:

docker build -t virtuousone/docker-api-springboot:1.0 .
  • 1

執(zhí)行test環(huán)境中的:

docker build -t virtuousone/docker-test-springboot:1.0 .
  • 1

分別運(yùn)行兩個(gè)環(huán)境的項(xiàng)目:
api環(huán)境

docker run --restart=always --name docker-springboot -p 10000:8080 -d virtuousone/docker-api-springboot:1.0
  • 1

test環(huán)境

docker run --restart=always --name docker-test-springboot -p 10001:8080 -d virtuousone/docker-test-springboot:1.0
  • 1

重啟nginx容器:

docker restart nginx
  • 1

查看nginx中的日志:

docker logs -f nginx
  • 1

如果日志顯示正常,就說(shuō)明已經(jīng)發(fā)布部署城里了。我們可以進(jìn)行訪問(wèn)了。

刪除容器和文件夾,才能刪掉我們刪掉的安裝程序。
刪除容器具體命令:

docker rm -f 容器名稱或容器id
  • 1

刪除文件夾命令:

rm -rf 文件夾
  • 1

第七課 基于docker的nginx進(jìn)行集群部署
基于上一課,這次主要講解基于nginx的集群部署。
查看之前的容器:

docker ps -a
  • 1

基于之前放上去的springboot的項(xiàng)目的容器,再進(jìn)行一個(gè)實(shí)例化。

docker run --restart=always --name docker-product-springboot -p 10002:8080 -d virtuousone/docker-api-springboot:1.0
  • 1

可以查看該容器在docker中的ip:

docker exec 70708b55281c cat /etc/hosts
  • 1


修改nginx中的配置(配置機(jī)制一:按照輪詢的機(jī)制):

cd /data/nginx/conf.d/ vim api.virtuousone.cn.conf
  • 1
  • 2

修改內(nèi)容如下:

upstream api{ server 127.0.0.1:10000; server 127.0.0.1:10002;

}

同時(shí),將location中的 proxy_pass 修改為:
proxy_pass http://api;

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9


修改ngxin的配置(基于權(quán)重的方式進(jìn)行配置:)

upstream api{ server 127.0.0.1:10000 weight=1; server 127.0.0.1:10002 weight=2;

}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

其他配置一樣,這是第二種配置的方式。
重啟ngxin之后,就可以了。集群部署多個(gè)項(xiàng)目到此完成了!
進(jìn)行驗(yàn)證:
可以關(guān)閉其中的一個(gè)

docker stop 70708b55281c
  • 1


當(dāng)關(guān)閉兩個(gè)后,就502報(bào)錯(cuò)了。沒(méi)法訪問(wèn)了。驗(yàn)證完成。

第八課 docker實(shí)戰(zhàn)-安裝rabbitmq及其使用
在docker目錄下創(chuàng)建一個(gè)rabbitmq

mkdir rabbitmq
  • 1

rabbitmq的安裝比較簡(jiǎn)單。
執(zhí)行命令

docker run --restart=always --name rabbitmq -e RABBITMQ_DEFAULT_USER=admin \ -e TZ="Asia/Shanghai" -e RABBITMQ_DEFAULT_PASS=virtuousone \ -v /data/docker/rabbitmq/rabbitmq-data/:/var/lib/rabbitmq \ -v /etc/localtime:/etc/localtime:ro -d rabbitmq:management
  • 1
  • 2
  • 3
  • 4

將其網(wǎng)絡(luò)添加到openvpn中,就可以進(jìn)行內(nèi)網(wǎng)使用了。

docker network connect openvpn_default rabbitmq
  • 1

查看rabbitmq在openvpn對(duì)應(yīng)的IP

docker exec rabbitmq cat /etc/hosts
  • 1

打開(kāi)openvpn,就可以先查看Web管理的rabbitmq,即可表示安裝成功了。

</div>

總結(jié)

以上是生活随笔為你收集整理的docker部署教程的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。