基于Vagrant搭建Docker虚拟开发环境

1、安装 linux 虚拟机

  • 下载&安装 VirtualBox https://www.virtualbox.org/, 要开启 CPU 虚拟化

  • 下载&安装 Vagrant

  • 打开 window cmd 窗口, 运行 Vagrant init centos/7, 即可初始化一个 centos7 系统

  • 运行 vagrant up 即可启动虚拟机。 系统 root 用户的密码是 vagrant

  • vagrant 其他常用命令

  • 默认虚拟机的 ip 地址不是固定 ip, 开发不方便

    • 修改 Vagrantfile

    • 重新使用 vagrant up 启动机器即可。 然后再 vagrant ssh 连接机器

  • 默认只允许 ssh 登录方式, 为了后来操作方便, 文件上传等, 我们可以配置允许账号密码登录

Vagrant ssh 进去系统之后
vi /etc/ssh/sshd_config
修改 PasswordAuthentication yes/no
重启服务 service sshd restart
  • 以后可以使用提供的 ssh 连接工具直接连接

注意: VirtualBox 会与包括但不限于如下软件冲突, 需要卸载这些软件,然后重启电脑;冲突的软件: 红蜘蛛,360,净网大师(有可能) 等

修改 linux 的 yum 源
1)、备份原 yum 源
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
2)、使用新 yum 源
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.163.com/.help/CentOS7-Base-163.repo
3)、生成缓存
yum makecache

2、安装 docker

Docker 安装文档:https://docs.docker.com/install/linux/docker-ce/centos/

1、卸载系统之前的 docker

sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine

2、安装 Docker-CE

安装必须的依赖
sudo yum install -y yum-utils \
device-mapper-persistent-data \
lvm2
设置 docker repo 的 yum 位置
sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
安装 docker,以及 docker-cli
sudo yum install docker-ce docker-ce-cli containerd.io

3、启动 docker

sudo systemctl start docker

4、设置 docker 开机自启

sudo systemctl enable docker

5、测试 docker 常用命令,注意切换到 root 用户下
https://docs.docker.com/engine/reference/commandline/docker/

6、配置 docker 镜像加速

阿里云, 容器镜像服务
针对 Docker 客户端版本大于 1.10.0 的用户
您可以通过修改 daemon 配置文件/etc/docker/daemon.json 来使用加速器
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://82m9ar63.mirror.aliyuncs.com"]
} EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

3、docker 安装 mysql

1、下载镜像文件

docker pull mysql:5.7

查看镜像

docker images

2、创建实例并启动

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

注意:解决 MySQL 连接慢的问题

在配置文件中加入如下, 并重启 mysql
[mysqld]
skip-name-resolve
解释:
skip-name-resolve: 跳过域名解析

3、通过容器的 mysql 命令行工具连接

docker exec -it mysql mysql -uroot -proot

4、设置 root 远程访问

grant all privileges on *.* to 'root'@'%' identified by 'root' with grant option;
flush privileges;

5、进入容器文件系统

docker exec -it mysql /bin/bash

[root@localhost ~]# docker exec -it mysql /bin/bash
root@5e1530f66154:/# whereis mysql
mysql: /usr/bin/mysql /usr/lib/mysql /etc/mysql /usr/share/mysql
root@5e1530f66154:/# ls /etc/mysql
my.cnf
root@5e1530f66154:/# cat /etc/mysql/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
root@5e1530f66154:/#

设置启动docker时,即运行mysql
docker update mysql --restart=always

4、docker 安装 redis

1、下载镜像文件

docker pull redis

2、创建实例并启动

mkdir -p /mydata/redis/conf
touch /mydata/redis/conf/redis.conf
echo "appendonly yes" >> /mydata/redis/conf/redis.conf
docker run -p 6379:6379 --name redis -v /mydata/redis/data:/data \
-v /mydata/redis/conf/redis.conf:/etc/redis/redis.conf \
-d redis redis-server /etc/redis/redis.conf

redis 自描述文件:
https://raw.githubusercontent.com/antirez/redis/4.0/redis.conf

3、使用 redis 镜像执行 redis-cli 命令连接

docker exec -it redis redis-cli

设置redis容器在docker启动的时候启动
docker update redis --restart=always

5、docker 安装 rabbitMQ

下载镜像文件:docker pull rabbitmq

创建rabbitMQ实例并启动:

docker run --name rabbitmq \
--restart=always \
-p 5671:5671 \
-p 5672:5672 \
-p 4369:4369 \
-p 25672:25672 \
-p 15671:15671 \
-p 15672:15672 \
-d rabbitmq:latest

注:

  • 4369:Erlang发现口
  • 5671、5672:AMQP通信端口
  • 15672:web管理后台端口
  • 25672:server集群内部通信端口

开启web管理台:

[root@localhost ~]# docker exec -it rabbitmq bash
root@b513c3a12b07:/# rabbitmq-plugins enable rabbitmq_management
Enabling plugins on node rabbit@b513c3a12b07:
rabbitmq_management
The following plugins have been configured:
  rabbitmq_management
  rabbitmq_management_agent
  rabbitmq_prometheus
  rabbitmq_web_dispatch
Applying plugin configuration to rabbit@b513c3a12b07...
The following plugins have been enabled:
  rabbitmq_management

started 1 plugins.
root@b513c3a12b07:/#

附:创建postgresql实例并启动

docker run -p 5432:5432 --name postgres \
--restart=always \
-v /mydata/postgresql:/var/lib/postgresql \
-e POSTGRES_PASSWORD=postgres \
-e ALLOW_IP_RANGE=0.0.0.0/0 \
-d postgres:latest

进入postgres容器:docker exec -it postgres bash

posted @ 2022-09-30 23:13  冰枫丶  阅读(230)  评论(0编辑  收藏  举报