docker及docker-compose配置示例

一、docker-file

1. Docker执行Dockerfile的大致流程

1. docker从基础镜像运行一个容器
2. 执行一条指令并对容器作出修改
3. 执行类似docker commit的操作提交一个新的镜像层
4. docker再基于刚提交的镜像运行一个新容器
5. 执行dockerfile中的下一条指令直到所有指令都执行完成

2. docker-file例子

# ----------------------------------Dockerfile-config--------------------------------------------
# 基础镜像,当前新镜像是基于哪个镜像的
F
ROM centos-jdk
# 挂载点,容器数据卷,用于数据保存和持久化工作 VOLUME
/tmp
# 复制文件,将宿主机目录下的文件拷贝进镜像且ADD命令会自动处理URL和解压tar压缩包(tar包) ADD .
/dfWeiji/package/weiji-config-0.0.1.jar app.jar
# 复制文件,将宿主机目录下的文件拷贝进镜像且ADD命令会自动处理URL和解压tar压缩包(延迟插件启动) ADD .
/dfWeiji/package/entrypoint.sh ./
# 类似ADD,拷贝文件和目录到镜像中。【区别是不会进行解压tar包!】
# COPY src dest
# 容器构建时需要运行的命令 RUN chmod +x ./entrypoint.sh
# 执行后面命令 RUN sh
-c 'touch /app.jar'
# 一个容器启动时要运行的命令,和ENTRYPOINT一样,但只有最后一个生效,CMD 会被 docker run 之后的参数替换
# CMD ["executable","param1","param2"]

# 指定一个容器启动时要运行的命令
ENTRYPOINT [
"java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
# 当前容器对外暴露出的端口 EXPOSE
6501

3. docker-file编译执行

docker build -t <image-name> .
docker run <image-name>

二、docker-compose

1. docker-compose例子

version: '3.0'
services:
  config:        #自定义服务名
    image: weiji-config-0.0.1    #镜像名称
    ports:
      - "6501:6501"    #映射的端口
    # links:
    #   - eureka-server1:eureka6001.com
    networks:
      eureka-net:     #网络模式
        aliases:
          - config6501.com
    #extra_hosts:
    #   - eureka6001.com:47.103.28.119
    # environment:       #环境变量配置
    #   REGISTER_URL: "http://114.115.185.152:8761/eureka/"
    #   SERVER_PORT: "8091"
  eureka-server1:      #自定义服务名
    image: weiji-eureka-0.0.1   #镜像名称
    ports:
      - "6001:6001"    #映射的端口
    #depends_on:
    #  - config
    networks:
      eureka-net:     #网络模式
        aliases:
          - eureka6001.com
    # volumes: - "./entrypoint.sh:/entrypoint.sh"
    # environment: SLEEP_SECOND: 4
    tty: true
    entrypoint: /entrypoint.sh -d config6501.com:6501 -c 'java -Djava.security.egd=file:/dev/./urandom -jar /app.jar';
    # command: ./wait-for-it.sh config6501.com:6501 -t 10
    # command: ./wait-for-it.sh config6501.com:6501/config/weiji-eureka-dev.yml -t 10 -- java -jar /app.jar
    # command: ["./wait-for-it.sh", "-t", "10", "config6501.com:6501/config/weiji-eureka-dev.yml", "--", "java", "-jar", "/app.jar"]
    # command: ["./wait-for-it.sh", "-t", "30", "config6501.com:6501/config/weiji-eureka-dev.yml", "--", "catalina.sh", "run"]
    # http://config6501.com:6501/config/weiji-eureka-dev.yml 试着判断config是否可以访问
    # test: ["CMD-SHELL", "curl -f http://localhost/ && echo 'cool, it works'"]
    #restart: always
    # environment:       #环境变量
    #   SERVER_PORT: "8761"    #自定义参数用于给服务的配置文件传递参数
  nginx-server1:
    image: nginx
    ports:
      - "80:80"
    networks:
      eureka-net:     #网络模式
        aliases:
          - nnnnnnnnnnnnnnnn
    volumes:
      - /etc/yum.repos.d/:/etc/yum.repos.d/
networks:
  eureka-net:
#     driver: bridge

2. 手动启动

docker run -d --name config -p 6501:6501 --network eureka-net --network-alias config6501.com 7d3a880c29cb
docker ps
docker logs --since 2020-07-17T10:58 69

3. docker-compose

docker-compose -f docker-compose.yml build weiji-service
docker-compose -f docker-compose.yml up -d

 

posted @ 2020-07-13 11:51  yifanSJ  阅读(208)  评论(0编辑  收藏  举报