输出Docker容器的启动命令行脚本

当Docker容器启动后,如果忘记启动参数,比如目录挂载、端口映射等,可以通过Portainer等容器管理工具查看。但是,有时希望能获取容器启动的命令行,因为需要再启动一个类似容器,怎么办呢?
有一款工具叫runlike,可以输出容器运行的命令行。

安装与使用

pip install runlike 

在这里插入图片描述
使用也极其简单

runlike [container-id]

示例

例,输出Jellyfin容器的启动命令行脚本

root@xxx:~# runlike 12f212af60e2 -p
docker run --name=jellyfin2 \
        --hostname=c3714a0e01fb \
        --mac-address=02:42:ac:11:00:06 \
        --volume=/mnt/hdd_hikvision/movies:/media \
        --volume=0c95706939e32e2bfd08455b08b8f92f5c5da5a9f2911e466eabf39ab78ef535:/cache \
        --volume=/home/containers/jellyfin2:/config \
        --cap-add=AUDIT_WRITE \
        --cap-add=CHOWN \
        --cap-add=DAC_OVERRIDE \
        --cap-add=FOWNER \
        --cap-add=FSETID \
        --cap-add=KILL \
        --cap-add=MKNOD \
        --cap-add=NET_BIND_SERVICE \
        --cap-add=NET_RAW \
        --cap-add=SETFCAP \
        --cap-add=SETGID \
        --cap-add=SETPCAP \
        --cap-add=SETUID \
        --cap-add=SYS_CHROOT \
        --cap-drop=AUDIT_CONTROL \
        --cap-drop=BLOCK_SUSPEND \
        --cap-drop=DAC_READ_SEARCH \
        --cap-drop=IPC_LOCK \
        --cap-drop=IPC_OWNER \
        --cap-drop=LEASE \
        --cap-drop=LINUX_IMMUTABLE \
        --cap-drop=MAC_ADMIN \
        --cap-drop=MAC_OVERRIDE \
        --cap-drop=NET_ADMIN \
        --cap-drop=NET_BROADCAST \
        --cap-drop=SYSLOG \
        --cap-drop=SYS_ADMIN \
        --cap-drop=SYS_BOOT \
        --cap-drop=SYS_MODULE \
        --cap-drop=SYS_NICE \
        --cap-drop=SYS_PACCT \
        --cap-drop=SYS_PTRACE \
        --cap-drop=SYS_RAWIO \
        --cap-drop=SYS_RESOURCE \
        --cap-drop=SYS_TIME \
        --cap-drop=SYS_TTY_CONFIG \
        --cap-drop=WAKE_ALARM \
        --network=bridge \
        -p 32778:8096 \
        -p 32770:8920 \
        --restart=no \
        --device /dev/dri/card0:/dev/dri/card0 \
        --device /dev/dri/renderD128:/dev/dri/renderD128 \
        --add-host api.themoviedb.org:52.84.18.87 \
        --add-host api.themoviedb.org:54.192.18.90 \
        --runtime=runc \
        --detach=true \
        nyanmisaka/jellyfin:230901-amd64

输出的内容比较详细,有些不需要的参数可以直接删除

当尝试通过Docker启动一个容器并让它同时运行内部的脚本时,如果遇到启动失败的情况,可能是由以下几个原因引起的: 1. **脚本依赖问题**:容器内的脚本可能依赖于某些环境变量、库文件或服务,如果没有配置正确,容器启动时找不到所需的资源。 2. **权限问题**:如果脚本需要特定的权限才能执行,而Docker的默认设置不足以满足,可能会导致脚本无法启动。 3. **启动命令错误**:检查docker-compose.yml 或 Dockerfile 中的启动命令是否语法正确,路径是否正确,或者是否有预期的参数传递给脚本。 4. **资源限制**:容器可能因为内存、CPU、磁盘空间不足或网络配置不当而无法运行脚本。 5. **镜像问题**:使用的Docker镜像可能存在缺陷,例如脚本未在构建过程中复制到正确的路径,或者镜像本身有问题。 6. **日志和错误排查**:查看Docker的日志输出,通常可以在`docker logs 容器ID`或`docker-compose logs -f`中找到详细信息,有助于定位问题。 要解决这个问题,你可以按照以下步骤操作: 1. **检查日志**:确认启动失败的具体错误消息。 2. **修改Dockerfile或yaml**:根据错误调整命令或资源分配。 3. **添加环境变量**:如果脚本需要外部环境变量,确保在运行时设置了它们。 4. **更新镜像**:确保使用的镜像是最新的,并且包含了所有必要的文件和依赖。 5. **重启容器**:有时候简单地重启容器就能解决问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值