我们可以通过ssh登录到服务器、虚拟机上完成操作。而容器是运行在服务器上的,我们通过22端口(ssh默认服务端口)登进去的是服务器界面.
一般情况下,要对容器执行一些操作,则为:
ssh root@<host-ip>
docker exec -it <container-id> bash
此时可以在容器内执行一些ssh命令。
那么能不能直接登录到容器内执行命令呢,而不是通过docker exec来执行命令呢?
举个栗子,容器镜像以centos为例,直接ssh到容器内。
- 起docker容器时,通过暴露容器服务端口,把host上50001(空闲端口)映射到容器内22端口,
docker run -itd -p 50001:22 --name ssh systemd /bin/bash
2. 在容器里安装ssh服务
yum install -y openssh-server openssh-client
2、 配置sshd_config
3、设置密码
#修改root密码
passwd root
#若无passwd命令,安装passwd
yum install -y passwd
passwd root
4、启动ssh服务
5、 远程登录
ssh root@<host_ip> -p 50001
若通过k8s yaml部署时,其对应yaml为:
apiVersion: v1
kind: Service
metadata:
name: ssh-my-centos
labels:
app: my-centos
spec:
type: NodePort
ports:
- port: 50001
targetPort: 22
nodePort: 30002
protocol: TCP
selector:
app: my-centos