前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >一文学会Docker(附安装mysql, nacos, redis等教程)

一文学会Docker(附安装mysql, nacos, redis等教程)

原创
作者头像
天下之猴
修改2024-09-20 20:12:05
1340
修改2024-09-20 20:12:05

认识docker

容器

容器中准备了软件运行所需要的一系列依赖,容器内部的网络和服务器的网络不是互通的可以简单理解成虚拟机上的虚拟机

进入容器

docker exec -it 容器名 /bin/bash

运行容器

docker run -it -d --restart=always -p本机端口:容器端口 镜像名称,run命令会创建一个新的 容器,并运行

-d:后台运行

-p:端口映射,如果是P的话会自动分配主机端口映射到容器默认端口

-it:打开伪终端,就是进入容器的控制台进行操作

--restart=always:开机自启动

查看

查看运行的容器

docker ps

查看所有容器

docker ps -a

查看容器的运行日志

docker container logs 容器名称

docker logs -f 容器ID

查看容器IP

docker inspect 容器名 | grep IPAddress

删除容器

docker rm -f 容器id

-f:force强制删除,运行的容器正常删除不了,可强制删除

停止与启动

停止/启动

docker stop/start 容器id

重启

docker restart 容器名

镜像

容器的安装包,容器中的内容和配置信息,都存放于镜像中

查看镜像

docker images

删除镜像

docker rmi 镜像id

Docker

轮船,将容器发送到不同的服务器中

仓库

存放镜像

安装docker

https://www.bilibili.com/video/BV13Z4y1v7RY/?spm_id_from=333.999.0.0&vd_source=568045caf8e6c5a69368ef315c54c0bd

删除docker

代码语言:javascript
复制
yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

安装yum并配置yum源

代码语言:javascript
复制
yum install -y yum-utils
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

查看docker所有版本

代码语言:javascript
复制
yum list docker-ce --showduplicates | sort -r

通过yum安装指定版本的docker

代码语言:javascript
复制
yum install -y docker-ce-20.10.8

启动docker,设置为开机自启动

代码语言:javascript
复制
systemctl start docker
systemctl enable docker

Mysql

安装

拉取镜像

代码语言:javascript
复制
docker pull mysql:8.0.31

在root目录下创建mysql文件夹

代码语言:javascript
复制
mkdir ~/mysql
cd mysql

运行镜像,这里的3307是虚拟机的端口,实际上也应该和宿主机端口一致

代码语言:javascript
复制
docker run -id \
> --name mysql01 \
> -v $PWD/conf:/etc/mysql/conf.d \
> -v $PWD/logs:/logs \
> -v $PWD/data:/var/lib/mysql \
> -e MYSQL_ROOT_PASSWORD=123456  \
> -p 3306:3306 \
> --restart always: \
> mysql:8.0.31

开去防火墙端口

代码语言:javascript
复制
firewall-cmd --zone=public --add-port=3306/tcp --permanent

开启后需要重启防火墙端口才能生效

代码语言:javascript
复制
firewall-cmd --reload

查看已开启的防火墙端口

代码语言:javascript
复制
firewall-cmd --zone=public --list-ports

docker搭建MySQL集群

  • 创建mysql的配置文件
代码语言:javascript
复制
[mysqld]
skip-name-resolve
character_set_server=utf8
datadir=/var/lib/mysql
server-id=1000
log-bin=/var/lib/mysql/mysql-bin
binlog-do-db=mydb//绑定的数据库

docker中的mysql导入sql文件

  1. 将sql文件cv到虚拟机目录中
  2. 将宿主机文件拷贝到容器中docker cp /path/to/sql/文件名.sql mysql:/文件名.sql
  3. 进入容器,登录mysql,创建,选择数据库
代码语言:javascript
复制
docker exec -it mysql /bin/bash
mysql -uroot -p
CREATE DATABASE mydatabase;
USE mydatabase;
  1. 导入SQL文件,验证数据
代码语言:javascript
复制
source /文件名.sql;
SHOW TABLES;

Redis

拉取镜像

代码语言:javascript
复制
docker pull redis:6.0

运行镜像

代码语言:javascript
复制
docker run -id --name=redis01 -p 6379:6379:6379 redis:6.0

开启防火墙的端口,重启防火墙,查看防火墙端口

代码语言:javascript
复制
firewall-cmd --zone=public --add-port=6379/tcp --permanent
firewall-cmd --reload
firewall-cmd --zone=public --list-ports

测试

RabbitMQ

拉取镜像,带有-management的是有web界面管理的的

代码语言:javascript
复制
docker pull rabbitmq:3.12.7-management

运行容器

代码语言:javascript
复制
docker run --name rabbitmq01 -d -p 5672:5672 -p 15672:15672 rabbitmq:3.12.7-management

5672:后端端口

15672:管理界面端口

25672:集群端口

开启端口

代码语言:javascript
复制
firewall-cmd --zone=public --add-port=5672/tcp --add-port=15672/tcp --permanent

重新加载

代码语言:javascript
复制
firewall-cmd --reload

安装目录

Nacos

①:docker拉取镜像

docker pull nacos/nacos-server:1.2.0

②:创建容器

docker run --env MODE=standalone --name nacos --restart=always -d -p 8848:8848 nacos/nacos-server:1.2.0

  • MODE=standalone 单机版
  • --restart=always 开机启动
  • -p 8848:8848 映射端口
  • -d 创建一个守护式容器在后台运行

③:访问地址:http://192.168.146.128:8848/nacos

MinIO

环境搭建

  • 拉取镜像 docker pull minio/minio
  • 运行容器
代码语言:javascript
复制
docker run -d \-p 9000:9000 \-p 9001:9001 \--name minio1 \-v /home/minio/data:/data \-e "MINIO_ROOT_USER=minio" \-e "MINIO_ROOT_PASSWORD=minio123" \minio/minio server /data --console-address ":9001"
  • -d: 在后台(守护模式)运行容器。
  • -p 9000:9000: 将主机的9000端口映射到容器的9000端口,用于访问MinIO服务。(后端代码对应的端口)
  • -p 9001:9001: 将主机的9001端口映射到容器的9001端口,用于访问MinIO控制台。
  • --name minio1: 为容器指定一个名称,这里是"minio1"。
  • -v /home/minio/data:/data: 将主机的/home/minio/data目录挂载到容器的/data目录,用于持久化存储MinIO的数据。
  • -e "MINIO_ROOT_USER=minio": 设置MinIO的根用户的用户名为"minio"。
  • -e "MINIO_ROOT_PASSWORD=minio123": 设置MinIO的根用户的密码为"minio123"。
  • \minio/minio server /data: 使用MinIO容器中的minio/minio镜像来运行MinIO服务,将数据存储在容器的/data目录中。
  • --console-address ":9001": 设置MinIO控制台的访问地址为容器的9001端口。

新版minio和老版的运行命令不一样,上面是新版的运行命令,api端口也要和console端口不一样

kafka

在安装kafka之前得先安装zookeeper,需要注意两者版本要对应,以免版本不匹配,kafka对zookeeper是强依赖,zookeeper在kafka中的作用

  • docker pull wurstmeister/kafka:2.12-2.3.1
  • 运行kafka
    代码语言:javascript
    复制
    docker run -d --name kafka \
    --env KAFKA_ADVERTISED_HOST_NAME=192.168.146.128 \
    --env KAFKA_ZOOKEEPER_CONNECT=192.168.146.128:2181 \
    --env KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://192.168.146.128:9092 \
    --env KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 \
    --env KAFKA_HEAP_OPTS="-Xmx256M -Xms256M" \
    --net=host wurstmeister/kafka:2.12-2.3.1
    • KAFKA_ADVERTISED_HOST_NAME:kafka运行的服务器地址
    • KAFKA_ZOOKEEPER_CONNECT:zookeeper连接的地址
    • KAFKA_ADVERTISED_LISTENERS=PLAINTEXT:kafka默认对外监听,9092为默认端口
    • --net=host: 直接使用容器宿主机的网络命名空间,即没有独立的网络环不境。使用宿主机的ip和端口

zookeeper

  • docker pull zookeeper:3.4.14
  • docker run -d --name zookeeper -p 2181:2181 zookeeper:3.4.14

ElasticSearch

  • 拉取镜像docker pull elasticsearch:7.4.0
  • 运行容器
代码语言:javascript
复制
docker run -id --name elasticsearch -d --restart=always -p 9200:9200 -p 9300:9300 -v /usr/share/elasticsearch/plugins:/usr/share/elasticsearch/plugins -e "discovery.type=single-node" elasticsearch:7.4.0
  • 配置分词器,es官方中文不是很友好,需要自己配置分词器,这里使用ik,将文件上传到上卖弄对应的plugins目录下解压 unzip 文件名

暂时无法在飞书文档外展示此内容

  • 解压后重启es,通过接口192.168.146.128:9200/_analyze,发送json文本进行测试
代码语言:javascript
复制
{
    "analyzer": "ik_max_word",
    "text": "你好,刘凯是帅比,你觉得呢"
}

MongoDB

  • 拉取镜像:docker pull mongo
  • 运行容器
代码语言:javascript
复制
docker run -di --name mongo-service --restart=always -p 27017:27017 -v ~/data/mongodata:/data mongo

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 认识docker
    • 容器
      • 进入容器
      • 运行容器
      • 查看
      • 删除容器
      • 停止与启动
    • 镜像
      • 查看镜像
      • 删除镜像
    • Docker
      • 仓库
      • 安装docker
      • Mysql
        • 安装
          • docker搭建MySQL集群
            • docker中的mysql导入sql文件
            • Redis
            • RabbitMQ
            • Nacos
            • MinIO
              • 环境搭建
              • kafka
              • zookeeper
              • ElasticSearch
              • MongoDB
              相关产品与服务
              容器服务
              腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档