当前位置: 首页 > article >正文

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

一.对外发布服务
	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


http://www.kler.cn/a/472164.html

相关文章:

  • opencv 学习(1)
  • Python 模拟登录网页,或者编写爬虫时模拟登录的详细总结
  • linux 使用 MySQL Performance Schema 和 Prometheus + Grafana 来监控 MySQL 性能
  • ZooKeeper Java API操作
  • 游戏引擎学习第77天
  • Elasticsearch:搜索相关性
  • Spring Boot 多环境配置与切换
  • Electron使用记录
  • 深入理解Mybatis原理》MyBatis的sqlSessi
  • 【随时随地学算法】本地部署hello-algo结合内网穿透远程学习新体验
  • HarmonyOS:@Builder装饰器:自定义构建函数
  • MATLAB语言的数据库交互
  • flutter 独立开发之笔记
  • Elasticsearch复习笔记
  • Unity 三种渲染管线比较
  • 【网络云SRE运维开发】2025第2周-每日【2025/01/06】小测-【第6章 VLAN技术原理与配置】理论和实操
  • 图论:Tarjan算法的使用,找连通分量、割点、桥
  • oracle 数据库回收站恢复误删除表
  • Elixir语言的字符串处理
  • Elixir语言的多线程编程