一:Docker安装

  1:通过yum安装docker

yum -y install gcc
yum -y install gcc-c++
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum list docker-ce --showduplicates | sort -r
yum -y install docker-ce-18.06.3.ce

2:为docker设置源

vim /etc/docker/daemon.json

{
"registry-mirrors": ["https://r5yuqwmu.mirror.aliyuncs.com"],
"data-root": "/home/data/docker",
"log-driver": "json-file",
"log-opts": {"max-size":"50m", "max-file":"1"}
}

启动docker:systemctl start docker

二:docker镜像

https://docs.docker.com/engine/

获取docker镜像的两种方式:(以mysql为例)

1:docker pull mysql:5.7

从dockerhub中去拉取网上公开的可用的镜像,可以自己去搜索自己想要的:https://hub.docker.com/search?q=&type=image&category=database

2:docker build -t mysql_self .

自定义Dockerfile,可以基于公开的镜像,自定义自己的镜像。

#基础镜像使用 mysql:5.7
FROM mysql:5.7 #作者
MAINTAINER author ENV WORK_PATH /usr/local/work #定义会被容器自动执行的目录
ENV AUTO_RUN_DIR /docker-entrypoint-initdb.d #定义sql文件名
ENV FILE_0 myself.sql
ENV LANG en_GB.utf8 #配置文件复制进去
COPY my.cnf /etc RUN yes|cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime #定义shell文件名
ENV INSTALL_DB_SHELL install_db.sh #创建文件夹
RUN mkdir -p $WORK_PATH #把数据库初始化数据的文件复制到工作目录下
COPY ./$FILE_0 $WORK_PATH/ #把要执行的shell文件放到/docker-entrypoint-initdb.d/目录下,容器会自动执行这个shell
COPY ./$INSTALL_DB_SHELL $AUTO_RUN_DIR/
WORKDIR $WORK_PATH #给执行文件增加可执行权限
RUN chmod a+x $AUTO_RUN_DIR/$INSTALL_DB_SHELL

三:docker容器

当镜像都下载完成后,就可以创建docker容器并运行使用,下面就以实例测试mysql、canal、kafka和zookeeper这几个基建的部署。

# 创建自定义network
docker network create --subnet=172.18.0.0/16 mynetwork

docker run options 可以参考:https://docs.docker.com/engine/reference/commandline/run/

1:运行mysql容器

docker run -p 3306:3306 --name mysql_self --net mynetwork --ip 172.18.0.36  -v /home/data/docker/mysql/logs:/logs -v /home/data/docker/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=Abcd12345 -d --restart=always mysql_self:latest

2:canal

docker run -d --name canal -p 11111:11111 --net mynetwork --ip 172.18.0.41 -e canal.destinations=self -e canal.instance.mysql.slaveId=12 -e  canal.auto.scan=false -e canal.instance.master.address=172.18.0.36:3306 -e canal.instance.dbUsername=canal -e canal.instance.dbPassword=canal -e  canal.instance.filter.regex=esen_approval.apt_approval --restart=always canal/canal-server:v1.1.4

canal要想搭配好mysql,其中有几点需要注意;
1:canal.instance.master.address的地址必须指向mysql容器的ip和port

2:canal.instance.mysql.slaveId 不能与mysql的一致,mysql的log_bin要开启 ,查看命令为:show variables like 'log_bin'

3:canal.instance.dbUsername和canal.instance.dbPassword 要在启动前设置好。

3:zookeeper

docker run -d --name zookeeper -p 2181:2181 --net mynetwork --ip 172.18.0.37 -v /home/data/docker/zookeeper/logs:/datalog -v /home/data/docker/zookeeper/data:/data --restart=always -t  zookeeper:3.4.14

4:kafka

docker run -d --name kafka -p 9092:9092 -p 19092:19092 --net mynetwork --ip 172.18.0.38  -e KAFKA_BROKER_ID=0 -e KAFKA_ZOOKEEPER_CONNECT=172.18.0.37:2181 -e KAFKA_INTER_BROKER_LISTENER_NAME=INTERNAL -e KAFKA_LISTENER_SECURITY_PROTOCOL_MAP=INTERNAL:PLAINTEXT,EXTERNAL:PLAINTEXT -e KAFKA_ADVERTISED_LISTENERS=INTERNAL://172.18.0.38:19092,EXTERNAL://外网IP:9092 -e KAFKA_LISTENERS=INTERNAL://0.0.0.0:19092,EXTERNAL://0.0.0.0:9092 --restart=always -t wurstmeister/kafka

四:docker-compose

1:docker-compose安装

sudo curl -L "https://get.daocloud.io/docker/compose/releases/download/1.26.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo curl -L "https://github.com/docker/compose/releases/download/1.26.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose

docker-compose file 和docker版本之间的对照关系:https://docs.docker.com/compose/compose-file/

2:docker-compose.yml

version: '3.7'
services:
mysql_hermes:
build: /root/data/docker/mysql/mysql_hermes
container_name: mysql_hermes
environment:
- "MYSQL_ROOT_PASSWORD=Abcd12345"
ports:
- "3306:3306"
restart: always
volumes:
- "/root/data/docker/mysql/logs:/logs"
- "/root/data/docker/mysql/data:/var/lib/mysql"
zookeeper:
image: zookeeper:3.4.14
container_name: zookeeper
restart: always
hostname: zookeeper
ports:
- 2181:2181
volumes:
- /root/data/docker/zookeeper/logs:/datalog
- /root/data/docker/zookeeper/data:/data
networks:
default:
ipv4_address: 172.18.0.37
kafka:
image: wurstmeister/kafka:latest
container_name: kafka
restart: always
ports:
- 9092:9092
- 19092:19092
environment:
KAFKA_BROKER_ID: 1
KAFKA_ZOOKEEPER_CONNECT: 172.18.0.37:2181
KAFKA_INTER_BROKER_LISTENER_NAME: INTERNAL
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: INTERNAL:PLAINTEXT,EXTERNAL:PLAINTEXT
KAFKA_ADVERTISED_LISTENERS: INTERNAL://172.18.0.38:19092,EXTERNAL://47.99.72.114:9092
KAFKA_LISTENERS: INTERNAL://0.0.0.0:19092,EXTERNAL://0.0.0.0:9092
volumes:
- /root/data/docker/kafka/data:/kafka
depends_on:
- zookeeper
networks:
default:
ipv4_address: 172.18.0.38
canal:
image: canal/canal-server:v1.1.4
restart: always
container_name: canal
depends_on:
- mysql_hermes
ports:
- 11111:11111
environment:
- canal.instance.mysql.slaveId=12
- canal.auto.scan=false
- canal.destinations=hermes
- canal.instance.master.address=mysql_hermes:3306
- canal.instance.dbUsername=canal
- canal.instance.dbPassword=canal
- canal.instance.filter.regex=esen_approval.apt_approval
networks:
default:
ipam:
config:
- subnet: 172.18.0.0/16

启动命令:docker-compose -f xx.yml up -d

停止命令:docker-compose -f xx.yml down

												

Docker-常用基建的安装与部署的更多相关文章

  1. docker常用命令,安装常用实例,一步式安装mysql

    刚来公司,跟公司测试环境项目的服务器,环境是linux Centos7.2  所有的tomcat都挂载在docker容器下,所以也就学习了一些简单的docker指令(学习之前请了解什么是docker, ...

  2. Docker学习--->>Docker的认识,安装,及常用命令熟悉

    Docker是什么? 在平常的软件开发中,会面临着开发不同的程序或服务需要不同的环境.而在该环境上开发完成后,想要在其他的环境上部署,则需要自己去重新部署,而Docker的出现使得这样的迁移变得容易. ...

  3. 【Docker】(3)---linux部署Docker、Docker常用命令

    linux部署Docker.Docker常用命令 本次部署Linux版本:CentOS 7.4 64位. 说明: 因为Docker是基于Linux 64bit的 所以Docker要求64位的系统且内核 ...

  4. Docker安装与部署

    安装Docker: 查看你当前的内核版本: uname -r 更新yum包: sudo yum update 卸载旧版本(如果安装过旧版本的话): sudo yum remove docker doc ...

  5. Docker安装及部署实例.Net Core

    1.什么是Docker Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化.容器是完全使用沙箱 ...

  6. Docker 核心概念、安装、端口映射及常用操作命令,详细到令人发指。

    Docker简介 Docker是开源应用容器引擎,轻量级容器技术. 基于Go语言,并遵循Apache2.0协议开源 Docker可以让开发者打包他们的应用以及依赖包到一个轻量级.可移植的容器中,然后发 ...

  7. [容器]docker-ce安装最新版-docker常用操作

    社区: http://www.dockerinfo.net/rancher http://dockone.io/ https://www.kubernetes.org.cn/ 1,docker安装配置 ...

  8. ubuntu docker安装与部署java,mysql,nginx镜像

    docker 安装与部署java,mysql,nginx docker 配置 安装docker $ sudo apt-get remove docker docker-engine docker.io ...

  9. Docker 安装并部署Tomcat、Mysql8、Redis

    1.  安装前检查 1 #ContOS 7安装Docker系统为64位,内核版本为3.10+ 2 lsb_release -a 3 4 uname -r 5 6 #更新yum源 7 yum -y up ...

随机推荐

  1. synchronized实现原理及ReentrantLock源码

    synchronized synchronized的作用范围 public class SynchronizedTest { // 实例方法,方法访问标志ACC_SYNCHRONIZED,锁对象是对象 ...

  2. 移动 drag&drop拖放

    拖放事件 #1. 三个对象 源对象 -- 被拖放的元素 过程对象 -- 经过的元素 目标对象 -- 到达的元素   #2. 源对象中的事件 要想让某个元素可以拖拽需要设置draggable=" ...

  3. 最全Python正则表达式来袭

    前言 正则表达式是对字符串(包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为"元字符"))操作的一种逻辑公式,就是用事先定义好的一些特定字符.及这些特定字符的组合,组成 ...

  4. [UWP] - 用Json格式来发送一个Post请求到WCF服务

    测试实体类:(需要在客户端和服务端建了有相同字段名称的实体) public class CompositeType { public CompositeType() { SubCompositeTyp ...

  5. 什么是泛型?,Set集合,TreeSet集合自然排序和比较器排序,数据结构-二叉树,数据结构-平衡二叉树

    ==知识点== 1.泛型 2.Set集合 3.TreeSet 4.数据结构-二叉树 5.数据结构-平衡二叉树 ==用到的单词== 1.element[ˈelɪmənt] 要素 元素(软) 2.key[ ...

  6. JDK8-日期时间新方式

    日期时间新方式 ​ 在日常开发中,对于日期操作是非常常见的,但是对于有经验的开发人员来说Java8之前的日期操作是有较大问题 的.比方说SimpleDateFormat.但是在Java8之后提出了Da ...

  7. AndroidSDK安装选项说明

    前言:本文的目的在于了解AndroidSDK相关安装选项,正确根据自身需要选择性安装,避免安装过多无用的东西导致硬盘爆满. 1. AndroidSDK安装选项说明,如上图. 2. 实际游戏打包使用到A ...

  8. 运行springboot项目报错 Error running 'ResourceApplication': Command line is too long. Shorten comma

    方法1 IDEA 运行报错:Error running '***': Command line is too long 技术标签: IDEA     Error running 'Test': Com ...

  9. Double 值比较大小 Long值比较大小

    BigDecimal outValue = new BigDecimal(sapVerifyInventory.getQuantity()); BigDecimal inValue = new Big ...

  10. 理解Tomcat工作原理

    WEB服务器 只要Web上的Server都叫Web Server,但是大家分工不同,解决的问题也不同,所以根据Web Server提供的功能,每个Web Server的名字也会不一样. 按功能分类,W ...