新聞中心
利用Docker部署的服務(wù)器環(huán)境已經(jīng)成為目前主流。為了實現(xiàn)高負載、易于拓展,我們采用Nginx作為反代,Redis記錄訪問日志。(主機服務(wù)器環(huán)境:CentOS7.1)

創(chuàng)新互聯(lián)建站于2013年開始,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項目做網(wǎng)站、網(wǎng)站設(shè)計網(wǎng)站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元汪清做網(wǎng)站,已為上家服務(wù),為汪清各地企業(yè)和個人服務(wù),聯(lián)系電話:13518219792
1、安裝并啟動Docker
yum update
yum install docker
設(shè)置開機啟動:
systemctl enable docker.service
啟動docker:
systemctl start docker.service
使用:
docker info
可以查看docker的信息,檢查是否安裝成功。
CentOS7的systemctl命令:
systemctl is-enabled servicename.service #查詢服務(wù)是否開機啟動
systemctl enable
.service #開機運行服務(wù)
systemctl disable .service #取消開機運行
systemctl start
.service #啟動服務(wù)
systemctl stop .service #停止服務(wù)
systemctl restart
.service #重啟服務(wù)
systemctl reload .service #重新加載服務(wù)配置文件
systemctl status
.service #查詢服務(wù)運行狀態(tài)
systemctl --failed #顯示啟動失敗的服務(wù)與老版本對比,以httpd為例,則:
啟動服務(wù)(等同于service httpd start)
systemctl start httpd.service
停止服務(wù)(等同于service httpd stop)
systemctl stop httpd.service
2、在Docker中安裝Nginx
docker run -d -p 80:80 nginx
如果出現(xiàn)Warning:"Usage of loopback devices is strongly discouraged for production use."(據(jù)我所知阿里云、騰訊云及VMware中的CentOS7都會出現(xiàn)):
vim /etc/sysconfig/docker-storage修改里面的DOCKER_STORAGE_OPTIONS內(nèi)容為:
DOCKER_STORAGE_OPTIONS="--storage-opt dm.no_warn_on_loop_devices=true"
PS:我同時在阿里云和騰訊云執(zhí)行“docker run -d -p 80:80 nginx”這個命令。阿里云因為做了加速,所以很快安裝完成,但騰訊云卡死。解決方法:在安全性要求不高的情況下可以使用國內(nèi)鏡像,否則請使用安全的網(wǎng)絡(luò)環(huán)境和可信來源。
(注意,第二次運行這個命令的時候,請使用完整的REPOSITORY,否則部分服務(wù)器可能會有警告并自動結(jié)束docker,例如:“
docker run -p 80:80 docker.io/nginx
” )
運行
docker pull index.alauda.cn/library/nginx
docker ps
docker stop ID
其中“ID”可以用前幾個字符,只要能唯一識別即可。例如上圖中的容器ID,我們可以使用“1e3c3ce23d5b”,也可以使用“1e3c”來結(jié)束容器。同理,其它docker的操作也是類似的。
docker ps -l
可以查看運行過的所有docker,包括已經(jīng)運行結(jié)束了的docker。
第一個命令中“docker run”后面的“-d”代表是否在后臺運行,去掉這個“-d”執(zhí)行“docker run -p 80:80 nginx”可以看到訪問記錄。使用“Ctrl+C”結(jié)束執(zhí)行,則docker自動退出。因此在服務(wù)器中執(zhí)行時請帶上“-d”參數(shù)。
使用
docker images
可以查看安裝了的所有本地鏡像。
3、在Docker中安裝Node.js并運行Node.js程序
docker pull node
安裝完畢后可以通過
docker run -it --rm node node --version
查看node.js版本號。
接下來上傳你的源代碼到服務(wù)器。例如從公司服務(wù)器克隆源代碼:get clone XXX 。
確保你的源代碼目錄下package.json文件配置正確。
然后
docker run --rm -it -p 3000:1337 --name WebApp -v "$(pwd)":/webapp -w /webapp node npm install
或
docker run -itd -p 3000:1337 --name WebApp -v "$(pwd)":/webapp -w /webapp node npm start
安裝依賴并運行程序。
-v后面的:代表分割的路徑,前者表示宿主的路徑(在這里也就是expressjs項目的主目錄),后者表示映射到Docker容器的路徑。
-w:表示將-v映射的/webapp目錄設(shè)置為work directory,也就是運行node命令的目錄。這個設(shè)置將覆蓋Dockfiie中的設(shè)置:/Data。
其中-itd:
- i,容器的標準輸入保持打開
- t,Docker分配一個偽終端(pseudo-tty)并綁定到容器的標準輸入
- d:Docker容器跑在后臺。
--rm,運行結(jié)束后刪除容器。
4、Nginx反代
利用Nginx反代能夠很方便的實現(xiàn)負載均衡。
mkdir config
在/root目錄下創(chuàng)建一個名為config的目錄用于存放Nginx的配置文件。
vim config/nginx.conf
在這個配置文件中配置反代。
server {
listen 80;
server_name 綁定的域名;
location / {
proxy_pass http://localhost:3000;
}
}
docker run -itd -p 80:80 --link WebApp:localhost -vpwd/config/nginx.conf:/etc/nginx/conf.d/host_one.conf -vpwd/logs:/var/log/nginx nginx
即可。訪問綁定的域名,則可以訪問到node.js的程序。
需要注意的是,“-v pwd/config/nginx.conf:/etc/nginx/conf.d” 中的“pwd/config”代表server文件的本地路徑,意思是當前目錄下的config文件,將會映射到docker容器的nginx配置路徑。而“:”后面的路徑則是服務(wù)器中的路徑,默認的nginx.conf文件中包含“include /etc/nginx/conf.d/.conf;”,也就是默認載入conf.d文件夾中的.conf后綴的文件。最后執(zhí)行這個命令會在當前目錄下創(chuàng)建logs目錄,存放access.log和error.log。剛開始配置的時候,最好去掉“-itd”中的“d”,運行命令查看是否存在問題。如果運行正常,先執(zhí)行“docker rm $(docker ps -a -q)”清除所有已經(jīng)執(zhí)行過的docker,再執(zhí)行帶“d”的命令進入后臺運行。
如果使用SSL證書,則Nginx配置文件按照證書提供商提供的設(shè)置方法設(shè)置,一般要設(shè)置443端口,則在"-p"后映射需要的端口,并且在運行nginx容器的時候設(shè)置SSL的路徑:-v
5、Redis記錄訪問日志
采用Redis進行日志記錄,方便高效。
docker run -d --name redis -p 6379:6379 redis
在啟動node.js程序的時候加上“--link redis:redis”即可。其他MongoDB、MySQL之類的數(shù)據(jù)庫同理。
至于需要記錄什么日志,與具體的項目需求有關(guān)。一般來說我們使用Redis記錄 HTTP 訪問日志和應(yīng)用日志。
6、常用的Docker清理命令
殺死所有正在運行的容器
docker kill $(docker ps -a -q)
刪除所有已經(jīng)停止的容器
docker rm $(docker ps -a -q)
刪除所有未打 dangling 標簽的鏡像
docker rmi $(docker images -q -f dangling=true)
刪除所有已下載的本地鏡像
docker rmi $(docker images -q)
下面關(guān)于Node.js的內(nèi)容你可能也喜歡:
網(wǎng)站題目:基于Docker部署Node.js應(yīng)用環(huán)境
網(wǎng)頁地址:http://www.dlmjj.cn/article/djhhsgh.html


咨詢
建站咨詢
