学习docker直接操作使用

安装docker

Docker安装文档:https://docs.docker.com/engine/install/centos/

下面的步骤,就是根据安装文档操作的.

docker是虚拟机容器技术,基于镜像,可以做到秒级启动各种容器.每一种容器都是一个完整的运行环境,容器之间相互隔离.

  1. 安装之前可以先卸载linux上存在的docker
    执行命令前需要为root用户:(可以加上前面的sudo表示以管理员 运行)
    sudo yum remove docker \
                      docker-client \
                      docker-client-latest \
                      docker-common \
                      docker-latest \
                      docker-latest-logrotate \
                      docker-logrotate \
                      docker-engine
  2. 设置 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
  3. 启动docker

    启动:
    sudo systemctl start docker
    
    查看版本:
    docker -v
    
    查看镜像:
    docker images
    
    设置开机自启:
    sudo systemctl enable docker
    
    
    验证Docker引擎安装是否成功(可以不做此操作):
    注:该命令下载一个测试映像,并在容器中运行它。当容器运行时,它打印一条确认消息并退出
    sudo docker run hello-world
    
    
    
  4. 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
  5. docker安装镜像:

    安装mysql:(也可以在docker官网搜mysql下载, 这里不说)
    
    进行虚拟机执行:
    sudo docker pull mysql -- 默认下载最新版本
    sudo docker pull mysql:5.7 -- 指定版本下载
    
    下载完成后 使用 sudo docker images查看
  6. 创建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的相关目录    
    
    
  7. 修改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文件
  8. 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 就可以获取到了
     
  9. 虚拟机重启后出现mysql不运行

    -- 查看所有容器
    sudo docker ps -a
    
    -- 设置自启
    sudo docker update redis --restart=always
    sudo docker update mysql --restart=always
    注释: 只要虚拟机重启,这个镜像就会重启
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值