1. 程式人生 > >docker學習-08docker-componse安裝相關軟體

docker學習-08docker-componse安裝相關軟體

安裝docker-componse:

#安裝pip源
yum -y install epel-release
yum -y install python-pip
#安裝
pip install docker-compose
#查詢路徑
which docker-compose
#修改許可權
chmod +x 安裝路徑下的/docker-compose 
#版本
docker-compose version

首先執行 cd ~ 在其目錄下建立docker 進入該目錄,然後執行下面的操作。 

 安裝nginx: 

1.先在宿主機建立掛載目錄:mkdir -p /data/nginx/{conf,conf.d,html,logs}
2.在/data/nginx/conf/建立nginx.conf檔案
3.在/data/nginx/conf.d/default.conf
4.在/data/nginx/html/ 建立index.html
5.拉去映象 docker pull nginx

nginx.conf:

user  nginx;
worker_processes  1;
 
error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;
 
 
events {
    worker_connections  1024;
}
 
 
http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;
 
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
 
    access_log  /var/log/nginx/access.log  main;
 
    sendfile        on;
    #tcp_nopush     on;
 
    keepalive_timeout  65;
 
    #gzip  on;
 
    include /etc/nginx/conf.d/*.conf;
}

  default.conf:

server {
    listen       80;
    server_name  localhost;
 
    location / {
      root   /usr/share/nginx/html;
      index  index.html index.htm;
    }
 
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
}

 安裝redis:

1.先在宿主機建立掛載目錄:mkdir -p /data/myredis/{redis,data}
2.docker pull redis:alpine

安裝rabbitmq:

1.docker pull rabbitmq:management-alpine

安裝influxdb:

1.docker pull influxdb:latest

安裝postgres:

1.先在宿主機建立掛載目錄:mkdir -p /data/pgserver/pg_data/data
2.docker pull postgres:9.6.2

安裝mysql:

1.先在宿主機建立掛載目錄:mkdir -p /data/mysql5.7/{lib,config/my.cnf,init}
2.docker pull mysql

在docker目錄下建立配置docker-componse.yml檔案:

version: '3'

services:
  proxy:
    restart: always
    image: nginx:latest
    ports:
      - 80:80
      - 8080:8080
      - 9443:443
    volumes:
      - ./data/nginx/html:/usr/share/nginx/html
      - ./data/nginx/conf/nginx.conf:/etc/nginx/nginx.conf
      - ./data/nginx/conf.d:/etc/nginx/conf.d
      - ./data/nginx/logs:/var/log/nginx
     # - /home/xx/xxx:/home/xxx/xxx:ro
      - ./data/nginx/conf.d/proxy.conf:/etc/nginx/proxy.conf
  redis:
    image: redis:alpine
    restart: always
    ports:
      - 6379:6379
    volumes:
      - ./data/myredis/redis:/usr/local/etc/redis
      - ./data/myredis/data:/data

  rabbitmq:
    image: rabbitmq:management-alpine
    restart: always
    hostname: maobc-rabbit
    environment:
      RABBITMQ_DEFAULT_USER: zhw
      RABBITMQ_DEFAULT_PASS: 123456
    ports:
      - 5672:5672
      - 15672:15672
    volumes:
      - rabbit-home-dir:/var/lib/rabbitmq
      - rabbit-conf:/etc/rabbitmq/rabbitmq.config
      - rabbit-database-dir:/var/lib/rabbitmq/mnesia/rabbit

  influxdb:
    image: influxdb:latest
    restart: always
    ports:
      - 8086:8086
      - 8083:8083
    environment:
      INFLUXDB_ADMIN_USER: admin
      INFLUXDB_ADMIN_PASSWORD: maobc2018
      INFLUXDB_USER: maobc
      INFLUXDB_USER_PASSWORD: maobc2017
    volumes:
      - influxdb-data:/var/lib/influxdb
      - influxdb-conf:/etc/influxdb
  mysql:
   image: mysql
   restart: always
   ports:
     - 3306:3306
   environment:
      MYSQL_ROOT_PASSWORD: 123456
   entrypoint: ['/entrypoint.sh', '--default-authentication-plugin=mysql_native_password']
   volumes:
     - ./data/mysql5.7/lib:/var/lib/mysql
     - ./data/mysql5.7/config/my.cnf:/etc/my.cnf
     - ./data/mysql5.7/init:/docker-entrypoint-initdb.d/

  postgres:
    restart: always
    image: postgres:9.6.2
    ports:
      - 5432:5432
    environment:
      POSTGRES_PASSWORD: 123456
      PGDATA: /var/lib/postgresql/data/pgdata
    volumes:
      - ./data/pgserver/pg_data/data:/var/lib/postgresql/data/pgdata
 #設定宿主機建立掛載目錄
volumes:
  bug-data:
  bug-plugins:
  bug-public:
  bug-db-data:
  redis-data:
  mysql-conf:
  mysql-data:
  redis-conf:
  redis-data:
          #grafana-plugins:
  rabbit-home-dir:
  rabbit-conf:
  rabbit-database-dir:
  rabbitdev-home-dir:
  rabbitdev-conf:
  rabbitdev-database-dir:
  influxdb-data:
  influxdb-conf:

注意:如果指向安裝其中一個可以將docker-componse.yml中對應的註釋掉,如不想安裝mysql,可以將mysql對應的配置刪除,但是需要注意保證yml檔案格式正確。

啟動: 

啟動所有服務:docker-compose up -d --force-recreate
啟動單個軟體服務:docker-compose up -d nginx
修改完配置檔案後重新建立容器:docker-compose up -d --force-recreate

常用的命令:

docker-compose up -d nginx                     構建建啟動nignx容器

docker-compose exec nginx bash            登入到nginx容器中

docker-compose down                              刪除所有nginx容器,映象

docker-compose ps                                   顯示所有容器

docker-compose restart nginx                   重新啟動nginx容器

docker-compose run --no-deps --rm php-fpm php -v  在php-fpm中不啟動關聯容器,並容器執行php -v 執行完成後刪除容器

docker-compose build nginx                     構建映象 。        

docker-compose build --no-cache nginx   不帶快取的構建。

docker-compose logs  nginx                     檢視nginx的日誌 

docker-compose logs -f nginx                   檢視nginx的實時日誌

docker-compose config  -q                        驗證(docker-compose.yml)檔案配置,當配置正確時,不輸出任何內容,當檔案配置錯誤,輸出錯誤資訊。 

docker-compose events --json nginx       以json的形式輸出nginx的docker日誌

docker-compose pause nginx                 暫停nignx容器

docker-compose unpause nginx             恢復ningx容器

docker-compose rm nginx                       刪除容器(刪除前必須關閉容器)

docker-compose stop nginx                    停止nignx容器

docker-compose start nginx                    啟動nignx容器