mac下ssh连接docker使用centos

配置ssh连接docker

本机信息 Apple M2/ macOS Ventura 13.1

完整实现如下

  1. 使用docker下载centos镜像

docker pull centos:centos7  
# centos7 指定安装版本
  1. 查看本地镜像

# 使用以下命令查看是否已安装了centos7

➜  ~ docker images
REPOSITORY   TAG       IMAGE ID       CREATED         SIZE
centos       centos7   c9a1fdca3387   11 months ago   301MB
  1. docker 启动centos镜像

docker run --privileged -d  --name=centos_server c9a1fdca3387 /usr/sbin/init

# --name=容器名字(自己随便起一个即可,别名)
# c9a1fdca3387 为 image id,通过docker images来查看 
# –privileged 和 /usr/sbin/init 很重要,必须要带上,否则后面启动ssh服务时会报错
# Failed to get D-Bus connection: Operation not permitted
  1. 进入容器,修改root密码

(如果此步骤不执行,直接使用普通用户来ssh,我尝试了行不通)

# 1. 查看正在运行的容器
docker ps  

# 2. 进入容器中(centos_server为容器名字)
docker exec -it centos_server /bin/bash

# 以下命令均在容器中执行
# 3. 清除root账号的密码
passwd -d root

# 4. 修改root密码
passwd root 

以下均为在容器中的操作

  1. 修改ssh配置,允许root登录

  • 查看是否安装了ssh-server服务

yum list installed | grep openssh-server
  • 安装ssh-server

yum install openssh-server

# 安装ssh-client(按自己需要、可以不安装)
yum install openssh-clients
  • 修改配置

vim /etc/ssh/sshd_config
# 如下图所示 修改三处

# 如果没有安装vim,执行
yum install vim
  1. 开启ssh服务

# 1. 检查ssh服务是否已开启
ps -e | grep sshd  
# 或者检查22端口是否开启  
netstat -an | grep 22

# 2. 如果没安装service,先安装
yum install initscripts -y

# 3. 运行ssh 
service sshd start 
# 或 systemctl start sshd.service

# 4. 查看是否开启了ssh服务
ps -e | grep sshd
  1. 退出容器

exit
  1. 提交这个容器为一个新的image

docker commit 容器id 镜像名称
  1. 使用新的镜像启动一个制定了ip映射的新容器

# 把容器的22端口映射到50001
docker run --name 容器名称 -it -p 50001:22 镜像id /usr/sbin/sshd -D
  1. 在本地主机ssh登录docker

ssh root@localhost -p 50001

# 这里注意:只能root用户ssh,连上之后可以切换其他普通用户
  1. vscode ssh 登录docker

vscode安装docker插件方便使用,可以直接运行/退出/删除...容器

同连接远程服务器一样,只不过用root用户连接之后再切换成普通用户使用(保证安全,不使用root用户)

遇到的问题

  • 使用yum安装软件,出现Loaded plugins:fastestmirror,ovl

目前感觉是不用去解决这个问题,搜一下看自己要安装的软件,多半是因为安装包名字不对

安装ifconfig命令的语句是:yum install net-tools

可参考:https://blog.csdn.net/hechenhongbo/article/details/85289648

  • 如果启动ssh服务的时候报错

Failed to get D-Bus connection: No such file or directory

cat ~/Library/Group\ Containers/group.com.docker/settings.json|grep deprecatedCgroupv1
  "deprecatedCgroupv1": false,

# 将deprecatedCgroupv1由false --> true
vi ~/Library/Group\ Containers/group.com.docker/settings.json
cat ~/Library/Group\ Containers/group.com.docker/settings.json|grep deprecatedCgroupv1
  "deprecatedCgroupv1": true,

重启docker,再执行上面ssh配置步骤重新设置privileged

docker简单用法

  • 查看可用的centos版本

访问 CentOS 镜像库地址:https://hub.docker.com/_/centos?tab=tags&page=1

  • 以上步骤中1~4为docker安装centos

  • 运行一个容器

(可以简单理解为创建一个虚拟机,创建好之后可以一直用;centos7是镜像,如果把系统搞坏了可以删除容器重新建;每个容器维护自己的centos配置)

docker run -itd --name centos-test centos:centos7
  • 进入容器

docker exec -it centos-test /bin/bash

# 进入之后,就可以开始使用centos系统了 
  • 查看容器运行信息

docker ps

centos新系统软件安装

  1. 默认只有root用户,添加普通用户

adduser aa
passwd xxx
  1. root下安装sudo

[root@e9267ae0ad14 /]# yum install sudo

[root@e9267ae0ad14 /]# visudo
root ALL=(ALL) ALL 
aa   ALL=(ALL) ALL   #将新创建的用户加入进来,aa可以使用sudo
  1. 此后切换到新建的用户进行使用

su 用户名   # 从root用户切换到普通用户
ctrl + D   # 从普通用户切换到root用户
  1. 安装ifconfig

[aa@48c8778377f8 /]$ yum install net-tools

查看该容器对应的ip

[aa@48c8778377f8 /]$ ifconfig

参考:

https://blog.csdn.net/cai454692590/article/details/85911333 (1~5步)

中间修改docker的配置并重启(我自己电脑)

https://juejin.cn/post/6881881918087331853 (5~8步)

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值