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