Docker | 部署nginx服務
容器時相互隔離的,
docker
啟動的nginx
是容器內的服務,不影響我原先服務器上的nginx
服務,小夥伴們可大膽嘗試
本篇實在linux環境下操作的,主要目的是奪人眼目,對使用Docker部署服務嘗鮮,先體會一下Docker的便捷之處。
1、下載nginx鏡像
docker pull nginx
2、查看下載的鏡像
docker ps
3、啟動nginx鏡像
docker run -d --name nginx01 -p 3344:80 nginx(鏡像名或者鏡像id)
4、查看啟動的nginx
docker ps
5、訪問啟動的nginx
在雲服務器內使用 curl 測試訪問
curl localhost:3344
5.1、linux開放防火牆端口
firewall-cmd
位於firewalld
包中
systemctl
位於systemd
包中
安裝防火牆工具:
yum install firewalld systemd -y
常用命令:
# 查看firewall(防火牆)服務狀態
systemctl status firewalld
#開啟防火牆
systemctl start firewalld
#重啟防火牆
service firewalld restart
#關閉防火牆
service firewalld stop
#查看防火牆規則
firewall-cmd --list-all #查看全部信息
firewall-cmd --list-ports #只看端口信息
#添加防火牆開放端口
firewall-cmd --add-port=8001/tcp --permanent
or
firewall-cmd --zone=public --add-port=8080/tcp --permanent
命令含義:
--zone #作用域(public標識公共的)
--add-port=80/tcp #添加端口, 格式為:端口/通訊協議
--permanent #永久生效,沒有此參數重啟後失效
# 不要忘記reload!
firewall-cmd --reload
5.2、阿里雲服務器需要配置安全組規則
配置完之後就可以在瀏覽器訪問公網ip+3344端口號
查看了
5.3、原理
端口暴露,linux端口映射到容器端口
0.0.0.0:3344->80/tcp
6.進入nginx容器
docker exec -it 0a7ebd6bc291 /bin/bash
root@0a7ebd6bc291:/# ls
bin boot dev docker-entrypoint.d docker-entrypoint.sh etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
root@0a7ebd6bc291:/# whereis nginx
nginx: /usr/sbin/nginx /usr/lib/nginx /etc/nginx /usr/share/nginx
root@0a7ebd6bc291:/# cd /etc/nginx/
root@0a7ebd6bc291:/etc/nginx# ls
conf.d fastcgi_params mime.types modules nginx.conf scgi_params uwsgi_params
root@0a7ebd6bc291:/etc/nginx#
問題探索
每次改動nginx
配置,都需要進入容器內部修改,十分麻煩,能否在容器外部提供一個映射路徑,達到修改配置文件,容器內部就會自動修改?
數據卷技術
nginx.conf
配置文件,注意Nginx
默認是後台運行的,但Docker
需要其在前台運行,否則直接退出容器。配置文件中添加daemon off;
關閉後台運行。可以通過Dockerfile
配置CMD命令實現
感謝閱讀,本篇完,數據卷技術下文繼續分享!
我是 甜點cc
熱愛前端,也喜歡專研各種跟本職工作關係不大的技術,技術、產品興趣廣泛且濃厚,等待着一個創業機會。本號主要致力於分享個人經驗總結,希望可以給一小部分人一些微小幫助。
希望能和大家一起努力營造一個良好的學習氛圍,為了個人和家庭、為了我國的互聯網物聯網技術、數字化轉型、數字經濟發展做一點點貢獻。數風流人物還看中國、看今朝、看你我。