­

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

熱愛前端,也喜歡專研各種跟本職工作關係不大的技術,技術、產品興趣廣泛且濃厚,等待着一個創業機會。本號主要致力於分享個人經驗總結,希望可以給一小部分人一些微小幫助。

希望能和大家一起努力營造一個良好的學習氛圍,為了個人和家庭、為了我國的互聯網物聯網技術、數字化轉型、數字經濟發展做一點點貢獻。數風流人物還看中國、看今朝、看你我。