zoukankan      html  css  js  c++  java
  • docker实战

    Docker 安装 MySQL

    MySQL 是世界上最受欢迎的开源数据库。凭借其可靠性、易用性和性能,MySQL 已成为 Web 应用程序的数据库优先选择。

    1、查看可用的 MySQL 版本

    官网地址:https://hub.docker.com/_/mysql

    2、拉取mysql镜像

    [root@localhost ~]# docker pull mysql:8.0.22
    8.0.22: Pulling from library/mysql
    Digest: sha256:78800e6d3f1b230e35275145e657b82c3fb02a27b2d8e76aac2f5e90c1c30873
    Status: Downloaded newer image for mysql:8.0.22
    docker.io/library/mysql:8.0.22
    [root@localhost ~]# docker images
    REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
    mysql               8.0.22              a347a5928046        6 days ago          545MB
    mysql               latest              a347a5928046        6 days ago          545MB
    

    3、运行mysql容器

    docker run --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql
    

    这种方式启动容器,一旦容器删除数据会丢失,所以正常都会将数据挂载在主机的目录下。

    docker run 
    --restart=always 
    -p 3306:3306 --name mysql 
    -v /usr/local/docker/mysql/conf:/etc/mysql/conf.d 
    -v /usr/local/docker/mysql/logs:/var/log/mysql 
    -v /usr/local/docker/mysql/data:/var/lib/mysql 
    -e MYSQL_ROOT_PASSWORD=123456 
    -d mysql:8.0.22
    

    命令参数:

    • --restart=always: 当Docker 重启时,容器会自动启动

    • -p 3306:3306:将容器的3306端口映射到主机的3306端口

    • --name mysql:-> 指定容器名称

    • -v /usr/local/docker/mysql/conf:/etc/mysql:将主机当前目录下的 conf 挂载到容器的 /etc/mysql

    • -v /usr/local/docker/mysql/logs:/var/log/mysql:将主机当前目录下的 logs 目录挂载到容器的 /var/log/mysql

    • -v /usr/local/docker/mysql/data:/var/lib/mysql:将主机当前目录下的 data 目录挂载到容器的 /var/lib/mysql

    • -e MYSQL_ROOT_PASSWORD=123456:初始化root用户的密码

    • -d:以守护进程的方式启动容器

    查看容器启动情况

    [root@localhost ~]# docker ps
    CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                               NAMES
    73cde0728e20        mysql               "docker-entrypoint.s…"   11 minutes ago      Up 11 minutes       0.0.0.0:3306->3306/tcp, 33060/tcp   mysql
    [root@localhost ~]# 
    

    4、进入容器

    docker exec -it mysql bash
    

    5、登录mysql

    mysql -u root -p
    ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
    

    6、添加远程登录用户

    CREATE USER 'bigfairy'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
    GRANT ALL PRIVILEGES ON *.* TO 'bigfairy'@'%';
    

    7、远程客户端连接mysql

    这里使用Navicat连接mysql如下:

    Docker安装Redis

    1、查看可用的 Redis 版本

    官方地址:https://hub.docker.com/_/redis?tab=description&page=1&ordering=last_updated

    2、拉取redis镜像

    [root@localhost ~]# docker pull redis:rc-alpine3.12
    rc-alpine3.12: Pulling from library/redis
    801bfaa63ef2: Pull complete 
    9a8d0188e481: Pull complete 
    8a3f5c4e0176: Pull complete 
    d9af23bab33d: Pull complete 
    1e24b8f34bba: Pull complete 
    a0d216621fb7: Pull complete 
    Digest: sha256:d8d47eea291a1e41025a86678a2a57e7fb2c44ec6513f61eb1c8a3feee1ee564
    Status: Downloaded newer image for redis:rc-alpine3.12
    docker.io/library/redis:rc-alpine3.12
    [root@localhost ~]# docker images
    REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
    mysql               8.0.22              a347a5928046        7 days ago          545MB
    redis               rc-alpine3.12       5bca63d382f8        11 days ago         32.3MB
    ubuntu              latest              f643c72bc252        4 weeks ago         72.9MB
    

    3、redis.conf文件配置

    从官网获取 redis.conf 配置文件

    修改下载的默认配置文件

    • bind 127.0.0.1 #注释掉这部分,这是限制redis只能本地访问
    • protected-mode no #默认yes,开启保护模式,限制为本地访问
    • daemonize no #默认no,改为yes意为以守护进程方式启动,可后台运行,除非kill进程(可选),改为yes会使配置文件方式启动redis失败
    • requirepass 你的密码 #给redis设置密码(可选)
    • dir ./ #输入本地redis数据库存放文件夹(可选)
    • appendonly yes #redis持久化(可选)

    操作步骤如下

    [root@localhost docker]# mkdir -p /usr/local/docker/redis/
    [root@localhost docker]# cd /usr/local/docker/redis/
    [root@localhost redis]# wget http://download.redis.io/redis-stable/redis.conf
    --2020-12-29 14:44:27--  http://download.redis.io/redis-stable/redis.conf
    Resolving download.redis.io (download.redis.io)... 45.60.125.1
    Connecting to download.redis.io (download.redis.io)|45.60.125.1|:80... connected.
    HTTP request sent, awaiting response... 200 OK
    Length: 84841 (83K) [application/octet-stream]
    Saving to: ‘redis.conf’
    
    100%[======================================================================================================================================>] 84,841       175KB/s   in 0.5s   
    
    2020-12-29 14:44:28 (175 KB/s) - ‘redis.conf’ saved [84841/84841]
    
    [root@localhost redis]# ls
    redis.conf
    [root@localhost redis]# vim redis.conf 
    

    4、docker启动redis

    docker run 
    --restart=always 
    -p 6379:6379 
    --name redis 
    -v /usr/local/docker/redis/redis.conf:/etc/redis/redis.conf 
    -v /usr/local/docker/redis/data:/data 
    -d redis:rc-alpine3.12 redis-server /etc/redis/redis.conf 
    --appendonly yes
    

    命令解释说明:

    • --restart=always: 当Docker 重启时,容器会自动启动

    • -p 6379:6379: 把容器内的6379端口(后面的端口)映射到宿主机6379端口(前面的端口)

    • --name redis: 指定容器名称

    • -v /usr/local/docker/redis/redis.conf:/etc/redis/redis.conf:将主机目录下的 redis.conf目录挂载到容器的/etc/redis/redis.conf

    • -v /usr/local/docker/redis/data:/data:将主机目录下的data目录挂载到容器的data目录下

    • -d redis:rc-alpine3.12 :表示后台启动redis

    • **redis-server /etc/redis/redis.conf **:以配置文件启动redis,加载容器内的conf文件,最终找到的是挂载的目录/usr/local/docker/redis.conf

    • appendonly yes: 开启redis 持久化

    5、查看是否启动成功

    [root@localhost ~]# docker ps 
    CONTAINER ID        IMAGE                 COMMAND                  CREATED             STATUS              PORTS                    NAMES
    04ec4e8bed2a        redis:rc-alpine3.12   "docker-entrypoint.s…"   14 minutes ago      Up 7 minutes        0.0.0.0:6379->6379/tcp   redis
    

    Docker常用命令

     # docker查看日志记录
     # 命令格式:
       docker logs [OPTIONS] CONTAINER
       Options:
             --details        显示更多的信息
         -f, --follow         跟踪实时日志
             --since string   显示自某个timestamp之后的日志,或相对时间,如42m(即42分钟)
             --tail string    从日志末尾显示多少行日志, 默认是all
         -t, --timestamps     显示时间戳
             --until string   显示自某个timestamp之前的日志,或相对时间,如42m(即42分钟)
    
     # 查看指定时间后的日志,只显示最后100行:
     docker logs -f -t --since="2018-02-08" --tail=100 CONTAINER_ID
     # 查看最近30分钟的日志:
     docker logs --since 30m CONTAINER_ID
     # 查看某时间之后的日志:
     docker logs -t --since="2018-02-08T13:23:37" CONTAINER_ID
     # 查看某时间段日志:
     docker logs -t --since="2018-02-08T13:23:37" --until "2018-02-09T12:23:37" CONTAINER_ID
    

    docker镜像

    # 列出镜像
    docker images
    docker image ls
    # 拉取镜像
    docker pull 镜像名称
    # 运行镜像
    docker run -it --rm 
    ubuntu:16.04 
    bash
    # 删除镜像
    docker image rm 镜像名称
    docker image rm $(docker image ls -q 镜像名称)
    docker rmi 镜像名称
    

    docker容器,[]的内容可以省略

    # 启动容器
    docker [container] run -itd --rm ubuntu /bin/bash
    # 停止容器
    docker [container] stop <容器 ID>
    # 启动容器
    docker [container] start <容器 ID>
    # 重启容器
    docker [container] restart <容器 ID>
    # 查看所有容器
    docker [container] ps -a
    # 查看当前正在运行的容器
    docker [container] ps
    # 进入容器
    docker [container] exec -it <容器 ID> /bin/bash
    # 删除容器
    docker [container] rm  <容器 ID>
    # 清理掉所有处于终止状态的容器
    docker container prune
    

    docker仓库

    # 登录
    docker login
    # 退出
    docker logout
    # 搜索
    docker search 镜像名
    # 拉取镜像
    docker pull 镜像名
    # 标记镜像
    docker tag 镜像名:标签 仓库ip:仓库端口/标记名称:标记标签
    # 推送镜像
    docker push 标记名称:标记标签
    

    docker数据卷

     # 查看所有的数据卷
     docker volume ls
     # 创建数据卷
     docker volume create test-volume1
     # 查看指定数据卷详情信息
     docker volume inspect test-volume1
     # 删除数据卷
     docker volume rm test-volume3
     # 删除没有容器挂载的数据卷
     docker volume prune
    
  • 相关阅读:
    HackerRank "Arithmetic Expressions" !
    HackerRank "Poker Nim"
    HackerRank "Nimble Game"
    HackerRank "Misère Nim"
    HackerRank "Triangle Numbers"
    HackerRank "Flipping the Matrix"
    HackerRank "Chessboard Game, Again!"
    HackerRank "Tower Breakers, Again!"
    HackerRank
    HackerRank "Richie Rich"
  • 原文地址:https://www.cnblogs.com/bigfairy/p/14206870.html
Copyright © 2011-2022 走看看