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

__EOF__

本文作者柳小白
本文链接https://www.cnblogs.com/bigfairy/p/14206870.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   柳小白  阅读(140)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
点击右上角即可分享
微信分享提示