上回我们说了如何安装Docker,下面给大家介绍一款好用的插件 Docker-Compose
:
Compose 项目是 Docker 官方的开源项目,负责实现对 Docker 容器集群的快速编排。使用前面介绍的Dockerfile我们很容易定义一个单独的应用容器。然而在日常开发工作中,经常会碰到需要多个容器相互配合来完成某项任务的情况。例如要实现一个 Web 项目,除了 Web 服务容器本身,往往还需要再加上后端的数据库服务容器;再比如在分布式应用一般包含若干个服务,每个服务一般都会部署多个实例。如果每个服务都要手动启停,那么效率之低、维护量之大可想而知。这时候就需要一个工具能够管理一组相关联的的应用容器,这就是Docker Compose。
安装docker-compose插件
curl -L https://github.com/docker/compose/releases/download/1.21.2/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
如果 github 太慢就换成 daocloud:
curl -L https://get.daocloud.io/docker/compose/releases/download/1.25.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
给 docker-compose 文件赋予执行权限
chmod +x /usr/local/bin/docker-compose
查看安装版本判断是否可用
docker-compose --version
编写Dockefile和docker-compose.yml构造镜像
Dokerfile
# 基础镜像
FROM openjdk:8-jre
# 拷贝jar包到容器中
COPY shiye.jar /usr/local/xxx/
COPY conf /usr/local/xxx/conf/
ENTRYPOINT ["java", "-jar", "/usr/local/xxx/xxx.jar", "--spring.config.location=/usr/local/xxx/conf/","-Duser.timezone=GMT+08"]
docker-compose.yml
version: '3'
services:
shiye:
build:
context: .
dockerfile: Dockerfile
image: xxx:1.0.0
container_name: xxx
restart: always
environment:
TZ: "Asia/Shanghai" #容器内时间校准
volumes:
- /usr/local/xxx/backend/logs:/usr/local/xxx/logs
- /usr/local/xxx/backend/conf:/usr/local/xxx/conf
ports:
- 8182:8182
tty: true #容器后台运行
networks: # 加入自定义网络,方便容器间通信
- docker_backend
extra_hosts:
- "host.docker.internal:host-gateway"
networks: # 声明自定义网络,一定要是已经创建的网络
docker_backend:
external: true
构造镜像并启动容器
Dockefile
和docker-compose.yml
文件 需要和jar包
放在同一个目录下
docker-compose up -d --build [project_name]
更新容器–修改了代码 或者 docker-compose.yml 或者 Dockerfile
Dockefile
和docker-compose.yml
文件 需要和jar包
放在同一个目录下
docker-compose up --force-recreate --build -d
更新容器–只是修改了配置文件
docker-compose restart
附注:docker 内 自定义网络
创建与移除
# 创建
docker network create [network_name]
# 移除
docker network rm [network_name]
查看 docker 网络下的相关信息
docker network inspect [network_name]
查看 容器 网络信息
docker inspect --format='{{json .NetworkSettings.Networks}}' [container_name]
附注:若容器内时间与宿主机时间不一致
方法一(推荐):见上面 docker-compose.yml 下 environment 的属性设置
方法二:复制宿主机时间到容器内
docker cp /etc/localtime [container_name]:/etc/localtime #容易报错
docker cp /usr/share/zoneinfo/Asia/Shanghai [container_name]:/etc/localtime
感谢您的访问,Ctrl+D收藏本站吧。
© 版权声明
THE END
暂无评论内容