使用centos 7 创建Docker 容器时遇到的一些问题

当拉mysql得时候 无法获取 ,应该重新配置镜像

cd /etc/docker/ [root@localhost docker]# ls certs.d daemon.json key.json seccomp.json [root@localhost docker]# vi daemon.json

{ "registry-mirrors": [ "https://docker.registry.cyou", "https://docker-cf.registry.cyou", "GitHub - DaoCloud/public-image-mirror: 很多镜像都在国外。比如 gcr 。国内下载很慢,需要加速。致力于提供连接全世界的稳定可靠安全的容器镜像服务。", "欢迎访问 ISCAS 开源镜像站", "https://docker.rainbond.cc" ] }

 "https://ox288s4f.mirror.aliyuncs.com",
 "https://registry.docker-cn.com",
 "http://hub-mirror.c.163.com",
 "https://mirror.ccs.tencentyun.com"

修改配置后要

重启docker          sudo systemctl restart docker 
查看docker状态的命令  sudo systemctl status docker 
启动docker的命令     sudo service docker start
重新加载配置         sudo systemctl daemon-reload

如果一直拉取不来,试试指令测试下网络

ping www.baidu.com

docker中指令下载MySQL

停止运行MySQL: docker stop mysql
​
移除docker中的MySQL: docker rm mysql  
检查日志 : docker logs mysql2
docker logs mysql
​
dockermysql
[root@localhost docker]# docker run -d --name mysqldocker -p 3399:3306 -e MYSQL_ROOT_PASSWORD=123456 -e TZ=Asia/Shanghai -u mysql mysql:8.0.33
​
运行时候将配置文件挂载  -v /path/to/my_custom.cnf:/etc/mysql/my.cnf
如果没有配置文件就创造编辑一个 
[root@localhost etc]# mkdir mysql
[root@localhost etc]# cd mysql
[root@localhost mysql]# touch my_custom.cnf
[root@localhost mysql]# vim my_custom.cnf 
里面放这个内容 :
[mysqld]
bind-address = 0.0.0.0
​
mysqldocker2
docker run -d --name mysqldocker2 -p 3400:3306 -e MYSQL_ROOT_PASSWORD=123456 -e TZ=Asia/Shanghai -u mysql mysql:8.0.33
​

成功启动的MySQL 其中权限问题,得加上 -u

进入容器内部:使用 docker exec 命令进入容器内部,然后尝试连接到 MySQL 服务。

shell

docker exec -it mysql2 bash
docker exec -it mysql bash

查看所有运行中的 MySQL 容器

使用以下命令查看所有运行中的 MySQL 容器:

shell

docker ps -a
  1. 停止防火墙服务

    shell

    sudo systemctl stop firewalld

    这个命令会立即停止防火墙服务。

  2. 禁用防火墙服务

    shell

    sudo systemctl disable firewalld

    这个命令会禁用防火墙服务,防止它在系统启动时自动启动。

  3. 检查防火墙状态

    shell

    sudo systemctl status firewalld

    这个命令可以让您查看防火墙服务的当前状态,确认它是否已经停止。

MySQL navicat 连接 docker的MySQL 连接报错出现 :access denied for user mysqldocker xxx.xxx.xxx.xxx(using password:yes)
!!!!!!尝试使用root为用户名 最后成功登录!
方案1:关闭系统的防火墙

然后重启 MySQL服务

  1. 重新启动容器:在更改配置或权限后,您可能需要重新启动 MySQL 容器以使更改生效:

    shell

    docker restart mysqldocker2
  2. 检查 Docker 容器日志:查看容器的日志可能会提供一些关于为什么连接被拒绝的线索:

    shell

    docker logs mysqldocker2
    ​
    ​
sudo systemctl restart docker 

重启docker

docker exec -it mysql /bin/bash 进入mysql 

紧接着用这个命令

mysql -u root -p 

登录到你选择的这个mysql容器

docker start mysql 启动docker的MySQL 
我如果想要连接docker中的具体的一个mysql容器 那么我的主机名应该怎么设置 (端口映射就行了)

当你想要从外部(比如你的开发机器或者任何其他计算机)连接到 Docker 容器中运行的 MySQL 实例时,你需要确保几个关键点:

  1. 容器网络设置:确保你的 MySQL 容器可以被外部访问。通常,Docker 容器运行在隔离的网络环境中,但是通过端口映射,你可以让容器内的服务对外部可见。

  2. 端口映射:在运行 MySQL 容器时,你需要将容器的 MySQL 端口(默认是 3306)映射到宿主机的端口上。例如:

    bash

    docker run -d --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=my-secret-pw mysql:8.0.33

    这个命令将容器的 3306 端口映射到宿主机的 3306 端口。

  3. MySQL 用户权限:你需要确保 MySQL 用户有权限从外部主机连接。这通常意味着你需要给用户授予从 %(代表任何主机)的连接权限。

    登录到 MySQL 容器:

    bash

    docker exec -it mysql mysql -u root -p

    然后,运行以下 SQL 命令来授予权限:

    sql

    GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'my-secret-pw' WITH GRANT OPTION;
    FLUSH PRIVILEGES;

    这将允许任何主机上的用户 root 使用密码 my-secret-pw 连接到 MySQL。

  4. 主机名设置:当你从外部计算机连接到 Docker 容器中的 MySQL 时,你需要使用宿主机的 IP 地址作为主机名。如果你的宿主机是本地计算机,并且你使用的是 Docker Desktop,那么通常可以使用 localhost127.0.0.1。如果是远程服务器,你需要使用该服务器的 IP 地址。

    例如,如果你在本地计算机上运行 Docker Desktop,并且想要使用 MySQL 客户端连接到 MySQL 容器,你可以在 MySQL 客户端中设置如下:

    • 主机名:localhost

    • 端口:3306

    • 用户名:root

    • 密码:你设置的 MySQL root 密码

    如果你的宿主机是远程服务器,你需要替换 localhost 为服务器的 IP 地址。

请记住,允许从任何主机连接到 MySQL 容器可能会带来安全风险,因此请确保使用强密码,并考虑使用 VPN 或其他安全措施来保护你的数据库连接。

查看MySQL的信息 --> docker inspect mysq

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值