远程使用Podman-指令

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),以便运行交互式程序,如 bash

    podman 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
喜欢就支持一下吧
点赞15 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容