在docker安装的centos容器内设置远程链接

写在前面

写在前面

运维这个行业,不需要按照顺序学习。

比如你学会了基础命令,直接学docker和k8s,和学会了基础命令开始学服务难度差不多。

再比如你学会了基础命令直接学shell脚本,也能学的会。

所以我一直主张,对于刚刚入门的小伙伴,学完基础命令之后,一定要开始尝试写脚本和在docker中继续学习其他内容。

把docker作为一个虚拟机反复去研究。

现在假设你已经会了linux中增删改查的常用命令,接下来就可以安装docker进行学习了。

为了学习,我们把docker安装好,作为虚拟机来折腾,当全部技能点学完,docker就已经算你最熟练的技能了。

接下来我们探讨使用docker安装centos7.9,并用xshell远程链接容器。

1 启动centos并设置端口映射,然后登录

 [root@laoxin21 ~]# docker pull centos:centos7.9.2009
centos7.9.2009: Pulling from library/centos
2d473b07cdd5: Pull complete 
Digest: sha256:9d4bcbbb213dfd745b58be38b13b996ebb5ac315fe75711bd618426a630e0987
Status: Downloaded newer image for centos:centos7.9.2009
docker.io/library/centos:centos7.9.2009


[root@laoxin21 ~]# docker run -itd --name=centos --privileged=true -p 5000:22 
centos:centos7.9.2009 /usr/sbin/init

注意: 这里的5000是容器端口
– privileged=true 表示使用特权模式,使用这个参数的时候,容器内的root有用真正的root权限

执行后,会有重新登录的过程

 [root@laoxin1 ~]# docker ps
CONTAINER ID   IMAGE                   COMMAND            CREATED         
STATUS         PORTS                                   NAMES
8d423971d0d3   centos:centos7.9.2009   "/usr/sbin/init"   2 minutes ago 
  Up 2 minutes   0.0.0.0:5000->22/tcp, :::5000->22/tcp   centos
[root@laoxin21 ~]# docker exec -ti centos /bin/bash
[root@8d423971d0d3 /]# 
oot@c56102d9bb8c /]# ls
anaconda-post.log  bin  dev  etc  home  lib  lib64  media  mnt  opt  proc  root 
 run  sbin  srv  sys  tmp  usr  var
[root@c56102d9bb8c /]# 

2.安装常用工具及ssh服务

[root@c56102d9bb8c /]# yum install -y openssh-server vim lrzsz wget gcc-c++ pcre pcre-devel zlib zlib-devel ruby openssl openssl-devel patch bash-completion zlib.i686 libstdc++.i686 lsof unzip zip
[root@5225250654ba ~]# rpm -qa |grep -E "openssh"  ## 查看是否安装openssh
[root@5225250654ba ~]# yum install openssh*

3. 安装ifconfig命令

[root@5225250654ba ~]# yum install net-tools

4. 安装sevice命令

oot@5225250654ba ~]# yum install initscripts   ## 若能用systemctl启动,则可以不安装

也可以直接用systemctl 启动:
[root@8d423971d0d3 /]# systemctl start sshd
[root@8d423971d0d3 /]# netstat -antup | grep sshd
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      302/sshd            
tcp6       0      0 :::22                   :::*                    LISTEN      302/sshd            
[root@8d423971d0d3 /]# 

5. 重启sshd服务

[root@5225250654ba ~]# service sshd restart   
Stopping sshd: Stopping sshd:                              [  OK  ]
Generating SSH2 RSA host key:                              [  OK  ]
Generating SSH2 ECDSA host key:                            [  OK  ]
Generating SSH2 ED25519 host key:                          [  OK  ]
Starting sshd:                                             [  OK  ]
[root@5225250654ba ~]# 

6. 设置sshd 远程连接

此步骤可跳过,再无法使用xshell连接时候,可以尝试操作此步骤。
Vi /etc/ssh/sshd_config
/
[图片]

7. 设置账号和密码

[root@5225250654ba ~]# whoami
root
[root@5225250654ba ~]# echo 12345678|passwd --stdin root
Changing password for user root.
passwd: all authentication tokens updated successfully.
[root@5225250654ba ~]# 

8. 使用xshell连接

[图片]

此处的密码为:docker的密码
[图片]

连接成功:
[图片]

至此连接成功。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 要让CentOS 7上的Docker安装的MySQL可以远程连接,需要进行以下步骤: 1. 首先,确保CentOS 7上已经安装DockerDocker Compose。可以通过运行以下命令来检查它们的版本: ``` docker version docker-compose version ``` 2. 下载MySQL的Docker镜像并生成一个新的容器。可以运行以下命令来完成此步骤: ``` docker run -d --name mysql -e MYSQL_ROOT_PASSWORD=your_password -p 3306:3306 mysql:latest ``` 3. 在此步骤中,注意将`your_password`替换为您自己设置的密码。此命令会创建一个名为`mysql`的容器,并将MySQL的默认端口3306映射到主机的3306端口。 4. 检查Docker容器是否正在运行,并且3306端口是否已被监听。可以使用以下命令来检查它们: ``` docker ps netstat -tuln | grep 3306 ``` 5. 确保CentOS 7防火墙已正确配置以允许从远程访问MySQL的3306端口。可以使用以下命令来打开3306端口: ``` firewall-cmd --zone=public --add-port=3306/tcp --permanent firewall-cmd --reload ``` 6. 现在,可以从远程机器使用MySQL客户端连接到CentOS 7上的Docker运行的MySQL实例。使用以下命令连接到MySQL服务器: ``` mysql -u root -p -h your_server_ip ``` 请注意将`your_server_ip`替换为CentOS 7主机的IP地址,将提示输入密码即可。 通过执行以上步骤,您应该能够远程连接到CentOS 7上运行Docker MySQL实例。 ### 回答2: 当在CentOS 7上使用Docker安装MySQL时,可能会遇到无法远程连接的问题。以下是一些可能的解决方法: 1. 检查Docker容器网络设置:确认Docker容器是否使用正确的网络模式。可以使用`docker ps`命令查看容器的详细信息,确认容器是否使用了`--network`参数或正确的`network_mode`设置。 2. 检查MySQL配置文件:在Docker容器内部,打开MySQL配置文件`/etc/mysql/my.cnf`,确保`bind-address`设置为`0.0.0.0`,允许所有IP访问数据库。 3. 检查容器端口映射:通过`docker ps`命令查看MySQL容器的端口映射情况,确保将MySQL容器的端口映射到正确的主机端口上。例如,如果容器内部的MySQL端口是3306,则可以通过`docker run`命令的`-p`参数将其映射到主机上的端口。 4. 防火墙配置:如果在主机上启用了防火墙,可能需要打开MySQL所用的端口。可以使用以下命令将3306端口添加到防火墙规则中: ``` sudo firewall-cmd --zone=public --add-port=3306/tcp --permanent sudo firewall-cmd --reload ``` 5. 检查MySQL用户权限:确保在MySQL容器中,用户拥有远程连接MySQL的权限。可以通过以下命令登录MySQL容器: ``` docker exec -it <mysql_container_id> bash mysql -u root -p ``` 然后在MySQL命令行中,执行以下命令检查用户权限: ``` SHOW GRANTS FOR '<username>'@'%' ; ``` 如果没有远程连接权限,可以通过以下命令为该用户添加权限: ``` GRANT ALL PRIVILEGES ON *.* TO '<username>'@'%' IDENTIFIED BY '<password>' WITH GRANT OPTION; FLUSH PRIVILEGES; ``` 6. 检查主机网络连接:确保从远程主机可以ping通CentOS 7主机的IP地址。如果ping不通,可能是网络配置的问题,需要检查网络设置和路由。 希望以上解决方法能够帮助你解决无法远程连接的问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

互联网老辛

你的鼓励是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值