要在 CentOS 系统上从零开始部署 Docker 和 Docker Compose,您可以按照以下步骤进行操作:
步骤 1:安装 Docker
1.更新系统软件包:
sudo yum update
2.安装所需的依赖包:
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
3.添加 Docker 的官方存储库:
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
4.安装 Docker 引擎:
sudo yum install docker-ce docker-ce-cli containerd.io
5.启动 Docker 服务并设置开机自启:
sudo systemctl start docker
sudo systemctl enable docker
6.验证 Docker 安装是否成功:
sudo docker run hello-world
步骤 2:安装 Docker Compose
1.下载 Docker Compose 的二进制文件:
sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
2.添加执行权限:
sudo chmod +x /usr/local/bin/docker-compose
3.创建符号链接:
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
4.验证 Docker Compose 安装是否成功:
docker-compose --version
现在,您已经成功在 CentOS 系统上部署了 Docker 和 Docker Compose。您可以使用 Docker 和 Docker Compose 运行和管理容器化应用程序。
步骤三:一键用docker部署多个应用
在/usr/local/bin/docker-compose里找到docker-compose.yaml
文件
Docker Compose 是一个用于定义和运行多容器 Docker 应用程序的工具。它使用一个 YAML 文件来配置您的应用程序的服务、网络和卷等。
以下是一个示例的 Docker Compose 文件,包含您提到的所有服务:
version: '3'
services:
mysql:
image: mysql:5.7
restart: always
command: --bind-address=0.0.0.0
environment:
- MYSQL_ROOT_PASSWORD=root
volumes:
- /mydata/mysql/log:/var/log/mysql
- /mydata/mysql/data:/var/lib/mysql
- /mydata/mysql/conf:/etc/mysql
ports:
- 3306:3306
redis:
image: redis
restart: always
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:7.6.2
restart: always
environment:
- discovery.type=single-node
kibana:
image: docker.elastic.co/kibana/kibana:7.6.2
restart: always
rabbitmq:
image: rabbitmq:3.8.5-management
restart: always
ports:
- "5672:5672"
- "15672:15672"
nginx:
image: nginx
restart: always
ports:
- "80:80"
将上述内容保存为 docker-compose.yaml
文件。然后,在保存文件的目录中,打开终端,并运行以下命令来启动这些服务:
docker-compose up -d
Docker Compose 将自动下载所需的镜像并启动每个服务。加上 -d
参数会使服务在后台运行。
4.部署成功后
1.镜像相关命令:
docker images
:列出本地主机上的所有镜像。docker pull image_name:tag
:从 Docker 镜像仓库中下载指定的镜像。docker build -t image_name:tag .
:根据 Dockerfile 构建一个新的镜像。docker push image_name:tag
:将镜像推送到 Docker 镜像仓库。
2.容器相关命令:
docker run image_name:tag
:根据指定的镜像创建并启动一个容器。docker ps
:列出正在运行的容器。docker start container_id
:启动一个已停止的容器。docker stop container_id
:停止一个运行中的容器。docker restart container_id
:重启一个容器。docker rm container_id
:删除一个已停止的容器。docker exec -it container_id command
:在运行的容器中执行命令。
3.日志和监控命令:
docker logs container_id
:查看容器的日志输出。docker stats
:实时监控正在运行的容器的资源使用情况。docker top container_id
:查看容器中正在运行的进程。
4.网络和卷命令:
docker network ls
:列出 Docker 网络。docker network create network_name
:创建一个自定义网络。docker volume ls
:列出 Docker 卷。docker volume create volume_name
:创建一个 Docker 卷。
navicat无法连接 docker mysql
需要关闭Linxu防火墙
如果你使用的是 firewalld,以下是一些常见的 firewalld 命令:
启动 firewalld 服务:
sudo systemctl start firewalld
停止 firewalld 服务:
sudo systemctl stop firewalld
重启 firewalld 服务:
sudo systemctl restart firewalld
查看 firewalld 服务状态:
sudo systemctl status firewalld
在系统启动时启用 firewalld 服务:
sudo systemctl enable firewalld
在系统启动时禁用 firewalld 服务:
sudo systemctl disable firewalld
开放端口(例如,允许 TCP 端口 80):
sudo firewall-cmd --zone=public --add-port=80/tcp --permanent
sudo firewall-cmd --reload
关闭端口(例如,关闭 TCP 端口 80):
sudo firewall-cmd --zone=public --remove-port=80/tcp --permanent
sudo firewall-cmd --reload
查看所有打开的端口:
sudo firewall-cmd --zone=public --list-ports
打开权限
mysql已启动,端口也没有被占用
1、已经在容器里面测试了,mysql可以正常连接;在试试将root用户开放可以任何主机访问
1.1、进入容器,并连接mysql
docker exec -it 容器名/id bash
mysql -uroot -proot
2.2、将root用户开放所有主机可以访问
#授权
grant all privileges on test.* to 'root'@'%';
#刷新权限表
flush privileges;