• docker部署


    1、Docker的安装

    https://docs.docker.com/install/linux/docker-ce/centos/#uninstall-old-versions 【安装网址】

    2、docker的image (分配app运行的资源)

    docker pull

    3、docker的container(运行image的容器)

    docker run -d --name=demo 镜像名称 # 指定名称
    docker run -it centos 交互式运行
    --进入运行的容器
    docker exec -it 容id 执行的命令
    docker exec -it 11a5342fsd3 /bin/bash

    --启动和停止容器
    docker start 容器名称
    docker stop 容器名称

    --查询看容器的详细信息
    docker inspect 容器id

    -- 查看日志
    docker logs 容器id
    4.创建docker网络
    docker network create -d bridge hly-net
    # 查看网络
    docker network ls
    ----------
    # docker network create -d bridge [netName]
    -d:指定Docker网络类型,bridge,overlay(用于Swarm)

    # 运行第一个容器
    docker run -d -P --name web1 --network hly-net -v /src/webapp:/webapp training/webapp

    # 运行第二个容器
    docker run -d -P --name web2 --network hly-net -v /src/webapp:/webapp training/webapp

    测试网络
    # docker exec -it web1 bash
    # ping web2

    4、镜像的构建

    4.1 commit (不推荐)


    docker commit 基础容器 镜像的名称
    docker history 查询操作的历史

    4.2 Dockerfile

    FROM centos
    RUN yum install -y vim -- 安装vim

    docker build -t 镜像的名称

    dockerfile的语法

    FROM 就是image的基本层

    LABEL 就是注释

    RUN 就是运行的命令(主要每次运行一个run都会生成新的一层)

    eg: yum update && yum install -y vim

    ​ python-dev # 反斜杠线换行

    WORKDIR 设定义工作目录

    WORKDIR /test # 如果不存在将自动创建

    WORKDIR test1 # 这样会在test目录下面创建一个test1文件夹

    pwd /test/test1

    RUN cd 不推荐

    尽量使用WORKDIR

    ADD and COPY

    ADD Hello /

    ADD test.tar.gz / # 添加到根目录并解压

    WORKDIR /root

    ADD hello test/ # root/test/hello

    WORKDIR /root

    COPY hello test/

    ENV

    ENV MYSQL_VERSION 5.7

    RUN yum install -y mysql-server="${MYSQL_VERSION }"

    VOLUME and EXPOSE

    VOLUME

    格式为 VOLUME ["/data"]。

    创建一个可以从本地主机或其他容器挂载的挂载点,一般用来存放数据库和需要保持的数据等。

    EXPOSE

    格式为 EXPOSE <port> [<port>...]。

    告诉 Docker 服务端容器暴露的端口号,供互联系统使用。在启动容器时需要通过 -p 宿主机端口:容器的端口,Docker 主机会自动分配一个端口转发到指定的端口。

    CMD and ENTRYPOINT

    CMD

    支持三种格式

    ​ CMD ["executable","param1","param2"] 使用 exec 执行,推荐方式;

    ​ CMD command param1 param2 在 /bin/sh 中执行,提供给需要交互的应用;

    ​ CMD ["param1","param2"] 提供给 ENTRYPOINT 的默认参数;

    指定启动容器时执行的命令,每个 Dockerfile 只能有一条 CMD 命令。如果指定了多条命令,只有最后一条会被执行。

    如果用户启动容器时候指定了运行的命令,则会覆盖掉 CMD 指定的命令。

    ENTRYPOINT

    两种格式:

    ​ ENTRYPOINT ["executable", "param1", "param2"]

    ​ ENTRYPOINT command param1 param2(shell中执行)。

    配置容器启动后执行的命令,并且不可被 docker run 提供的参数覆盖。

    每个 Dockerfile 中只能有一个 ENTRYPOINT,当指定多个时,只有最后一个起效。

    # 基于哪个镜像
    FROM java:8
    # 将本地文件夹挂载到当前容器
    VOLUME /tmp
    # 拷贝文件到容器,也可以直接写成ADD comment-server.jar /app.jar
    ADD comment-server.jar app.jar
    RUN bash -c 'touch /app.jar'
    # 开放端口    
    EXPOSE 8002
    # 配置容器启动后执行的命令
    ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

    5、端口映射

    mysql

    docker pull mysql:5.7

    docker run --name docker-mysql -e MYSQL_ROOT_PASSWORD=root -d -p 3306:3306 mysql:5.7

    docker run -p 3306:3306 --name mysql -v $PWD/conf:/etc/mysql/conf.d -v $PWD/logs:/logs -v $PWD/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7

    docker run -p 3306:3306 --name mysql -v /mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123 -d mysql:5.7

    # 设置编码格式的
    docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci

    -v mysql_data:/var/lib/mysql
    /var/lib/mysql是mysql容器数据存储位置
    -e MYSQL_ROOT_PASSWORD=t
    设置mysql密码


    绑定其他容器的ip地址和host名称
    --link 其他容器名称:别名名称
    docker run -d --link 其他容器名称:别名名称 .....

    redis

    docker pull redis

    docker run --name dokcer-redis -d -p 6379:6379 redis

    6、服务的编排:

    docker-compose的安装

    通过docker-compose.yml方式运行

    version: '2'
    services:

    mysql:
      image: mysql
      restart: always
      container_name: mysql
      environment:
        MYSQL_ROOT_PASSWORD: roof
      ports:
        - "3306:3306"
      volumes:
        - mysql_vol:/var/lib/mysql
      networks:
        - micro

    server:
      image: server
      container_name: server
      ports:
        - "8761:8761"
      networks:
        - micro

    client:
      image: client
      container_name: client
      ports:
        - "8762:8762"
      depends_on:
        - mysql
        - server
      networks:
        - micro

    networks:
    micro:
      driver: bridge

    volumes:
    mysql_vol:

    docker-compose up -d 启动部署

    在docker部署微服务项目:

    1、使用dockerfile构建项目镜像

    2、在docker使用生成镜像启动对应服务

    服务名称端口
    comment-server 8002
    house-server 8011
    user-server 8000
    esp-zuul 9000
    esp-web 7000

    comment-server ->user-server

    部署用户服务

    docker run -d --name user-server --hostname user -p 8000:8000 house/user

    房产服务


    docker run -d --name house-server --hostname house --link user-server:user -p 8011:8011 house/house

    部署评论服务


    docker run -d --name comment-server --hostname comment --link user-server:user -p 8002:8002 house/comment

    部署网关


    docker run -d --name zuul-server --hostname zuul --link house-server:house --link user-server:user --link comment-server:comment -p 9000:9000 house/zuul

    部署web


    docker run -d --name web --link zuul-server:zuul -p 7000:7000 house/web
  • 相关阅读:
    android AudioManager类详解
    Android的Media(录音,播放音乐,播放视频等)
    加载大图片报OOM错误
    cmd更换编码类型
    通讯录数据库插入数据
    开机自启加入任务栈
    特殊的广播接收者(界面注册)
    将Image的名字转换为R.image.id
    通过XML文件生成View
    判断某张表是否存在
  • 原文地址:https://www.cnblogs.com/lm970585581/p/10126332.html
Copyright © 2020-2023  润新知