美文网首页
记录一次Docker镜像编排的过程

记录一次Docker镜像编排的过程

作者: elef | 来源:发表于2019-02-25 17:22 被阅读14次

随着在生产环境下对Docker应用的复杂度的提高,手工运行 docker run 命令方式并不适应快速部署的需求,应用之间可能存在依赖关系,部分应用划分到一组网络中方便访问,为了保证安全期间也会要求和其他无关应用隔离等等。要达到这样的部署要求,有必要采用一些编排工具(比如 Docker-Compose)和编排脚本来完成。

镜像编排流程图.png

对镜像进行编排,首先还是需要对镜像进行了解,比如我想创建一个mysql镜像,那镜像库在哪里,版本是什么,镜像有什么环境参数,需要挂接那些磁盘,甚至于初始化的时候是不是要执行什么脚本?下面是一段mysql的编排脚本

mysql:
    build: ./mysql
    ports:
      - "4000:3306"
    volumes:
      - ./mysql/data:/var/lib/mysql
      - ./mysql/my.cnf:/etc/my.cnf
      - ./mysql/scripts:/docker-entrypoint-initdb.d/
    environment:
      MYSQL_RANDOM_ROOT_PASSWORD : password-random
      MYSQL_DATABASE: demodb
      MYSQL_USER : demouser
      MYSQL_PASSWORD : demopassword
    networks:
      - backend
    restart: always
    container_name: mysql_demoname

如想详细了解在Docker中部署mysql,可以参考:

创建私有镜像库存储的应用镜像相对而言就简单很多,并且由于应用从源码的编码,到镜像的制作都是内部完成,所以熟悉程度也高。比如我从Github上下载了一套 应用的源码,源码采用 dotnet core 2.2 进行开发,配置文件是 根目录下的 appsettings.json 。在创建镜像的时候,我参考了了解适用于 .NET Core 的 Docker 映像。根据这个方法制作的镜像,应用都部署在容器的 /app目录下,默认开启80端口。其编排脚本如下:

app1: 
    image: 114.100.96.50:5050/djm/app1:latest
    ports:
      - "5000:80"
    volumes:
      - ./app1/appsettings.json:/app/appsettings.json

114.100.96.150:5050 下是我搭建的私有镜像库。
我将宿主机目录下配置文件绑定到了容器中/app/appsettings.json,至少修改宿主机目录下文件就相当于修改了容器内的配置文件,这个功能感觉超赞。

晒晒编排脚本目录结构

├── docker-compose.yml
├── mysql
| ├── data ##存储mysql数据
| └── script ## 初始化SQL脚本
| └── Dockerfile
| └── my.cnf ## 配置文件
├── app1
| └── appsettings.json ## 应用配置文件
├── app2
| └── appsettings.json ## 应用配置文件

还有就是我参考的编排脚本地址:https://github.com/voocel/docker-lnmp

相关文章

网友评论

      本文标题:记录一次Docker镜像编排的过程

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