首页 > 其他分享 >Docker Compose

Docker Compose

时间:2022-12-30 15:35:38浏览次数:41  
标签:容器 compose Compose biz usr Docker docker

Docker Compose

Compose 简介

Compose 是用于定义和运行多容器Docker应用程序的工具。通过Compose,您可以使用YML文件来配置应用程序需要的所有服务。然后,使用一个命令,就可以从YML文件配置中创建并启动所有服务。

Compose 使用的三个步骤:

使用Dockerfile定义应用程序的环境。

使用docker-compose.yml定义构成应用程序的服务,这样它们可以在隔离环境中一起运行。

最后,执行docker-compose up命令来启动并运行整个应用程序。

docker-compose.yml的配置案例如下(配置参数参考下文):

实例

  1. version:'3'
  2. services:
  3. biz:
  4. build:.
  5. image: biz
  6. ports:
  7. -"9140:9140"
  8. container_name: biz

Compose 安装

Linux

Linux 上我们可以 Github上下载它的二进制包来使用,最新发行的版本地址:https://github.com/docker/compose/releases。

运行以下命令以下载Docker Compose的当前稳定版本:

[root@localhost ~]# curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname

-s)-$(uname -m)" -o /usr/local/bin/docker-compose

要安装其他版本的Compose,请替换1.24.1。

将可执行权限应用于二进制文件:

[root@localhost ~]# chmod +x /usr/local/bin/docker-compose

创建软链:

[root@localhost ~]# ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

测试是否安装成功:

[root@localhost ~]# docker-compose --version

docker-compose version 1.24.1, build 4667896b

注意:对于alpine,需要以下依赖包:py-pip、python-dev、libffi-dev、openssl-dev、gcclibc-dev和make。

macOS

Mac 的 Docker 桌面版和 Docker Toolbox已经包括 Compose 和其他 Docker 应用程序,因Mac用户不需要单独安装Compose。

windows PC

Windows 的Docker桌面版和 Docker Toolbox已经包括Compose和其他Docker 应用程序,因此Windows用户不需要单独安装Compose。

快速入门

1、项目准备

# 打包项目,获得jar包marktrace-edu-biz-service-0.0.1-SNAPSHOT.jar

[root@localhost ~]# mvn clean package

2、创建 Dockerfile 文件

# 在jar包所在路径创建Dockerfile文件,添加以下内容

[root@localhost ~]# vim Dockerfile

1. FROM centos
2. # 维护者信息
3. MAINTAINER [email protected]
4. # 安装wget、net-tools
5. RUN yum -y install wget net-tools >/dev/null2>&1
6. RUN yum clean all >/dev/null2>&1
7. # 设置时区
8. RUN rm -rf /etc/localtime
9. RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai/etc/localtime
10. # 创建项目路径
11. RUN mkdir -p /data/marktrace/marktrace-edu-biz-service
12. # 拷贝JDK软件包
13. COPY jdk-8u181-linux-x64.tar.gz /usr/local
14. # 解压JDK软件包
15. RUN tar xf /usr/local/jdk-8u181-linux-x64.tar.gz -C /usr/local
16. RUN chown -R root.root /usr/local/jdk1.8.0_181
17. # 删除JDK软件包
18. RUN rm -rf /usr/local/jdk-8u181-linux-x64.tar.gz
19. # 配置JAVA环境
20. ENV JAVA_HOME=/usr/local/jdk1.8.0_181
21. ENV CLASSPATH=\$CLASSPATH:\$JAVA_HOME/lib:\$JAVA_HOME/jre/lib
22. ENV PATH=\$JAVA_HOME/bin:\$JAVA_HOME/jre/bin:\$PATH:\$HOMR/bin
23. # 加载JAVA环境
24. RUN source /etc/profile
25. # 拷贝项目包
26. COPY marktrace-edu-biz-service-0.0.1-SNAPSHOT.jar /data/marktrace/marktrace-edu-biz-service
27. # 暴露9140端口
28. EXPOSE 9140
29. # 启动biz项目
30. ENTRYPOINT ["java","-jar","/data/marktrace/marktrace-edu-biz-service/marktrace-edu-biz-service-0.0.1-SNAPSHOT.jar"]

3、创建 docker-compose.yml

# 在jar包所在路径创建文件docker-compose.yml,添加以下内容

[root@localhost ~]# vim docker-compose.yml

1. version:'3'
2. services:
3. biz:
4. build:.
5. image: biz
6. ports:
7. -"9140:9140"
8. container_name: biz

该Compose文件定义了1个服务:biz

biz:该 biz服务使用从Dockerfile当前目录中构建的镜像。然后它将容器和主机绑定到暴露的端口9140

4、使用 Compose 命令构建和运行您的应用

# 在docker-compose.yml所在路径下执行该命令Compose就会自动构建镜像并使用镜像启动容器

[root@localhost ~]# docker-compose up

[root@localhost ~]# docker-compose up -d //后台启动并运行容器

Docker Compose_docker

Docker Compose_Docker_02

5、查询容器启动状态

Docker Compose_docker_03

Docker Compose常用命令与配置

常见命令

  • ps:列出所有运行容器

docker-compose ps

  • logs:查看服务日志输出

docker-compose logs

  • port:打印绑定的公共端口,下面命令可以输出eureka服务8761端口所绑定的公共端口

docker-compose port eureka 8761

  • build:构建或者重新构建服务

docker-compose build

  • start:启动指定服务已存在的容器

docker-compose start eureka

  • stop:停止已运行的服务的容器

docker-compose stop eureka

  • rm:删除指定服务的容器

docker-compose rm eureka

  • up:构建、启动容器

docker-compose up

  • kill:通过发送SIGKILL信号来停止指定服务的容器

docker-compose kill eureka

  • pull:下载服务镜像

Usage:pull [options] [SERVICE...]

Options:

--ignore-pull-failures 忽略pull失败的镜像,继续pull其他镜像.

pull compose文件中所指明的镜像.

  • scale:设置指定服务运气容器的个数,以service=num形式指定

docker-compose scale user=3 movie=3

  • run:在一个服务上执行一个命令

docker-compose run web bash

docker-compose.yml 属性

  • version:指定 docker-compose.yml 文件的写法格式
  • services:多个容器集合
  • build:配置构建时,Compose会利用它自动构建镜像,该值可以是一个路径,也可以是一个对象,用于指定Dockerfile参数

build: ./dir

---------------

build:

context: ./dir

dockerfile: Dockerfile

args:

buildno: 1

  • command:覆盖容器启动后默认执行的命令

command: bundle exec thin -p 3000

----------------------------------

command: [bundle,exec,thin,-p,3000]

  • dns:配置 dns 服务器,可以是一个值或列表

dns: 8.8.8.8

------------

dns:

- 8.8.8.8

- 9.9.9.9

  • dns_search:配置 DNS 搜索域,可以是一个值或列表

dns_search: example.com

------------------------

dns_search:

- dc1.example.com

- dc2.example.com

  • environment:环境变量配置,可以用数组或字典两种方式

environment:

RACK_ENV: development

SHOW: 'ture'

-------------------------

environment:

- RACK_ENV=development

- SHOW=ture

  • env_file:从文件中获取环境变量,可以指定一个文件路径或路径列表,其优先级低于environment指定的环境变量

env_file: .env

---------------

env_file:

- ./common.env

  • expose:暴露端口,只将端口暴露给连接的服务,而不暴露给主机

expose:

- "3000"

- "8000"

  • image:指定服务所使用的镜像

image: java

  • network_mode:设置网络模式

network_mode: "bridge"

network_mode: "host"

network_mode: "none"

network_mode: "service:[service name]"

network_mode: "container:[container name/id]"

  • ports:对外暴露的端口定义,和expose对应

ports:# 暴露端口信息 - "宿主机端口:容器暴露端口"- "8763:8763"- "8763:8763"

links:将指定容器连接到当前连接,可以设置别名,避免ip方式导致的容器重启动态改变的无法连接情况

  • links:# 指定服务名称:别名

- docker-compose-eureka-server:compose-eureka

  • volumes:卷挂载路径

volumes:

- /lib

- /var

  • logs:日志输出信息

--no-color 单色输出,不显示其他颜.

-f, --follow 跟踪日志输出,就是可以实时查看日志

-t, --timestamps 显示时间戳

--tail 从日志的结尾显示,--tail=200

Docker Compose 其它

更新容器

  • 当服务的配置发生更改时,可使用docker-compose up命令更新配置
  • 此时,Compose会删除旧容器并创建新容器,新容器会以不同的IP地址加入网络,名称保持不变,任何指向旧容器的连接都会被关闭,重新找到新容器并连接上去

links

服务之间可以使用服务名称相互访问,links 允许定义一个别名,从而使用该别名访问其它服务

  1. version: '2'
  2. services:
  3. web:
  4. build: .
  5. links:
  6. - "db:database"
  7. db:
  8. image: postgres
  • 输入编号:7193,直达文章
  • 输入m|M,直达目录列表

标签:容器,compose,Compose,biz,usr,Docker,docker
From: https://blog.51cto.com/u_12018693/5980292

相关文章

  • Docker 安装 Ubuntu
    Docker安装UbuntuUbuntu是基于Debian的Linux操作系统。Ubuntu是一个以桌面应用为主的Linux操作系统,其名称来自非洲南部祖鲁语或豪萨语的“ubuntu"一词,意思是“人性”“我......
  • Docker Machine
    DockerMachine简介DockerMachine是一种可以让您在虚拟主机上安装Docker的工具,并可以使用docker-machine命令来管理主机。DockerMachine也可以集中管理所有的docker主......
  • 使用Docker Registry快速搭建私有镜像仓库
    1、Docker是什么?Docker是Docker.Lnc公司开源的一个基于LXC技术之上搭建的Container容器引擎,源代码托管在Github上,基于Go语言并遵从Apache2.0协议开源。Docker属于Linux容器......
  • Docker 安装 CentOS
    Docker安装CentOSCentOS(CommunityEnterpriseOperatingSystem)是Linux发行版之一,它是来自于RedHatEnterpriseLinux(RHEL)依照开放源代码规定发布的源代码所编译而......
  • Docker 安装 Nginx
    Docker安装NginxNginx是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文......
  • Docker 安装 PHP
    Docker安装PHPPHP即“超文本预处理器”,是一种通用开源脚本语言。PHP是在服务器端执行的脚本语言,与C语言类似,是常用的网站编程语言。PHP独特的语法混合了C、Java、Perl以及......
  • Docker 安装 Python
    Docker安装PythonPython简介Python是一种解释型、面向对象、动态数据类型的高级程序设计语言。Python由GuidovanRossum于1989年底发明,第一个公开发行版发行于19......
  • Docker 安装 Node.js
    Docker安装Node.jsNode.js是一个基于ChromeV8引擎的JavaScript运行环境,是一个让JavaScript运行在服务端的开发平台。Node.js使用了一个事件驱动、非阻塞式I/O的模型......
  • Docker 安装 Redis
    Docker安装RedisRedis是一个开源的使用ANSIC语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value的NoSQL数据库,并提供多种语言的API。Redis是一个开源(BSD许......
  • Docker 容器连接
    容器中可以运行一些网络应用,要让外部也可以访问这些应用,可以通过 -P 或 -p 参数来指定端口映射。下面我们来实现通过端口连接到一个docker容器。 网络端口映射......