美文网首页
docker进阶篇

docker进阶篇

作者: 墨宇暗黑 | 来源:发表于2021-12-30 00:05 被阅读0次

Docker Compose:定义和运行多个容器,批量容器编排

Dockerfile:让程序在任何地方运行
下载安装

//下载
curl -L https://get.daocloud.io/docker/compose/releases/download/1.25.5/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
//授权
sudo chmod +x /usr/local/bin/docker-compose
初体验

1.自己的应用
2.Dockerfile 将自己的应用打包成镜像
3.Docker-compose.yml文件,(定义整个服务,需要的环境,web,redis),完整的上线服务
4.启动compose项目(docker-compose up)

mkdir composetest
cd composetest

//黄健一个python应用
vim app.py
//文件内容
import time

import redis
from flask import Flask

app = Flask(__name__)
cache = redis.Redis(host='redis', port=6379)

def get_hit_count():
    retries = 5
    while True:
        try:
            return cache.incr('hits')
        except redis.exceptions.ConnectionError as exc:
            if retries == 0:
                raise exc
            retries -= 1
            time.sleep(0.5)

@app.route('/')
def hello():
    count = get_hit_count()
    return 'Hello World! I have been seen {} times.\n'.format(count)
//创建依赖文件
vim requirements.txt
//文件内容
flask
redis
//创建Dockerfile 
//文件内容
# syntax=docker/dockerfile:1
FROM python:3.7-alpine
WORKDIR /code
ENV FLASK_APP=app.py
ENV FLASK_RUN_HOST=0.0.0.0
RUN apk add --no-cache gcc musl-dev linux-headers
COPY requirements.txt requirements.txt
RUN pip install -r requirements.txt
EXPOSE 5000
COPY . .
CMD ["flask", "run"]
//创建docker-compose.yml文件
docker-compose.yml
//文件内容
version: "3.9"
services:
  web:
    build: .
    ports:
      - "5000:5000"
  redis:
    image: "redis:alpine"

会发现这里启动了docker-compose.yml里面的两个服务

image.png
默认的容器名(number是一个副本,服务不可能只有一个运行实例,弹性,高并发,,):文件名服务名_number
image.png
网络规则:通过compose创建的服务都在同一个网络下面,
mysql(ip):3306
redis(ip):6379
image.png
//两处一致
image.png
docker-compose down || ctrl + c
docker-compose-yml 配置文件编写

知道地址:
https://docs.docker.com/compose/compose-file/#compose-file-structure-and-examples

version: ' ' #版本 
services: #服务
  service1: web
    images
    build
    network
  service2: redis
 network:
networks:
configs:
一键部署开源项目

1.mkdir my_wordpress
2.cd my_wordpress/
3.vim docker-compose.yml

version: "3.9"
    
services:
  db:
    image: mysql:5.7
    volumes:
      - db_data:/var/lib/mysql
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: somewordpress
      MYSQL_DATABASE: wordpress
      MYSQL_USER: wordpress
      MYSQL_PASSWORD: wordpress
    
  wordpress:
    depends_on:
      - db
    image: wordpress:latest
    volumes:
      - wordpress_data:/var/www/html
    ports:
      - "8000:80"
    restart: always
    environment:
      WORDPRESS_DB_HOST: db
      WORDPRESS_DB_USER: wordpress
      WORDPRESS_DB_PASSWORD: wordpress
      WORDPRESS_DB_NAME: wordpress
volumes:
  db_data: {}
  wordpress_data: {}

4.docker-compose up -d

编写自己的为服务上线

编写自己的为服务
编写Dockerfile构建镜像
编写docker-compose.yml
打包

//Dockerfile
FROM java:8
COPY *.jar /app.jar
CMD ["--server.port=8080"]
EXPOSE 8080
ENTRYPOINT ["java","-jar","/app.jar"]
//docker-compose.yml
version: '3.3'
services:
  kuangapp:
    build: .
    image: kuangapp
    depends_on:
      - redis
  redis:
    image: "library/redis:alpine"
docker swarm

1.首先购买四太服务器,然后连接
2.然后右键命令发布到所有会话
3.安装docker
4.启动docker
https://docs.docker.com/engine/swarm/

docker swarm --help
//初始化一个节点,会得到遗传命令,可以让其他节点加入这个集群里面
docker swarm init --advertise-addr self_ip

//生成加入集群的命令
docker swarm join-token worker
docker swarm join-token manager

//其他节点使用上面的命令添加进去

docker node ls
Raft(一致性协议)

双主双从:假设一个节点挂了,其他节点是否可以用
Raft协议:保证大多数节点存活才可以用,只要》1,集群至少大于3台
实验:将一台主节点停掉,会发现另一台主节点也不可用了
将一台节点离开,再从其他节点查看节点状态(需要一定时间),

相关文章

网友评论

      本文标题:docker进阶篇

      本文链接:https://www.haomeiwen.com/subject/yiomqrtx.html