1.安装Docker Compose
通过以下命令安装Docker Compose:
[root@localhost~]# curl -L https://github.com/docker/compose/releases/download/1.23.2/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
为安装脚本添加执行权限:
[root@localhost~]# chmod +x /usr/local/bin/docker-compose
查看安装结果
[root@localhost~]# docker-compose --version
docker-compose version 1.23.2, build 1110ad01
输出结果如上,说明安装成功。
2.安装Compose 命令补全工具
# 补全命令
curl -L https://raw.githubusercontent.com/docker/compose/1.29.1/contrib/completion/bash/docker-compose > /etc/bash_completion.d/docker-compose
如果这里出现错误,需要修改自己的hosts文件:
echo "199.232.68.133 raw.githubusercontent.com" >> /etc/hosts
3.Docker Compose快速入门
基本步骤
使用Compose大致有3个步骤:
- 使用Dockerfile(或其他方式定义)定义应用程序环境,以便在任何地方重现该环境。
- 在docker-compose.yml文件中定义组成应用程序的服务,以便各个服务在一个隔离环境中一起执行。
- 运行 docker-compose up 命令,启动并运行整个命令程序。
Compose常用命令
docker-compose -h # 查看帮助
docker-compose up # 启动所有docker-compose服务
docker-compose down # 停止并删除容器、网络、卷、镜像
docker-compose logs yml里面的服务id # 查看容器输出日志
docker-compose config # 检查配置
docker-compose config -q # 检查配置,有问题才有输出
docker-compose restart # 重启服务
docker-compose start # 启动服务
docker-compose stop # 停止服务
docker-compose exec yml里面的服务id # 进入容器实例内部
docker-compose exec docker-compose.yml文件中写的服务id /bin/bash
docker-compose ps # 展示当前docker-compose编排过的运行的所有容器
docker-compose top # 展示当前docker-compose编排过的容器进程
docker-compose up -d # 启动所有docker-compose服务并后台运行
1.上传 /suninfo-analyse-1.0.jar 到自定义目录 /usr/local/project
2.在/suninfo-analyse-1.0.jar所在路径创建Dockerfile 文件,添加如下内容
[root@CentOS-Alone project]# vim Dockerfile
FROM java
#创建一个目录存放jar包(在容器里面创建目录)
RUN mkdir -p /suninfo/config /suninfo/logs
#复制jar包以及相关配置文件(复制jar包到容器的根目录)
COPY suninfo-analyse-1.0.jar /suninfo-analyse-1.0.jar
#添加进入docker容器后的目录
WORKDIR /suninfo
#配置项目端口
CMD ["--server.port=8888"]
#对外暴露的端口号
EXPOSE 8888
#修改文件的创建修改时间
RUN bash -c 'touch /suninfo-analyse-1.0.jar'
#运行脚本,启动springboot项目,这里我们指定加载配置文件的位置,并且通过数据卷挂载同步到容器中
ENTRYPOINT ["java","-jar","/suninfo-analyse-1.0.jar"]
3.在jar包文件所在目录创建 docker-compose.yml,添加如下内容
version: '2' #表示docker-compose.yml只用的是Version 2 file
services:
suninfo-analyse: # 指定服务名称,自定义
image: suninfo-analyse:v1
container_name: suninfo-analyse #容器名称
hostname: suninfo-analyse
environment:
JARNAME: suninfo-analyse-1.0.jar
JVM_OPTS: -Xms2232m -Xmx2232m -Xss256k -XX:NewRatio=3 -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=512m
volumes: # 容器数据卷映射路径
- /usr/local/priject/update:/project/update
- /usr/local/priject/config:/project/config
ports: #指定端口映射,类似于docker run的 -p选项
- "8888:8888"
restart: always
depends_on: #依赖关系
- redis
- mysql
deploy:
resources:
limits:
memory: 8G
networks: #网络模式
- van_net
networks:
default:
external:
name: sysbase_snet
创建network
[root@localhost compose-elastic]# docker network create --driver bridge van_net
2e8afa08b4e0ebd04fc8bc94082f28b8...
[root@localhost compose-elastic]# docker network ls
NETWORK ID NAME DRIVER SCOPE
2e8afa08b4e0 van_net bridge local
以下是docker-compose.yml文件中的配置说明:
version:指定Compose文件版本。
services:定义需要启动的服务及它们所需的镜像、端口映射、环境变量、挂载到主机上的目录等相关信息。
volumes:定义数据卷,即将容器内部的数据持久化到宿主机的目录中。
networks:定义网络,使得多个服务可以在同一网络下相互通信。 environment:指定环境变量,传递给服务容器使用。
ports:定义端口映射,将容器内部的端口映射到宿主机端口。 depends_on:定义服务启动的依赖关系,保证依赖的服务先启动。
build:定义镜像构建的相关信息,包括构建上下文路径、Dockerfile路径以及构建参数等。
#构建镜像
[root@CentOS-Alone project]# docker build -t suninfo-analyse:v1 .
#检查docker-compose.yml 文件是否存在问题
[root@CentOS-Alone project]# docker-compose config -q
4.在 docker-compose.yml 所在路径执行以下命令,Compose 就会自动构建镜像并使用镜像启动容器,也可以使用-d选项,后台运行这些容器
[root@localhost~ target]# docker-compose up -d
5.访问http://宿主机I:8888/,即可访问
6.docker 相关操作
创建镜像
docker build -t demo:1.0 .
demo为自己起的镜像名,1.0为版本号,最后的 . 代表当前位置的上下路径,表示在当前路径下制作镜像;
运行镜像
docker run -p 9000:2021 -d --name demo demo:1.0 -v /usr/local/project:/config
上面命令中注意的是:9000:2021,9000指的是Dockerfile文件中设定的暴露出的端口号,2021指的是jar包项目中的访问端口号
参数说明:
--name:定义容器名。
-p:宿主机与容器的端口挂载,格式:宿主机端口:容器内部端口
-v:宿主机目录与容器内目录映射,格式:宿主机目录:容器内部目录
-d:后台执行
查看已映射目录
docker inspect container_name | grep Mounts -A 20