• 微服务分布式电商项目学习笔记(三)---- docker介绍安装以及使用docker安装软件(2020/7/10)


    其实在介绍docker的使用和安装之前应该还要介绍虚拟机的安装与配置,以及虚拟网络的配置,但是我使用的是vmware,而视频课使用的是vagrant,这一块我简看的,因此没有过多的介绍,至于vmware的安装配置和虚拟网络的配置我倒是可以给大家推荐两篇博客:

    VMware 安装 Centos7 超详细过程:https://www.runoob.com/w3cnote/vmware-install-centos7.html

    VMware虚拟机下Centos7 桥接方式网络配置完整步骤:https://blog.csdn.net/u013626215/article/details/88645003

    之前就该发布的,不过那时候还没有整理好,加上有各种各样的事情耽误,今天抽空整理了下,就发表了,如有问题,请多多指教。


     一、docker理念

    docker的概念:在任何地方发布运行,一次封装,到处运行,docker提供了一种标准。 docker解决了运行环境和配置问题软件容器,方便做持续继承并有助于整体发布的容器虚拟化技术

    docker三要素:镜像+仓库+容器

    docker可以做什么?docker是容器虚拟技术,可以实现web应用自动化打包发布、自动化测试和持续集成、在服务型环境中部署和调整数据库或其他的后台应用、搭建paas环境。

    虚拟机系统:在一个操作系统上运行另外一个操作系统,应用程序对此毫无感知,如果不需要了就可以删除这个虚拟机系统,在底层,虚拟机就是一个文件。

    虚拟机的缺点:资源占用多,冗余步骤多,启动慢。

    比较docker与传统虚拟化技术的区别: 传统虚拟机技术是虚拟出一整套硬件后,在其上运行一个完整的操作系统,在该系统上再运行所需要的程序。 而docker容器内的应用进程直接运行于宿主的内核,容器内没有自己的内核,而且也可以进行硬件虚拟,因此容器要比传统虚拟机更为轻便。并且每个容器之间互相隔离,每个容器有自己的文件系统,容器之间进程不会相互影响,能区分计算资源。

    docker的优点总结:一次构建、随处运行。更快捷的应用交付和部署;更便捷的升级和扩缩容;更简单的系统运维;更高效的计算资源利用。docker更高效:无操作系统的虚拟化开销;更敏捷,更灵活。

    docker的实例应用: 蘑菇街基于docker的优势:轻量,秒级的快速启动速度;简单易用活跃的社区;标准统一打包部署运行方案;镜像支持增量分支,易于部署; 易于构建、良好的REST API,也很适合自动化测试和持续集成,;性能高,尤其是内存和IO的开销小

    docker下载地址:官网:docker.com ; 中文版:docker-cn.com ; 仓库:docker hub


    二、docker安装

    前提说明:centos6.5以上的版本,系统为64位

    查看自己的内核版本:uname -r 
    cat /etc/redhat-release

    docker的基本组成: Client + DOCKER_HOST + Registry == docker终端+docker主机+docker仓库

    三大要素: 镜像:docker镜像就是一个只读的模板,镜像可以用来创建docker容器,一个镜像可以创建很多容器; 容器:docker利用容器独立运行的一个或一组应用。容器是用镜像创建的运行实例; 仓库:集中存放镜像文件的场所。 
    仓库和仓库注册服务器是有区别的。仓库注册服务器上往往存放着多个仓库,每个仓库中又包含了多个镜像, 每个镜像有不同的标签。 
    仓库分为公开仓库和私有仓库两种形式。最大的公开仓库是docker hub,存放了数量庞大的镜像供用户下载。国内的公开仓库包括阿里云、网易云等。

    安装步骤
    centos6.8安装步骤:

    1、yum install -y epel-release
    2、yum install -y docker-io
    3、安装后的配置文件:etc/sysconfig/docker
    4、service docker start  //启动docker
    5、docker version //查看docker的内核版本
    

    centos7安装教程: 参考博客:https://blog.csdn.net/u014069688/article/details/100532774

    启动docker:sudo systemctl start docker   
    查看docker的版本:docker -v   
    查看docker安装的镜像列表:docker images   
    设置docker开机自启动:systemctl enable docker  

    三、使用docker安装mysql和redis
    1.docker安装mysql5.7

    docker pull mysql:5.7

    1.1创建实例并启动:docker run -p 3306:3306 --name mysql 将容器的3306端口映射到主机的3306端口
    -v /mydata/mysql/log:/var/log/mysql 将mysql镜像日志文件夹挂载到主机
    -v /mydata/mysql/data:/var/lib/mysql 将mysql数据文件夹挂载到主机
    -v /mydata/mysql/conf:/etc/mysql 将配置文件夹挂在到主机
    -e MYSQLROOTPASSWORD=root 初始化root用户的密码
    -d mysql:5.7

    供复制使用
    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
    

    1.2 docker ps查看正在运行的镜像
    使用docker exec -it mysql /bin/bash 访问容器内部(每一个容器里面都是一个linux系统 在容器内部可以进行各种命令操作,退出容器回到linux主系统时,exit即可)

    另外,由于先前执行了挂载的命令,因此修改主linux里面映射好的文件夹里面的内容,镜像里面也会同步更改。

    1.3 docker里面mysql镜像的配置文件修改
    vi /mydata/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
    

    1.4重启mysql:docker restart mysql
    进入到mysql的容器看一看有没有修改好配置

    docker exec -it mysql /bin/bash  
    cd /etc/mysql  
    cat my.cnf  
    

    2.docker安装redis

     

     

    docker pull redis :下载redis镜像,不指定版本则下载最新的  
    mkdir -p /mydata/redis/conf 创建redis相关的文件夹  
    touch redis.conf 创建redis的配置文件  
    

    挂载命令

    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 
    

    进入docker镜像里面的redis

    docker exec -it redis redis-cli
    

    进入后进行set,get操作,但是重启redis后发现值获取不到了,说明刚刚redis的值是存在内存中的,没有持久化 docker restart redis 重启redis

    实现持久化:先输入pwd,再编辑redis.conf 加入:appendonly yes


    博主整理实属不易,请兄台点个赞再走吧,欢迎评论和多多指教。

     

  • 相关阅读:
    用goto做异常处理
    零长度数组的妙用
    DTMF三种模式(SIPINFO,RFC2833,INBAND)
    Myeclipse下的struts2.3.8 配置 保证绝对好用
    Linux内核--内核数据类型
    Linux内核:kthread_create(线程)、SLEEP_MILLI_SEC
    3.4.4 数据预留和对齐(skb_reserve, skb_push, skb_put, skb_pull)
    Linux 2.6内核中新的锁机制--RCU
    Linux中SysRq的使用(魔术键)
    CentOS Linux服务器安全设置
  • 原文地址:https://www.cnblogs.com/zaevn00001/p/13396055.html
Copyright © 2020-2023  润新知