配置ssh连接docker
本机信息 Apple M2/ macOS Ventura 13.1
完整实现如下:
使用docker下载centos镜像
docker pull centos:centos7
# centos7 指定安装版本
查看本地镜像
# 使用以下命令查看是否已安装了centos7
➜ ~ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos centos7 c9a1fdca3387 11 months ago 301MB
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
进入容器,修改root密码
(如果此步骤不执行,直接使用普通用户来ssh,我尝试了行不通)
# 1. 查看正在运行的容器
docker ps
# 2. 进入容器中(centos_server为容器名字)
docker exec -it centos_server /bin/bash
# 以下命令均在容器中执行
# 3. 清除root账号的密码
passwd -d root
# 4. 修改root密码
passwd root
以下均为在容器中的操作
修改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
开启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
退出容器
exit
提交这个容器为一个新的image
docker commit 容器id 镜像名称
使用新的镜像启动一个制定了ip映射的新容器
# 把容器的22端口映射到50001
docker run --name 容器名称 -it -p 15001:22 镜像id /usr/sbin/sshd -D
在本地主机ssh登录docker
ssh root@localhost -p 50001
# 这里注意:只能root用户ssh,连上之后可以切换其他普通用户
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新系统软件安装
默认只有root用户,添加普通用户
adduser aa
passwd xxx
root下安装sudo
[root@e9267ae0ad14 /]# yum install sudo
[root@e9267ae0ad14 /]# visudo
root ALL=(ALL) ALL
aa ALL=(ALL) ALL #将新创建的用户加入进来,aa可以使用sudo
此后切换到新建的用户进行使用
su 用户名 # 从root用户切换到普通用户
ctrl + D # 从普通用户切换到root用户
安装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步)