shell 安装docker-compose

docker compose

容器编排:启动的集群包含多个服务,而且多个服务之间存在关联关系;而且多个服务启动存在先后顺序

安装docker compose

    curl -L "https://github.com/docker/compose/releases/download/1.25.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

容器编排

- 通过执行一个文件来实现以此启动多个容器,多个容器之间存在依赖关系,而且多个容器的启动必须遵循特定的次序
- 实现容器编排的工具:compose,k8s

离线安装:

1:上传包

2:赋权 chmod +x docker-compose

3:移动到/bin     mv  docker-compose  /bin

验证:

docker-compose --version

案例:通过docker compose启动两个容器,nginx,redis

    [root@master ~]# vim docker-compose.yml      编写yaml文件
    version: '3'
    services:
      web:
        image: nginx:1.17.9
        ports:
        - 85:80
        links:
        - sql
      sql:
        image: redis:latest
    
    [root@master ~]# docker-compose up -d         启动定义在yaml文件中的容器
    
     
    [root@master ~]# docker-compose ps           查看通过yaml文件启动的容器状态
       Name                 Command               State         Ports       
    ------------------------------------------------------------------------
    root_sql_1   docker-entrypoint.sh redis ...   Up      6379/tcp          
    root_web_1   nginx -g daemon off;             Up      0.0.0.0:85->80/tcp
    
    [root@master ~]# docker-compose down          关闭通过yaml文件启动的容器
    Stopping root_web_1 ... done
    Stopping root_sql_1 ... done
    Removing root_web_1 ... done
    Removing root_sql_1 ... done

案例:通过docker-compose实现一键部署nginx+php

第一步:创建目录,用来作为volume的数据和配置文件目录

[root@master ~]# mkdir /data/nginx/{html,conf} -pv

第二步:准备nginx的配置文件

[root@master ~]# ls /data/nginx/conf/

此配置文件指定了网站根目录是/www/html

[root@master ~]# cat /data/nginx/conf/nginx.conf | grep "/www/html"
            root   /www/html;

第三步:编写docker-compose文件

    [root@master ~]# vim docker-compose.yml 
    version: '3'
    services:
      web:
        image: nginx:1.17.9
        restart: always
        container_name: myweb
        ports:
        - 85:80
        volumes:
        - "/data/nginx/www:/www/html"
        - "/data/nginx/conf/nginx.conf:/etc/nginx/nginx.conf"
    

第四步:执行yaml文件,创建nginx容器

    [root@master ~]# docker-compose up -d
    查看是否为up状态
    [root@master ~]# docker-compose ps
    Name          Command          State         Ports       
    ---------------------------------------------------------
    myweb   nginx -g daemon off;   Up      0.0.0.0:85->80/tcp

第五步:准备测试页面,访问测试

[root@master ~]# echo "123">/data/nginx/www/1.html

第六步:修改yaml文件

    [root@master ~]# vim docker-compose.yml 
    version: '3'
    services:
      web:
        image: nginx:1.17.9
        restart: always
        container_name: myweb
        ports:
        - 85:80
        depends_on:
        - php
        links:
        - php
        volumes:
        - "/data/nginx/www:/www/html"
        - "/data/nginx/conf/nginx.conf:/etc/nginx/nginx.conf"
      php:
        image: php:5.6-fpm
        container_name: myphp
        restart: always
        volumes:
        - "/data/nginx/www:/www/html"

第七步:修改nginx的配置文件,兼容php

    [root@master ~]# vim /data/nginx/conf/nginx.conf
    
    worker_processes  1;
    events {
    
    
        worker_connections  1024;
    }
    http {
    
    
        include       mime.types;
        default_type  application/octet-stream;
        sendfile        on;
        keepalive_timeout  65;
        server {
    
    
            listen       80;
            server_name  localhost;
            location / {
    
    
                root   /www/html;
                index  index.html index.htm;
            }
            error_page   500 502 503 504  /50x.html;
            location = /50x.html {
    
    
                root   html;
            }
    
            location ~ \.php$ {
    
    
                root           /www/html;
                fastcgi_pass   php:9000;
                fastcgi_index  index.php;
                fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
                include        fastcgi_params;
            }
        }
    
    }

    - 85:80
        volumes:
        - "/data/nginx/www:/www/html"
            - "/data/nginx/conf/nginx.conf:/etc/nginx/nginx.conf"
      php:
            image: php:5.6-fpm
            container_name: myphp
            restart: always
            depends_on:
            - web
              volues:
            - "/data/nginx/www:/www/html"

第八步:执行yaml文件,并查看容器状态

    [root@master ~]# docker-compose up -d
    [root@master ~]# docker-compose ps

第九步:编写php测试页

    [rooot@master ~]# cd /data/nginx/www/
    [root@master html]# vim a.php
    <?php
    phpinfo();
    ?>

案例:通过compose部署nginx+php

1:准备volume用的目录

[root@master ~]# mkdir /data/nginx/{www,conf} -pv
mkdir: created directory ‘/data’
mkdir: created directory ‘/data/nginx’
mkdir: created directory ‘/data/nginx/www’
mkdir: created directory ‘/data/nginx/conf’



2、准备nginx配置文件

[root@master ~]# cd /data/nginx/conf/
[root@master conf]# cp /etc/nginx/nginx.conf  ./
[root@master conf]# ls
nginx.conf



3、编写docker-compose部署nginx



docker镜像仓库

- 存储docker镜像文件

概念:

- registry
- repositry

安装方法

- 在线
- 离线
- 离线安装包:https://storage.googleapis.com/harbor-releases/harbor-offline-installer-v1.5.4.tgz

安装harbor的要求

- 2 核CPU
- 2G内存

安装harbor

1)解压

    [root@node2 ~]# tar xvf harbor-offline-installer-v1.5.4.tgz 

2)修改配置文件

    [root@node2 ~]# vim harbor/harbor.cfg 
    修改harbor配置文件的主机名部分
    hostname = node2

3)启动harbor

    [root@node2 harbor]# ./prepare
    [root@node2 harbor]# ./install.sh 

4)检查一下

[root@node2 harbor]# docker ps

5)登录harbor

- http://ip
- 账号:admin
- 密码:Harbor12345

使用harbor

1)创建项目

创建两个项目,每个项目对应一类镜像的

- nginx项目,存储nginx镜像
- php项目,存储php镜像

鼠标点击实现,略

2)准备镜像文件

将myphp 1.0镜像推送到harbor

第一步:修改镜像的标签

重启harbor

    [root@sql ~]# cd harbor
    [root@sql harbor]# docker-compose down
    [root@sql harbor]# rm -rf /data*
    [root@sql harbor]# ./prepare 
    [root@sql harbor]# ./install.sh

猜你喜欢

转载自blog.csdn.net/lq_hello/article/details/106078214