【Docker安装软件,一篇就够了】Docker安装,Docker安装Mysql8.0、Redis、RabbitMQ及常用命令(持续更新)

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
云数据库 Tair(兼容Redis),内存型 2GB
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
简介: 【Docker安装软件,一篇就够了】Docker安装,Docker安装Mysql8.0、Redis、RabbitMQ及常用命令(持续更新)

Docker安装

1、Docker 要求

CentOS 系统的内核版本高于 3.10 ,先验证你的CentOS 版本是否支持 Docker 。


[root@k8s-n1 ~]# uname -r
3.10.0-693.el7.x86_64


2、安装docker

yum -y install docker


3、启动docker

systemctl start docker.service


4、设置docker开机启动

systemctl enable docker.service


Docker安装Mysql

1、下载mysql镜像

下载最新版本:docker pull mysql
下载指定版本:docker pull mysql:8.0.15
[root@k8s-n1 ~]# docker pull mysql:8.0.15

如下图:


20191205150314406.png


2、查看下载的mysql镜像

[root@k8s-n1 ~]# docker images


如下图:

20191205150324932.png


3、创建目录

[root@k8s-n1 /]# mkdir -p /mnt/mysql/data /mnt/mysql/logs /mnt/mysql/conf


4、启动docker里面的mysql镜像

[root@k8s-n1 /]# docker run -p 3308:3306 --name trade_mysql -v /mnt/mysql/conf:/etc/mysql/conf.d -v /mnt/mysql/logs:/logs -v /mnt/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d 7bb2586065cd


参数说明:

-v 挂载宿主机目录和 docker容器中的目录

-d 后台运行

-p 映射容器端口号和宿主机端口号

-e 环境参数

7bb2586065cd 镜像id( IMAGE ID )


查看容器启动情况

docker ps


如果mysql启动没有成功,查看mysql启动日志

[root@k8s-n1 mysql/]#  docker logs -f trade_mysql
ERROR: mysqld failed while attempting to check config
command was: "mysqld --verbose --help"
mysqld: Can't read dir of '/etc/mysql/conf.d/' (OS errno 13 - Permission denied)
mysqld: [ERROR] Fatal error in defaults handling. Program aborted!


如果出现上图错误:

[root@k8s-n1 /]# docker run --privileged=true -p 3308:3306 --name trade_mysql -v /mnt/mysql/conf:/etc/mysql/conf.d -v /mnt/mysql/logs:/logs -v /mnt/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d 7bb2586065cd


添加**–privileged=true**增加权限命令,启动成功。


此时启动已完成,在docker启动镜像时密码加密使用的是caching_sha2_password,

在服务器端启动默认使用mysql_native_password 加密的,

如需要使用外部工具连接,需要进入docker容器重置root密码。

详细操作如下:


5、进入docker容器修改Mysql

[root@k8s-n1 mysql]# docker exec -it trade_mysql /bin/sh
# mysql -u root -p
mysql> ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';


6、安装成功

[root@k8s-n1 /]# docker ps


查看docker容器:


20191205150343191.png


Navicat连接:


20191205150347550.png

docker安装Redis


1、使用docker查看Redis版本信息

[root@k8s-n1 /]# docker search redis


2、下载redis镜像

[root@k8s-n1 /]# docker pull redis:4.0


如下图:


20191205150402160.png


3、查看下载镜像的镜像id

[root@k8s-n1 /]# docker images


4、启动docker里的redis镜像

[root@k8s-n1 /]# docker run -itd --name trade_redis -p 6380:6379 8280a2c45ce5


参数说明:

-p 6380:6379:映射容器服务的 6379 端口到宿主机的 6380 端口。外部可以直接通过宿主机ip:6380 访问到 Redis 的服务。

8280a2c45ce5 镜像id( IMAGE ID )


5、安装成功

[root@k8s-n1 /]# docker ps

查看docker容器:

2019120515042045.png


RedisDesktopManager连接:

20191205150428607.png


6、测试Redis

  • 进入docker容器测试
$ docker exec -it redis-test /bin/bash
root@1d71ab146d19:/data# redis-cli
127.0.0.1:6379> set name test
OK
127.0.0.1:6379> get name
"test"
127.0.0.1:6379> 

容器内部测试:


20191205150448981.png


docker下安装RabbitMQ


1、docker拉取RabbitMQ镜像


[root@k8s-n1 /]# docker pull rabbitmq:3.7.7-management


如下图:


2019120515050048.png


4、启动docker里的RabbitMQ镜像

[root@k8s-n1 /]# docker run -d --name rabbitmq3.7.7 -p 5672:5672 -p 15672:15672 -v /mnt/rabbitMQ/data:/var/lib/rabbitmq --hostname myRabbit -e RABBITMQ_DEFAULT_VHOST=my_vhost  -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=admin 2888deb59dfc


参数说明:

-d 后台运行容器;

–name 指定容器名;

-p 指定服务运行的端口(5672:应用访问端口;15672:控制台Web端口号);

-v 映射目录或文件;

–hostname 主机名(RabbitMQ的一个重要注意事项是它根据所谓的 “节点名称” 存储数据,默认为主机名);

-e 指定环境变量;(RABBITMQ_DEFAULT_VHOST:默认虚拟机名;RABBITMQ_DEFAULT_USER:默认的用户名;RABBITMQ_DEFAULT_PASS:默认用户名的密码)


5、启动成功

[root@k8s-n1 /]# docker ps
  • 查看docker容器:


20191205150526123.png


浏览器访问

用浏览器访问http://192.168.2.21:15672 访问成功,表示RabbitMQ安装成功。


20191205150533339.png

docker下安装nginx


1、docker拉取nginx镜像

docker pull nginx:版本号, 拉取指定版本nginx或docker pull nginx,拉取最新版本

2、目录、端口映射

目录映射: /data/deploy_honsupply_web/html:/usr/share/nginx/html

端口映射:8000:80

  • 注 前端打包文件放在/data/deploy_honsupply_web/html目录下


3、启动nginx

docker run -d -p 8999:80 -v /data/web/html:/usr/share/nginx/html --name nginx8999 --restart always nginx


Docker容器内部无法访问宿主机网络(No Route to host)


  • 关闭防火墙(局域网内推荐)


# centos 7
systemctl stop firewalld
  • 在防火墙上开放指定端口
# 添加端口
firewall-cmd --zone=public --add-port=7001/tcp --permanent
firewall-cmd --reload


Docker启动报错 : iptables failed

错误信息


Error response from daemon: driver failed programming external connectivity on endpoint gloomy_kirch : iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 32810 -j DNAT --to-destination 172.17.0.2:80 ! -i docker0: iptables: No chain/target/match by that name.


原因分析


在Docker Daemon服务启动之后, 修改了防火墙配置(修改/关闭等), 此时启动Docker容器会造成防火墙网络配置有问题。


解决方案

# 先重启防火墙
systemctl restart firewalld
# 再重启Docker 服务
systemctl restart docker

Docker挂载的目录, 在容器内无读写权限(Permission denied)

环境&现象

CentOS 7.4 环境, 启动Docker时volume容器和宿主机的挂载目录, 但是在容器内部无权限对此目录进行操作

# 错误现象
ls: cannot open directory '.': Permission denied

解决办法

  • 关闭CentOS7中安全模块selinux


# 临时关闭selinux
setenforce 0
# 永久关闭selinux : SELINUX=disabled , 重启机器生效
vi /etc/selinux/config
  • 运行容器时, 给容器增加特权
docker run -i -t -v /soft:/soft --privileged=true 637fe9ea94f0 /bin/bash


SpringBoot项目打包成docker镜像

创建Dockerfile文件,内容如下:

FROM openjdk:8-jdk-alpine
VOLUME /temp
EXPOSE 9001
ADD logistics-quote-1.0.0.jar logistics-quote.jar
ENTRYPOINT ["java","-jar","/logistics-quote.jar"]


打成docker镜像

将jar包和Dockerfile放在服务器的统一目录下,执行命令:

docker build -t quote:1.0.0 .


执行docker images 可以查看到生成的镜像

docker 启动镜像

docker run -d --name trade_test -p 9002:9001 imageId

docker删除


# 停止容器运行
docker stop containsId
# 删除容器
docker rm containsId
# 删除镜像
docker rmi imagesId


查看docker容器的内部ip

docker exec -it containsId /bin/bash
cat /etc/hosts


下载docker镜像里面的文件

docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH
docker cp ecef8319d2c8:/root/test.txt /root/


该命令的意思是将当前操作系统(Linux)家目录(root)下的文件test.txt拷贝到容器id为ecef8319d2c8的家目录(root)文件夹下。如果是win系统的话请替换为win下的合法路径(例如:D:/test.txt)。


Docker 常用命令

查看所有的镜像

docker images

停止所有的容器

docker stop $(docker ps -a -q)

查看所有的容器

docker ps -a

获取所有的容器的容器id

docker ps -a -q

删除容器

docker rm 容器id

删除所有的容器

docker rm $(docker ps -a -q)

删除镜像,需要先删除容器,然后才可以删除镜像。(未验证)

docker rmi 镜像id

获取所有镜像的id

docker images -q

删除所有的镜像

docker rmi -f $(docker images -q)

构建镜像(注意镜像名称后面加 “空格.”)

docker build -t 镜像名称 .

运行docker镜像

docker run 镜像名称

映射指定的ip启动

docker run -d -p 宿主ip:虚拟机ip 镜像名称

查看docker运行的日志log

docker logs 容器id(CONTAINER ID)

停止容器

docker stop 容器id(CONTAINER ID)

启动容器

docker start 容器id(CONTAINER ID)

目录
相关文章
|
9天前
|
NoSQL 算法 Redis
docker高级篇(大厂进阶):安装redis集群
docker高级篇(大厂进阶):安装redis集群
61 24
|
2天前
|
NoSQL 关系型数据库 MySQL
Linux安装jdk、mysql、redis
Linux安装jdk、mysql、redis
58 7
|
1月前
|
NoSQL Linux PHP
如何在不同操作系统上安装 Redis 服务器,包括 Linux 和 Windows 的具体步骤
本文介绍了如何在不同操作系统上安装 Redis 服务器,包括 Linux 和 Windows 的具体步骤。接着,对比了两种常用的 PHP Redis 客户端扩展:PhpRedis 和 Predis,详细说明了它们的安装方法及优缺点。最后,提供了使用 PhpRedis 和 Predis 在 PHP 中连接 Redis 服务器及进行字符串、列表、集合和哈希等数据类型的基本操作示例。
64 4
|
1月前
|
存储 SQL 关系型数据库
2024Mysql And Redis基础与进阶操作系列(1)作者——LJS[含MySQL的下载、安装、配置详解步骤及报错对应解决方法]
Mysql And Redis基础与进阶操作系列(1)之[MySQL的下载、安装、配置详解步骤及报错对应解决方法]
|
2月前
|
NoSQL Ubuntu Linux
Redis 安装
10月更文挑战第14天
70 1
|
1月前
|
NoSQL 编译器 Linux
【赵渝强老师】Redis的安装与访问
本文基于Redis 6.2版本,详细介绍了在CentOS 7 64位虚拟机环境中部署Redis的步骤。内容包括安装GCC编译器、创建安装目录、解压安装包、编译安装、配置文件修改、启动服务及验证等操作。视频讲解和相关图片帮助理解每一步骤。
|
2月前
|
NoSQL Linux Redis
Docker学习二(Centos):Docker安装并运行redis(成功运行)
这篇文章介绍了在CentOS系统上使用Docker安装并运行Redis数据库的详细步骤,包括拉取Redis镜像、创建挂载目录、下载配置文件、修改配置以及使用Docker命令运行Redis容器,并检查运行状态和使用Navicat连接Redis。
345 3
|
3天前
|
存储 Oracle 关系型数据库
数据库传奇:MySQL创世之父的两千金My、Maria
《数据库传奇:MySQL创世之父的两千金My、Maria》介绍了MySQL的发展历程及其分支MariaDB。MySQL由Michael Widenius等人于1994年创建,现归Oracle所有,广泛应用于阿里巴巴、腾讯等企业。2009年,Widenius因担心Oracle收购影响MySQL的开源性,创建了MariaDB,提供额外功能和改进。维基百科、Google等已逐步替换为MariaDB,以确保更好的性能和社区支持。掌握MariaDB作为备用方案,对未来发展至关重要。
13 3
|
3天前
|
安全 关系型数据库 MySQL
MySQL崩溃保险箱:探秘Redo/Undo日志确保数据库安全无忧!
《MySQL崩溃保险箱:探秘Redo/Undo日志确保数据库安全无忧!》介绍了MySQL中的三种关键日志:二进制日志(Binary Log)、重做日志(Redo Log)和撤销日志(Undo Log)。这些日志确保了数据库的ACID特性,即原子性、一致性、隔离性和持久性。Redo Log记录数据页的物理修改,保证事务持久性;Undo Log记录事务的逆操作,支持回滚和多版本并发控制(MVCC)。文章还详细对比了InnoDB和MyISAM存储引擎在事务支持、锁定机制、并发性等方面的差异,强调了InnoDB在高并发和事务处理中的优势。通过这些机制,MySQL能够在事务执行、崩溃和恢复过程中保持
19 3
|
3天前
|
SQL 关系型数据库 MySQL
数据库灾难应对:MySQL误删除数据的救赎之道,技巧get起来!之binlog
《数据库灾难应对:MySQL误删除数据的救赎之道,技巧get起来!之binlog》介绍了如何利用MySQL的二进制日志(Binlog)恢复误删除的数据。主要内容包括: 1. **启用二进制日志**:在`my.cnf`中配置`log-bin`并重启MySQL服务。 2. **查看二进制日志文件**:使用`SHOW VARIABLES LIKE 'log_%';`和`SHOW MASTER STATUS;`命令获取当前日志文件及位置。 3. **创建数据备份**:确保在恢复前已有备份,以防意外。 4. **导出二进制日志为SQL语句**:使用`mysqlbinlog`
22 2