一、 Vagrant安装Docker
1、 概述:
1.1、docker是什么?
Docker 是世界领先的软件容器平台。 开发人员利用 Docker 可以消除协作编码时“在我的机器上可正常工作”的问题。 运维人员利用 Docker 可以在隔离容器中并行运行和管理应用,获得更好的计算密度。 企业利用 Docker 可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为 Linux 和 Windows Server 应用发布新功能。
1.2、为什么要使用docker?
使用docker可以解决以下问题:
1、减少搭建和配置环境的麻烦 开发程序流程:首先在开发环境进行编码操作 -> 软件开发完毕后会放至测试环境进行测试 -> 最后测试通过后上线也就是生产环境运行。因此在项目开发的整个流程中至少需要3个环境, 使用docker前:我们可能需要搭建三个环境,且三个环境不一定完全一致从而出现很多莫名的错误。 使用docker后:只需要在服务器上安装docker虚拟化引擎,将我们的项目运行环境打包成镜像后,只需要在每台服务器上实例化开发环境镜像,便可以一键式部署环境。 2、解决应用之间的隔离 举例说明:比如在一个docker上拉取mysql和redis镜像,相当于在docker上安装了两台迷你的Linux容器,一台安装的mysql而另一台安装了redis。因此在运行时两个容器互不干扰。
具体详情大家可以参考官网:http://www.docker-cn.com/what-container#/virtual_machines]()
2、下面开始安装Docker
1、首先切换用户,由vagrant用户切换为root用户
代码语言:javascript复制# 输入密码 vagrant
su root
卸载系统原来装有的docker虚拟化引擎。
代码语言:javascript复制sudo yum remove docker
docker-client
docker-client-latest
docker-common
docker-latest
docker-latest-logrotate
docker-logrotate
docker-engine
2、安装docker依赖包
代码语言:javascript复制sudo yum install -y yum-utils
3、设置安装docker的仓库地址
代码语言:javascript复制sudo yum-config-manager --add-repo
https://download.docker.com/linux/centos/docker-ce.repo
4、安装docker引擎、操作docker客户端、docker容器
代码语言:javascript复制sudo yum install docker-ce docker-ce-cli containerd.io
5、启动docker
代码语言:javascript复制sudo systemctl start docker
6、配置docker镜像加速(使用阿里云)
代码语言:javascript复制sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://61yed5z1.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
二、docker安装应用篇
1、redis安装应用篇
在docker容器中安装redis镜像并初始化镜像。
1.1、第一步:拉取当前docker仓库最新的redis镜像文件
代码语言:javascript复制# 由于我使用的是vagrant管理centos/7虚拟机,进入虚拟机默认是vagrant用户,存在权限问题,所以首先切换到root用户在进行其他操作,root用户的默认密码为vagrant
su root
# 下载redis最新镜像文件
docker pull redis
# 查看镜像是否安装成功
docker images
1.2、第二步:redis镜像文件下载成功后,初始化一个redis容器并运行。
镜像和容器的关系:就相当于java中类和对象的管理,一个镜像可以创建多个容器且每个容器之间互不干扰。比如:一个redis镜像可以创建多个redis实例,相当于你在window系统中启动了redis服务器,但是端口号不能相同,否则会出现端口占用的情况。
代码语言:javascript复制# 首先在本地创建redis的配置文件和redis数据的存放目录,并设置与redis容器内的文件目录相映射,这样我如果需要修改redis容器内的配置文件时,只需要修改本地的映射文件即可,则不需要进入redis容器内操作redis的配置文件了。 (补:mkdir:创建文件夹;touch: 创建文件)
mkdir -p /vagrant/wuming/mydata/redis/conf
touch /vagrant/wuming/mydata/redis/conf/redis.conf
# 创建redis实例
docker run -p 6379:6379 # 端口映射 虚拟机对外端口号:redis实例的默认端口号
--name redis # redis实体名称
-v /vagrant/wuming/mydata/redis/data:/data # redis数据存储文件目录,将本地目录和redis容器目录相互映射
-v /vagrant/wuming/mydata/redis/conf/redis.conf:/etc/redis/redis.conf #本地配置文件与redis容器的配置文件相映射
-d redis # redis镜像名称
redis-server /etc/redis/redis.conf # redis启动方式
如果您想粘贴命令的话,请粘贴这里的,避免因为换行而出现错误,请根据您的需要更换挂载文件目录。
docker run -p 6379:6379 --name redis -v /vagrant/wuming/mydata/redis/data:/data -v /vagrant/wuming/mydata/redis/conf/redis.conf:/etc/redis/redis.conf -d redis redis-server /etc/redis/redis.conf
1.3、查看redis实例是否初始化成功
代码语言:javascript复制# 查看运行的容器信息
docker ps
# 如果没有查看运行的redis实例信息,查询所有的容器信息,包括开启与关闭的实例。
docker ps -a
# 查看redis实例启动失败的日志
docker logs -f redis
# 排查错误重新启动。
1.4、redis实例成功启动后,为了redis的运行安全,最好给redis设置密码。目下有三种方法,根据实际需要选择其中一种。
代码语言:javascript复制# 方法一: 创建redis实例时,设置密码,为了便捷起见,这里不写挂载文件语句了。
docker run --name redis -p 6379:6379 -d reids:latest --requirepass "123456"
# 方法二:在容器启动后,进入容器为其配置密码
docker exec -it redis /bin/bash
# 运行redis客户端
redis-cli
# 查询redis的密码
config get requirepass
# 设置redis的密码
config set requirepass "123456"
# 进行认证,才可以操作redis
auth "123456"
# 方法三:进入redis容器中redis.conf对应centos7的挂载文件(本地文件名也为redis.conf),编辑redis.conf
vi /vagrant/wuming/mydata/redis/conf/redis.conf
# 添加语句
requirepass 123456
# 添加完后保存并重启redis实例(或者成为redis容器)
此时就可以进行redis的正常测试了
代码语言:javascript复制# 连接redis客户端
docker exec -it redis redis-cli
# 填写redis设置的密码
auth 123456
# 返回OK,表示登录成功。