Docker安装开发环境

Docker

Docker 安装 Mysql

  • Docker 查看可用Mysql镜像
    推荐使用mysql5.7
# docker安装mysql
$ docker search mysql:5.7
  • Docker mysql目录挂载&启动mysql
# docker启动mysql
docker run -p 3306:3306 --name mysql \
-v /mydata/mysql/log:/var/log/mysql \
-v /mydata/mysql/data:/var/lib/mysql \
-v /mydata/mysql/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql:5.7

参数说明
-p 3306:3306:将容器的 3306 端口映射到主机的 3306 端口
-v /mydata/mysql/conf:/etc/mysql:将配置文件夹挂载到主机 
-v /mydata/mysql/log:/var/log/mysql:将日志文件夹挂载到主机
-v /mydata/mysql/data:/var/lib/mysql/:将配置文件夹挂载到主机 
-e MYSQL_ROOT_PASSWORD=root:初始化 root 用户的密码
  • mysql配置
$ vi /mydata/mysql/conf/my.cnf 
[client] 
default-character-set=utf8

[mysql] 
default-character-set=utf8

[mysqld] 
init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake
skip-name-resolve
  • 设置防火墙
# 允许3306端口 通过防火墙
$ firewall-cmd --permanent --zone=public --add-port=3306/tcp

# 重新加载防火墙
$ firewall-cmd --reload
  • Docker 自启动镜像
# 重启主机Mysql也会自动启动
$ docker update mysql --restart=always

Docker 安装 Redis

  • Docker 查看可用Redis镜像
# pull最新redis版本
$ docker search redis
  • 创建统一外部配置目录 & redis.conf 配置文件
# 创建目录
$ mkdir -p /mydata/redis/{conf,data}

# 创建 redis.confi 配置文件
# redis.conf 配置文件的内容自定下载, 使用官方的配置文件
# redis.conf 配置文件中的 daemonize 一定要设置为no, 否则会出现 `STATUS` 为 `Exited (0) 2 minutes ago` 的信息
$ touch /mydata/redis/conf/redis.conf
......
daemonize no   # 是否以守护进程运行, 设置为no
bind 0.0.0.0   # 允许任何人访问
requirepass 123456 # 设置登录密码
  • Docker redis目录挂载&启动redis
# 启动 redis 容器
$ docker run -p 6379:6379 --name redis \
--privileged=true \
-v /mydata/redis/data:/data \
-v /mydata/redis/conf/redis.conf:/etc/redis/redis.conf \
-d redis:7.0.11-alpine redis-server /etc/redis/redis.conf

# 参数说明
##--privileged=true: 容器内的root拥有真正root权限, 否则容器内root只是外部普通用户权限;
##-v /mydata/redis/conf/redis.conf:/etc/redis/redis.conf: 映射配置文件;
##-v /mydata/redis/data:/data: 映射数据目录;
##redis-server /etc/redis/redis.conf: 指定配置文件启动redis-server进程


# 查看映射是否成功
$ pwd
/mydata/redis/conf

# Redis开启持久化
$ vi redis.conf
......
appendonly yes
  • 设置防火墙
# 允许6379端口 通过防火墙
$ firewall-cmd --permanent --zone=public --add-port=6379/tcp

# 重新加载防火墙
$ firewall-cmd --reload
  • Redis测试
# 进入redis容器
# -a 123456: 指定 redis 密码
$ docker exec -it redis2 redis-cli -a 123456

127.0.0.1:6379> set a b 
OK

127.0.0.1:6379> get a
"b"

127.0.0.1:6379> exit

Docker 安装 Zookeeper

  • Docker 推荐使用zookeeper
    推荐使用zookeeper3.4.11
# docker安装zookeeper
$ docker pull zookeeper:3.4.11
  • Docker 启动zookeeper3
# 启动zookeeper
$ docker run --name zookeeper -p 2181:2181 --restart always -d zookeeper:3.4.11

# 使用docker ps 查看启动是否成功
$ docker ps
  • 设置防火墙
# 允许2181端口 通过防火墙
$ firewall-cmd --permanent --zone=public --add-port=2181/tcp

# 重新加载防火墙
$ firewall-cmd --reload

Docker 安装 Nginx

  • Docker pull nginx
# 创建nginx目录
$ cd /mydata/
$ mkdir nginx


# pull nginx
$ docker pull nginx:1.10
  • Docker 获取conf配置文件
# 启动nginx
$ docker run -p 80:80 --name nginx -d nginx:1.10

# 使用docker ps 查看启动是否成功
$ docker ps

# 将容器内的配置文件拷贝到当前conf目录
$ docker container cp nginx:/etc/nginx ./conf
# 将容器内的html文件拷贝到当前html目录
$ docker container cp nginx:/usr/share/nginx/html ./html
# 将容器内的html文件拷贝到当前logs目录
$ docker container cp nginx:/var/log/nginx ./logs

# 停止nginx
$ docker stop nginx

# 删除nginx
$ docker rm nginx
  • Docker 启动nginx
# 启动nginx
$ docker run -p 80:80 --name nginx \
-v /mydata/nginx/html:/usr/share/nginx/html \
-v /mydata/nginx/logs:/var/log/nginx \
-v /mydata/nginx/conf:/etc/nginx \
-d nginx:1.10
  • Docker 删除nginx
# 停止nginx
$ docker stop nginx

# 删除nginx
$ docker rm nginx
  • 设置nginx
# 设置启动nginx
$ docker update nginx --restart=always

Docker 安装 Postgres

  • Docker pull postgres
# 创建pgsql目录
$ cd /data
$ mkdir /data/pgsql

# 创建pgsql数据目录
$ cd /data
$ mkdir /data/pgsql/data

# pull postgres
$ docker pull postgres:latest
  • Docker 获取conf配置文件

    将容器里面文件拷贝到宿主机

# 启动pgsql
$ docker run --name pgsql -e POSTGRES_PASSWORD=postgres -p 5432:5432 -v /data/pgsql/data:/var/lib/postgresql/data --restart always -d postgres

# 使用docker ps 查看启动是否成功
$ docker ps

# 将容器内的pg_hba.conf、postgresql.conf配置文件拷贝到当前目录
$ docker cp pgsql:/var/lib/postgresql/data/pg_hba.conf /opt/
$ docker cp pgsql:/var/lib/postgresql/data/postgresql.conf /opt/
  • 修改conf配置文件
# 修改pg_hba.conf文件,pg_hba.conf文件末尾添加 host all all 0.0.0.0/0 password
$ vi /opt/pg_hba.conf
host all all 0.0.0.0/0 password

# 修改postgresql.conf文件把端口注释去掉 
$ vi /etc/postgresql.conf
port=5432
  • 将配置文件复制到容器内
# 复制pg_hba.conf配置文件到容器中
$ docker cp /opt/pg_hba.conf pgsql:/var/lib/postgresql/data/pg_hba.conf

# 复制postgresql.conf配置文件到容器中
$ docker cp /opt/postgresql.conf pgsql:/var/lib/postgresql/data/postgresql.conf 
  • 设置防火墙
# 允许5432端口 通过防火墙
$ firewall-cmd --permanent --zone=public --add-port=5432/tcp

# 重新加载防火墙
$ firewall-cmd --reload
  • 设置开机启动
$ docker update --restart=always pgsql

参考文档1: 点我传送 - mysql

参考文档2: 点我传送 - redis

参考文档3: 点我传送 - zookeeper

参考文档4: 点我传送 - nginx

参考文档5: 点我传送 - Postgres

posted @ 2021-03-05 16:44  HOsystem  阅读(238)  评论(0编辑  收藏  举报