Docker Compose
编写docker-compose.yml脚本,配合dockerfile和sh脚本进行搭建
- 示例一:搭建一主二从三哨兵的redis集群 ^220b94
version: '3' #dockercompose版本 services: #定义应用的的服务,每个服务运行一个镜像 redis-master: #服务名称 image: redis:latest #镜像 command: redis-server --appendonly yes --requirepass bronya #启动容器时要执行命令 volumes: #挂载数据卷,不存在的目录会自动创建 - ./data/master:/data ports: #定义端口映射 - "6379:6379" redis-slave1: image: redis:latest command: redis-server --slaveof redis-master 6379 --appendonly yes depends_on: - redis-master volumes: - ./data/slave1:/data redis-slave2: image: redis:latest command: redis-server --slaveof redis-master 6379 --appendonly yes depends_on: - redis-master volumes: - ./data/slave2:/data redis-sentinel1: image: redis:latest command: redis-sentinel /etc/redis/sentinel.conf depends_on: - redis-master volumes: - ./sentinel1.conf:/etc/redis/sentinel.conf redis-sentinel2: image: redis:latest command: redis-sentinel /etc/redis/sentinel.conf depends_on: - redis-master volumes: - ./sentinel2.conf:/etc/redis/sentinel.conf redis-sentinel3: image: redis:latest command: redis-sentinel /etc/redis/sentinel.conf depends_on: - redis-master volumes: - ./sentinel3.conf:/etc/redis/sentinel.conf
#!/bin/bash docker-compose up --build
- 示例二:基于dockerfile
Dockerfile文件version: '3' services: app: build: context: . dockerfile: Dockerfile ports: - "8080:8080"
# 使用官方的java镜像作为基础镜像 FROM openjdk:8-jdk-alpine # 设置工作目录 WORKDIR /app # 将本地的jar包复制到Docker镜像中 COPY ./your-app.jar /app # 设置启动命令 ENTRYPOINT ["java", "-jar", "/app/your-app.jar"]
Docker
常见命令
- 之间的关系:
- 使用format对ps的结果进行格式化,更容易观察
docker ps -a --format "table {{.ID}}\t{{.Image}}\t{{.Ports}}\t{{.Status}}\t{{.Names}}"
- 可以通过编辑/root/.bashrc文件去给常用的命令起别名
# 修改/root/.bashrc文件 vi /root/.bashrc 内容如下: # .bashrc # User specific aliases and functions alias rm='rm -i' alias cp='cp -i' alias mv='mv -i' alias dps='docker ps --format "table {{.ID}}\t{{.Image}}\t{{.Ports}}\t{{.Status}}\t{{.Names}}"' alias dis='docker images' # Source global definitions if [ -f /etc/bashrc ]; then . /etc/bashrc fi
网络问题:
- 容器的ip是一个虚拟ip,其值并不与容器绑定
- 可以使用docker的网络功能实现容器的互联