首页 > 其他分享 >docker对外发布服务,docker compose使用

docker对外发布服务,docker compose使用

时间:2025-01-06 09:03:37浏览次数:3  
标签:容器 compose nginx conf docker php 对外

一.对外发布服务
	1.端口绑定,对外发布服务
		docker run -itd -p 宿主机端口:容器端口 镜像:标签
	
	
	2.容器存储卷,目录映射
		docker run -itd -v 宿主机对象:容器内对象 镜像:标签
	
	
	3.给容器修改配置文件
	
		(1)把容器的配置文件拷贝出来
			 docker cp web:/usr/local/nginx/conf ./conf
	
		(2)编辑配置文件,添加 php 解析配置
			[root@docker ~]# vim conf/nginx.conf
		        location ~ \.php$ {
		            root           html;
		            fastcgi_pass   127.0.0.1:9000;
		            fastcgi_index  index.php;
		            include        fastcgi.conf;
		        }
	
		(3)使用卷映射配置文件,重建 nginx 容器
			docker run -itd --rm --name web -p 80:80 \
	                  -v /root/conf:/usr/local/nginx/conf \
	                  -v /var/webroot:/usr/local/nginx/html myos:nginx
	
		(4)访问验证
			curl http://192.168.88.31/info.php
	
	4.容器共享网卡+php映射存储卷,解决nginx和php的资源访问
		
		docker run -itd --rm --name web -p 80:80 \
	             -v /root/conf:/usr/local/nginx/conf \
	             -v /var/webroot:/usr/local/nginx/html myos:nginx   	#启动nginx容器
	
		docker run -itd --rm --name php --network=container:web \
	              -v /var/webroot:/usr/local/nginx/html myos:php-fpm   #启动php容器
		流程:nginx收到php请求,通过共享网卡,将请求转发给php,但是php里面没有info.php的页面,通过-v /var/webroot:/usr/local/nginx/html卷映射,把界面映射给php容器.


二.服务编排与治理(docker compose:容器的批处理管理工具)

	1.项目文件
		[root@docker ~]# vim docker-compose.yaml //创建项目文件
		name: myweb   #项目名称
		version: "3"  #版本
		services:	 #服务
		  websvc:	 #服务名
		    container_name: nginx  #容器名
		    image: myos:nginx      #镜像

	2.compose项目文件编写的语法
		container_name //指定容器名称
		image		//指定为镜像名称或镜像 ID
		restart	//容器保护策略[always、no、on-failure:状态码]
			name: myweb
			version: "3"
			services:
			  websvc:
			    container_name: nginx
			    image: myos:nginx
			    restart: always

		volumes	//数据卷,支持模式 [volume、bind、tmpfs、npipe]	
			volumes:
	                - type: bind
	                  source: /root/conf/nignx.conf
	                  target: /usr/local/ningx/conf/nginx.conf

		ports		//暴露端口信息
			ports:
      			   - 80:80

		networks	//配置容器连接的网络
		network_mode	//设置网络模式
			network_mode: "service:服务名称"

		depends_on	//服务依赖关系services_[start:容器正常启动、healthy:自定义检测脚本执行成功、completed_successfully:容器正常关闭]
			websvc(服务):
       		    condition: service_start

		environment	//设置环境变量
			添加设置镜像的时候,没有设置的环境变量
			 environment:
      				- "TZ=Asia/Shanghai"

		command	//覆盖容器启动后默认执行的命令,嵌入脚本
			command:
			      - sh
			      - -c    #sh -c $"{a}":-c选项告诉shell从接下来的字符串参数中读取命令来执行
			      - |
			        for i in {1..9}
			        do
			            sleep 1
			            echo "${HOSTNAME} && $${HOSTNAME}" #$真机的变量,$$容器内的变量
			        done
			

	3.项目管理命令
		docker compose -f yaml文件 -p 项目名称  指令
		   指令:	
			up	//创建项目并启动容器
				docker compose yaml文件 up -d

			ls	//列出可以管理的项目
				docker compose ls

			images	//列出项目使用的镜像
				docker compose -p myweb images

			ps	//显示项目中容器的状态
				docker compose -p myweb ps

			logs	//查看项目中容器的日志
				docker compose -p myweb logs

			start/stop/restart	//启动项目/停止项目/重启项目
				docker compose -p myweb start

			down	//删除项目容器及网络
				docker compose -p myweb down

			exec //进入某个服务的容器
				docker compose exec 服务名 /bin/bash

一.对外发布服务
    1.端口绑定,对外发布服务
        docker run -itd -p 宿主机端口:容器端口 镜像:标签
    
    
    2.容器存储卷,目录映射
        docker run -itd -v 宿主机对象:容器内对象 镜像:标签
    
    
    3.给容器修改配置文件
    
        (1)把容器的配置文件拷贝出来
             docker cp web:/usr/local/nginx/conf ./conf
    
        (2)编辑配置文件,添加 php 解析配置
            [root@docker ~]# vim conf/nginx.conf
                location ~ \.php$ {
                    root           html;
                    fastcgi_pass   127.0.0.1:9000;
                    fastcgi_index  index.php;
                    include        fastcgi.conf;
                }
    
        (3)使用卷映射配置文件,重建 nginx 容器
            docker run -itd --rm --name web -p 80:80 \
                      -v /root/conf:/usr/local/nginx/conf \
                      -v /var/webroot:/usr/local/nginx/html myos:nginx
    
        (4)访问验证
            curl http://192.168.88.31/info.php
    
    4.容器共享网卡+php映射存储卷,解决nginx和php的资源访问
        
        docker run -itd --rm --name web -p 80:80 \
                 -v /root/conf:/usr/local/nginx/conf \
                 -v /var/webroot:/usr/local/nginx/html myos:nginx       #启动nginx容器
    
        docker run -itd --rm --name php --network=container:web \
                  -v /var/webroot:/usr/local/nginx/html myos:php-fpm   #启动php容器
        流程:nginx收到php请求,通过共享网卡,将请求转发给php,但是php里面没有info.php的页面,通过-v /var/webroot:/usr/local/nginx/html卷映射,把界面映射给php容器.


二.服务编排与治理(docker compose:容器的批处理管理工具)

    1.项目文件
        [root@docker ~]# vim docker-compose.yaml //创建项目文件
        name: myweb   #项目名称
        version: "3"  #版本
        services:     #服务
          websvc:     #服务名
            container_name: nginx  #容器名
            image: myos:nginx      #镜像

    2.compose项目文件编写的语法
        container_name //指定容器名称
        image        //指定为镜像名称或镜像 ID
        restart    //容器保护策略[always、no、on-failure:状态码]
            name: myweb
            version: "3"
            services:
              websvc:
                container_name: nginx
                image: myos:nginx
                restart: always

        volumes    //数据卷,支持模式 [volume、bind、tmpfs、npipe]    
            volumes:
                    - type: bind
                      source: /root/conf/nignx.conf
                      target: /usr/local/ningx/conf/nginx.conf

        ports        //暴露端口信息
            ports:
                     - 80:80

        networks    //配置容器连接的网络
        network_mode    //设置网络模式
            network_mode: "service:服务名称"

        depends_on    //服务依赖关系services_[start:容器正常启动、healthy:自定义检测脚本执行成功、completed_successfully:容器正常关闭]
            websvc(服务):
                   condition: service_start

        environment    //设置环境变量
            添加设置镜像的时候,没有设置的环境变量
             environment:
                      - "TZ=Asia/Shanghai"

        command    //覆盖容器启动后默认执行的命令,嵌入脚本
            command:
                  - sh
                  - -c    #sh -c $"{a}":-c选项告诉shell从接下来的字符串参数中读取命令来执行
                  - |
                    for i in {1..9}
                    do
                        sleep 1
                        echo "${HOSTNAME} && $${HOSTNAME}" #$真机的变量,$$容器内的变量
                    done
            

    3.项目管理命令
        docker compose -f yaml文件 -p 项目名称  指令
           指令:    
            up    //创建项目并启动容器
                docker compose yaml文件 up -d

            ls    //列出可以管理的项目
                docker compose ls

            images    //列出项目使用的镜像
                docker compose -p myweb images

            ps    //显示项目中容器的状态
                docker compose -p myweb ps

            logs    //查看项目中容器的日志
                docker compose -p myweb logs

            start/stop/restart    //启动项目/停止项目/重启项目
                docker compose -p myweb start

            down    //删除项目容器及网络
                docker compose -p myweb down

            exec //进入某个服务的容器
                docker compose exec 服务名 /bin/bash

标签:容器,compose,nginx,conf,docker,php,对外
From: https://blog.csdn.net/qq_50655286/article/details/144955362

相关文章

  • Dockerfile完全指南
    Dockerfile完全指南基础镜像的选择基础原则官方镜像优于非官方的镜像,如果没有官方镜像,则尽量选择Dockerfile开源的。固定版本Tag而不是每次都使用lastest尽力选择体积小的镜像<-alpine精简版>[root@node01~]#dockerimagesREPOSITORYTAGIMAG......
  • Docker存储
    Docker存储默认情况下,在运行的容器里创建的文件,被保存在一个可写的容器层。如果容器被删除了,则数据也没有了这个可写的容器层是和特定的容器绑定的,也就是这些数据无法方便的和其他容器共享。Docker主要提供了两种方式做数据的持久化DataVolume,由Docker管理,(/var/lib/docker......
  • 在Ubuntu WSL2里配置GDAL Docker环境
    在UbuntuWSL2里配置GDALDocker环境启用systemd#Ubuntu中执行echo-e"[boot]\nsystemd=true"|sudotee-a/etc/wsl.conf#PowerShell中执行wsl--shutdown#Ubuntu中执行ps--no-headers-ocomm1配置Ubuntu国内源科大源sudorm-rf/etc/apt/sources.lists......
  • docker dns
    docker容器添加自定义hostshttps://www.cnblogs.com/erlou96/p/13884130.html方案一启动时增加hosts,参考自dockerdocs dockerrun-d--nametest1\--add-hosttest1.a:1.2.3.4\local/test 方案二docker-compose.yml文件指定,参考自stackoverflow test2:b......
  • traefik use label data of service container in compose yaml to route
    examplehttps://doc.traefik.io/traefik/user-guides/docker-compose/basic-example/traefik通过dockerengine访问其它容器的label信息,来做路由。version:"3.3"services:traefik:image:"traefik:v3.2"container_name:"traefik"co......
  • 《docker基础篇:7.Docker容器数据卷》包括坑、回顾下上一讲的知识点,参数V、是什么、更
    @目录7.Docker容器数据卷7.1坑7.2回顾下上一讲的知识点,参数V7.3是什么7.4能干嘛7.5数据卷案例7.5.1宿主vs容器之间映射添加容器卷7.5.2读写规则映射添加说明7.5.3卷的继承和共享本人其他相关文章链接7.Docker容器数据卷7.1坑容器卷记得加入:--privileged=true问题:why......
  • docker 安装doris
    下载镜像dockerpullapache/doris:build-env-ldb-toolchain-latest下载安装包https://doris.apache.org/zh-CN/downloadwgethttps://apache-doris-releases.oss-accelerate.aliyuncs.com/apache-doris-2.1.7-bin-x64.tar.gz然后需要下载MySQL,这里提供MySQL的免......
  • 我用AI学Android Jetpack Compose之开篇
    最近突发奇想,想学一下JetpackCompose,打算用Ai学,学最新的技术应该要到官网学,不过Compose已经出来一段时间了,Ai肯定学过了,用Ai来学,应该问题不大,学习过程记录下来,就是本专辑《我用AI学AndroidJetpackCompose》。本教程需要有一定Android开发基础的同学,至少能运行成功Hello......
  • Docker 超强进阶!手把手部署 AllInOne,永久电视直播+自动更新,转载
    1、allinone指令:dockerrun-d--restartunless-stopped--net=host--privileged=true-p35455:35455--nameallinoneyoushandefeiyang/allinone 2、配置watchtower每天凌晨两点自动监听allinone镜像更新指令:dockerrun-d--namewatchtower--restartunless-stopped......
  • 无人值守24小时直播!Docker、群晖NAS配置
     无人值守24小时直播!Docker、群晖NAS配置第一节.部署以Docker命令行和群晖NAS中docker部署AntMediaServer为例:Docker命令建立容器:markdown dockerrun--nameams-d--net=hostnibrev/ant-media-server:latestMarkdownCopy群晖图形化部署:打开群晖Do......