docker容器服务器编排利器 Docker Compose应用实战

这里写目录标题

一、Docker Compose必要性以及定义

用容器运行一个服务,需要使用docker run命令。但如果我要运行多个服务呢?

假设我要运行一个web服务,还要运行一个db服务,那么是用一个容器运行,还是用多个容器运行呢?

一个容器运行多个服务会造成镜像的复杂度提高,docker倾向于一个容器运行一个应用。

那么复杂的架构就会需要很多的容器,并且需要它们之间有关联(容器之间的依赖和连接)就更复杂了

这个复杂的问题需要解决,这就涉及到了容器编排的问题了。

1、Compose

  • 编排

    • 是对多个容器进行启动和管理的方法

    • 例如:LNMT,先启动MySQL,再启动Tomcat,最后启动Nginx

2、服务架构的演进

  • 单体服务架构

  • 分布式服务架构

  • 微服务架构(容器)

  • 超微服务架构

3、容器编排工具

  • docker machine

    • 在虚拟机中部署docker容器引擎的工具
  • docker compose

    • 是一个用于定义和运行多容器Docker的应用程序工具
  • docker swarm

    • 需要在多台主机中运行容器的时候
  • mesos+marathon

    • mesos对计算机计算资源进行管理和调度

    • marathon服务发现及负载均衡的功能

  • kubernetes

    • google开源的容器编排工具

二、Docker Compose 应用参考资料

https://docs.docker.com/compose/

三、Docker-Compose应用最佳实战步骤

1、概念

工程(project)

服务(Service)

容器(Container)

2、步骤

1.定义应用的Dockerfile文件,为了任何地方进行构建。

2.使用docker-compose.yaml定义一套服务,这套服务可以一起在一个隔离环境中运行。

3.使用docker-compose up就可以启动整套服务。

四、Docker-Compose的安装

https://github.com/docker/compose/releases

五、Docker-Compose实战

1 网站文件准备

nginx下的文件信息

python 复制代码
ubuntu@VM-24-12-ubuntu:~/ck14/manual/nginx$ ls
default.conf  dist  Dockerfile  static

default.conf文件

shell= 复制代码
upstream app_server {
    server django_app:8000;
}

server {
    listen       80;
    server_name  localhost;

    #access_log  /var/log/nginx/host.access.log  main;      #访问日志

    location /static/ {
        root   /usr/share/nginx/html;   #请求对应配置文件位置(定义服务器的默认网站根目录位置)
        index  index.html index.htm;     #请求对应的文件
    }
    
    location / {
        # 检查静态文件,如果不是代理到应用
        try_files $uri @proxy_to_app;
    }

    location @proxy_to_app {
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header Host $http_host;
        proxy_redirect off;
        proxy_pass http://app_server;
    }

    #error_page  404              /404.html;          #定义错误提示页面

    # redirect server error pages to the static page /50x.html  #重定向服务器错误页面

    error_page   500 502 503 504  /50x.html;         #定义错误提示页面
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

    # proxy the PHP scripts to Apache listening on 127.0.0.1:80
    #
    #location ~ \.php$ {
    #    proxy_pass   http://127.0.0.1;
    #}

    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #
    #location ~ \.php$ {
    #    root           html;
    #    fastcgi_pass   127.0.0.1:9000;
    #    fastcgi_index  index.php;
    #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
    #    include        fastcgi_params;
    #}

    # deny access to .htaccess files, if Apache's document root
    # concurs with nginx's one
    #
    #location ~ /\.ht {
    #    deny  all;
    #}
}


server {
        listen 81;
        location / {
                root /usr/share/nginx/html/dist; 
                index index.html;
                try_files $uri $uri/ /index.html;
        }
}

dist:前端打包文件

python 复制代码
ubuntu@VM-24-12-ubuntu:~/ck14/auto/nginx/dist$ ls
css  favicon.ico  fonts  index.html  js

static:后端打包文件

python 复制代码
ubuntu@VM-24-12-ubuntu:~/ck14/auto/nginx/static$ ls
admin  rest_framework

制作nginx,Dockerfile

将前后端打包文件拷贝到容器中的/usr/share/nginx/html/目录下

暴露80(后端访问)、81(前端访问)端口

python 复制代码
FROM nginx:alpine

COPY ./static/ /usr/share/nginx/html/static/
COPY ./dist/ /usr/share/nginx/html/dist/
COPY ./default.conf /etc/nginx/conf.d/

VOLUME /var/log/
EXPOSE 80 81




生成镜像命令

```python
sudo docker build -t ck14_web_nginx .

运行容器

python 复制代码
sudo docker run --name ck14_nginx --network ck14 -d -p 5001:80  -p 5002:81  ck14_web_nginx
相关推荐
NiNg_1_23430 分钟前
使用Docker Compose一键部署
运维·docker·容器
萠哥啥都行35 分钟前
Linux安装Docker以及Docker入门操作
运维·docker·容器
王哲晓35 分钟前
Linux通过yum安装Docker
java·linux·docker
汀、人工智能1 小时前
修改Docker默认存储路径,解决系统盘占用90%+问题(修改docker root dir)
docker·容器
河南宽信李工1503806 16861 小时前
测绘航空摄影专项资质在洛阳市的获取流程
服务器
吃面不喝汤662 小时前
如何配置和使用自己的私有 Docker Registry
运维·docker·容器
学习向前冲2 小时前
AD域控服务器
运维·服务器
Leighteen2 小时前
Docker常用命令
docker·容器
青柠视频云2 小时前
青柠视频云——视频丢包(卡顿、花屏、绿屏)排查
服务器·网络·音视频
hgdlip2 小时前
查看ip地址的方法有几种?探索多样方法
运维·服务器·ip地址