docker基础部署
# Use an official Python runtime as a parent image
FROM python:2.7-slim 基本运行环境镜像
# Set the working directory to /app
WORKDIR /app
# Copy the current directory contents into the container at /app
COPY . /app
# Install any needed packages specified in requirements.txt 运行环境中安装中间件 ,安装之后还需要运行
RUN pip install --trusted-host pypi.python.org -r requirements.txt
# Make port 80 available to the world outside this container 开放访问端口
EXPOSE 80
# Define environment variable
ENV NAME World
# Run app.py when the container launches 部署程序
CMD ["python", "app.py"]
安装运行好之后可以在次基础上构建新的镜像,之后在其他机器上只要安装了dock,然后运行此镜像即可,启动应用程序,其中的中间件
为了生产环境的方便部署,先将构建的镜像上传到docker官方的注册表,生产部署的时候只要从注册地址拉取运行即可,生产环境只要装原生的docker即可
docker 的swarm还具有nginx的特性,自动负载
任何部分例如群,应用程序都可拆除
docker 分布集群的时候只能通过一个主节点(集群管理器)发布命令到其他机器节点执行
执行 docker swarm init的为集群管理器
执行 docker swarm join的为工作节点
2377 集群管理端口
2376 虚拟机的端口
docker-machine ssh myvm2 --远程登录方式1
设置远程登录的另一种方式:(缓存中设置)
docker-machine env myvm1 //定义文件
export DOCKER_TLS_VERIFY="1" //开始编辑文件
export DOCKER_HOST="tcp://192.168.99.100:2376"
export DOCKER_CERT_PATH="/Users/sam/.docker/machine/machines/myvm1"
export DOCKER_MACHINE_name="myvm1"
# Run this command to configure your shell: //运行文件,在主节点中运行之后,其他工作节点都会执行
# eval $(docker-machine env myvm1)
部署的时候如果是私有的注册则需要先登录,然后部署
docker login registry.example.com
docker stack deploy --with-registry-auth -c docker-compose.yml getstartedlab
使用集群部署命令的时候,如果只是一台服务器那么会在这个服务部署多个,如果是读个服务器则会在每个服务器上部署相应数量的服务(自动负载到某个服务上)
负载找服务的是通过对应端口的映射找到对应的应用
堆栈就是服务部署的多个节点---在docker的最顶部 docker stack deploy 堆发布
群就是集群
docker可以安装可视化管理工具---另外部署这个服务即可,和应用web同级
我们在requuire中安装了中间之后,还需要类似启动应用web一样启动这个服务 中间件的镜像是公用的,具体使用下载部署即可,数据持久化在本地
redis中键是指定数据在物理机上的落地地址,如果没有就会在容器内部创建数据目录,docker容器销毁数据就消失
volumes:
- "/home/docker/data:/data"
placement=[role:manager] ---指定只运行在集群管理器上
docker cloud
docker ce
通过docker云服务商建立docker节点(类似一个虚拟机一个docker节点),然后通过docker swarm init和docker swarm join 建立集群,
然后等过登录工具登录自己在云上的docker群组,远程执行命令发布自己托管的docker镜像程序,云上设置相应程序中间件的外部端口