安装docker
Docker安装文档:https://docs.docker.com/engine/install/centos/
下面的步骤,就是根据安装文档操作的.
docker是虚拟机容器技术,基于镜像,可以做到秒级启动各种容器.每一种容器都是一个完整的运行环境,容器之间相互隔离.
- 安装之前可以先卸载linux上存在的docker
执行命令前需要为root用户:(可以加上前面的sudo表示以管理员 运行) sudo yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine
-
设置 docker 的储存库
第一步: 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 或 sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
-
启动docker
启动: sudo systemctl start docker 查看版本: docker -v 查看镜像: docker images 设置开机自启: sudo systemctl enable docker 验证Docker引擎安装是否成功(可以不做此操作): 注:该命令下载一个测试映像,并在容器中运行它。当容器运行时,它打印一条确认消息并退出 sudo docker run hello-world
-
docker 镜像加速:
因是国外的网站下载慢 , 所以我们配上国内的镜像加速(以下是使用阿里的) 注:在阿里云官网的容器镜像服务-->镜像中心-->镜像加速器-->CentOS 第一步操作命令: 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安装镜像:
安装mysql:(也可以在docker官网搜mysql下载, 这里不说) 进行虚拟机执行: sudo docker pull mysql -- 默认下载最新版本 sudo docker pull mysql:5.7 -- 指定版本下载 下载完成后 使用 sudo docker images查看
-
创建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用户密码 解释 不明白跳过: 做文件挂载的原因就是,如果操作配置文件,进入到容器内部修改过于麻烦了, 所以将此挂载到inux目录上 在linux上创建 /mydata/mysql/log 目录 将/var/log/mysql 挂载到前面创建的目录上 linux上挂载的目录 : 容器内部需要挂载的目录 第一步命令: 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 -- 完成就装好了 -- 查看正在运行的容器: docker ps 下面内容个人理解,可能出现误差 仅做参考 ------ 仅做了解 一个镜像就相当于是将这个软件安装在了一个linux上 ---- 进入容器内部: docker exec -it 可以是id/名称 /bin/bash :/# ls ......这里列出来的其实就是一个完整的linux目录结构 就相当于mysql装在了这个linux上面 查看mysql装在了哪里 :/# whereis mysql ......mysql的相关目录
-
修改mysql配置:
第一步: vi /mydata/mysql/conf/my.cnf 第二步将下面内容粘贴在my.conf文件中: [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 wq! 退出 完成以后需要重启mysql 重启mysql: docker restart 重启以后也会将上面内容映射到mysql容器内部 , 查看方式 : docker exec -it mysql /bin/bash (进入容器内部后,查看的地址就是我们上一部做的映射路径) :/# cd /etc/mysql/ :/etc/mysql# ls 然后查看这个目录下的 my.conf文件
-
docker 安装redis
下载redis镜像: docker pulll redis 常规启动 --name 实例名字 -d 以什么启动: docker run --name some-redis -d redis 此处启动: 第一步: mkdir -p /mydata/redis/conf 第二步执行先进入到第一步的conf目录: touch /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 第三步解释: 注:-p 虚拟机的6379映射到 docker的6379 -name 起名字 -v 进行挂载 以:分割 后者挂载到前者 注:将容器内部的redis.conf 挂载到外部 也就是虚拟机的上 注:表示启动是以空格后面的配置文件来启动redis的 注: redis容器内部没有redis.conf文件,所以需要先创建这层目录文件,防止挂载时将redis.conf作为目录 第四步: 检查: docker ps 正常redis应该是已经运行起来了 测试: docker exec -it redis redis-cli 这样就直接连向了docker的redis 第五步: redis默认是没有持久化的 持久化操作: 在外部挂载的目录中(/mydata/redis/conf) vi redis.conf appendonly yes 表示使用AOF持久化 wq 保存 修改玩配置文件 重启redis: docker restart redis 操作客户端存数据 docker exec -it redis redis-cli set aa 存数据 exit 退出 docker restart redis 重启 docker exec -it redis redis-cli 重新连接 get aa 就可以获取到了
-
虚拟机重启后出现mysql不运行
-- 查看所有容器 sudo docker ps -a -- 设置自启 sudo docker update redis --restart=always sudo docker update mysql --restart=always 注释: 只要虚拟机重启,这个镜像就会重启