1、登录服务器
ssh user@ip
2、安装podman
apt update
apt install -y podman
apt-get install -y vim // 安装vim
3、拉取镜像
podman pull 镜像名
podman pull debian:bullseye
podman pull node:14.17.0
4、创建并进入容器
podman run -it --name {容器名} -p {主机端口}:{容器端口} -v {主机路径:容器路径} {镜像} /bin/bash
podman run -it --name test -p 3344:22 -v /home/it/fe_ershouche_paimai:/workspaces debian:bullseye /bin/bash
// 创建完不会进入容器 容器直接是启动的状态
podman run -d --name test1 -p 3345:22 -v /home/it/fe_ershouche_paimai:/workspaces node:14.17.0 tail -f /dev/null
指令解析
-d -i -t
-d:让容器在 后台(Detached mode) 运行,不会锁定当前终端
-i:让容器保持 标准输入(stdin)打开,即使没有附加(attach)到终端
-t:让容器分配一个 伪终端(TTY),以便运行交互式程序,如 bashpodman run -dit // 推荐! 在后台运行,并保持 bash 交互功能
podman run -it -d // 等价于 -dit,只是写法不同
podman run -d // 可能导致 bash 退出,因为缺少 -it
tail -f /dev/null
1、行为
• tail -f /dev/null 会让容器保持运行,因为 tail -f /dev/null 是一个 一直运行的进程,它会不断监听 /dev/null,但不会输出任何内容。
• 这样,Podman 不会检测到进程退出,因此容器会 持续运行,直到手动停止。
2、适用场景
• 适用于 保持容器长时间运行,特别是当你只是想启动一个 Node.js 容器并进入它,而不希望它立即退出。
• 适用于作为后台服务运行的容器,但并不真正运行 Node.js,只是占着一个长时间运行的进程。/bin/bash
1、行为
• 这里的 CMD 是 /bin/bash,这意味着容器启动后会运行 bash 进程。
• 如果不附加 -it 选项,bash 会立即退出,因为默认情况下,bash 需要一个交互式终端来保持运行。
• 如果要保持 bash 运行,你需要加上 -it:
2、适用场景
• 如果你只是想进入容器调试,这个命令可以让你在 podman exec -it test bash 进入容器后使用 bash 命令。
• 但如果没有 -it,容器可能会 瞬间退出,因为 bash 在没有交互式终端的情况下会自动结束。- 进入容器
podman exec -it test bash
5、容器内开启ssh服务
apt-get update
apt-get install -y openssh-server
service ssh start
ps aux | grep ssh
6、配置sshd_config
如果容器内的 SSH 服务配置不正确,也可能导致容器退出。检查 /etc/ssh/sshd_config 文件,确保没有配置错误,您可以参考以下配置:
Port 22
ListenAddress 0.0.0.0
PermitRootLogin yes
PubkeyAuthentication yes
PasswordAuthentication yes
确保容器内的 SSH 服务配置正确,并且端口映射正确。
保存文件并重新启动 SSH 服务:service ssh restart
验证 SSH 服务状态:使用 ps aux | grep ssh
命令检查是否有 SSH 进程在运行
7、检查容器状态
podman ps -a
8、sshd 进程检查
确认 sshd 进程是否运行 ps aux | grep sshd
手动开启: service ssh start
9、确认 SSH 端口监听
ss -tlnp | grep 22
10、SSH 密钥免密登录(推荐)
在本地生成 SSH 密钥(如果没有的话) ssh-keygen -t rsa -b 4096
将公钥拷贝到远程 Podman 容器:
ssh-copy-id -p 3344 user@ip
如果 ssh-copy-id 不可用,也可以手动复制:
cat ~/.ssh/id_rsa.pub | ssh -p 3344 user@ip "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
11、vscode连接ssh
shift+command+P -> remote-ssh -> 配置SSH主机 -> Users/a58/.ssh/config 写入配置项
Host 自定义命名
HostName ip
User user
Port 3344
IdentityFile ~/.ssh/id_rsa
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END
暂无评论内容