备注:用vagrant创建的linux环境
####docker简介
什么是docker?
基于镜像启动容器,容器之间相互隔离
sudo yum remove docker
docker-client
docker-client-latest
docker-common
docker-latest
docker-latest-logrotate
docker-logrotate
docker-engine
sudo yum install -y yum-utils
device-mapper-persistent-data
lvm2
sudo yum-config-manager
–add-repo
https://download.docker.com/linux/centos/docker-ce.repo
sudo yum install docker-ce docker-ce-cli containerd.io
docker -v
sudo systemctl start docker
sudo systemctl enable docker
不设置的话,docker下载镜像会从国外那个网站下载,设置后会从国内的阿里云那边加速,底下四个命令,分别执行
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
####docker中下载镜像
docker的镜像网站,docker hub
docker pull+文件名直接下载对应的镜像(这些镜像前提就是都要在docker hub中有)
比如docker pull redis(redis后面可以跟上:版本,比如docker pull redis:3.4指的就是下载redis3.4的版本,不指定版本的话默认下载的就是最新版本)
docker pull mysql:5.7
创建实例并启动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 用户的密码
-d mysql:5.7 意思想相当于我们用这个名字的容器让其操作
docker pull redis
mkdir -p /mydata/redis/conf
touch /mydata/redis/conf/redis.conf
(为什么先创建个容器外部的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
sudo docker update redis --restart always
####docker中查看容器
docker images.查看当前安装的docker下的所有容器,如果没有权限前面加上sudo docker images,如果每次加上太麻烦了,这时候我们可以切换用户,su root,切换root用户后,因为我们是用vagrant创建的虚拟机,所以密码也是vagrant
whoami:查看当前是哪个用户操作
docker ps,查看正在运行中的容器
每次 docker run。。。就会启动一个docker容器,而且容器和容器之间相互隔离
####进入指定的docker容器
进入交互模式:docker exec -it 安装的容器名(eg:mysql)/bin/bash
docker exec -it redis redis-cli 进redis的cli
这个模式下就相当于进入容器内部了,每个容器内部可以理解为一个小型的linux系统(目录结构基本一样和linux)
我们这时候一般用端口映射,就是linux的端口映射到docker的端口
因为每次都要进这个容器内部改东西,所以比较麻烦,比如改一些配置啊,查看日志啊。这时候一般用挂载形式,挂载一些常用的配置文件啊,日志啊,到我们的linux里面,我们在linux里面的挂载内容修改后直接对docker中安装的文件生效,docker中安装的软件运行产生的日志我们linux对应挂载的目录中也可以查看的到
####通过vagrant下载的虚拟机命令的使用
vagrant up启动虚拟机
vagrant ssh连接虚拟机用vagrant用户,切换用户用su root(切换为root用户)
####改完配置后重启
docker重启服务命令:每次改完配置后尽量都重启一下
docker restart +重启的服务名(eg:redis)
####安装redis后开启持久化
redis安装上后默认是存数据到内存的,也就是没有开启持久化的,我们要给他开启的话就是按照图片中说的创建了后,挂载了后,我们修改linux服务器的redis.conf文件,里面加上一句话
appendonly yes,开启aof持久化模式