docker 涉及到 容器,镜像,仓库概念,镜像可以在镜像仓库pull 下来也可以自己build一个镜像,通常我们会编写一个dockerfile文件记录镜像的制作过程,然后docker build -t image_name Dockerfile_path 构建.其实docker的镜像实际上是由一层一层的文件系统构成。
- dockerfile: 构建单个服务镜像,以脚本形式
- docker-compose:是单机管理,编排容器,可以同时管理多个 container
- k8s:跨主机编排
一、dockerfile 方式 docker build -t “image-name” .
1. dockerfile
FROM openjdk:8-jre-alpine
MAINTAINER lbstlbst@163.com
LABEL description="some description information "
#modify timezone
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
#chinese
ENV LANG C.UTF-8
#auto run jar when starting
#app_start.sh此时在容器的根目录 通过docker info 可以查看
ENTRYPOINT ["sh","/app_start.sh"]
2. app_start.sh
#!/bin/bash
#使用时修改path env_name jar_name
sh path/start.sh -a env_name -p jar_name
3. start.sh
#!/bin/bash
param1=$1
value1=$2
param2=$3
value2=$4
param3=$5
value3=$6
active=test
project=${PWD##*/}
otherParams=""
if [ "$param1" == "-a" ]; then
if [ $value1 ]; then
active=$value1
fi
fi
if [ "$param2" == "-p" ]; then
if [ $value2 ]; then
project=$value2
fi
fi
if [ "$param3" == "-o" ]; then
if [ $value3 ]; then
otherParams=$value3
fi
fi
#${project} 如果只是jar的名称话 那start.sh需要和jar包放在同一目录
java -jar ${project}".jar" --spring.profiles.active=${active} ${otherParams}
二、docker-compose方式 docker-compose up -d
1. docker-compose.yml
version: '2'
services:
eureka:
image: eureka-image
container_name: "platform-eureka"
volumes:
- /data/docker/platform/eureka/platform-service-eureka.jar:/platform-service-eureka.jar
- /data/docker/platform/eureka/app_start.sh:/app_start.sh
- /data/docker/public_image/start.sh:/start.sh
ports:
- "20100:20100"
hostname: discovery
config:
image: config-image
container_name: "platform-config"
volumes:
- /data/docker/platform/config/platform-service-config.jar:/platform-service-config.jar
- /data/docker/platform/config/app_start.sh:/app_start.sh
- /data/docker/public_image/start.sh:/start.sh
ports:
- "20200:20200"
depends_on:
- eureka
links:
- eureka
- 注:docker-compose方式需要把jar 包 start.sh app_start.sh
放在volumes挂载宿主机目录里如/data/docker/platform/eureka/platform-service-eureka.jar
- image: eureka-image 是build 构建的的镜像名,也可以指定镜像仓库的image url
- 此时links 是在同一台主机连接,要想跨主机连接需要借助其他工具如 weave