Docker复现RUN命令

如果有这样以一个场景。我使用docker run启动了了一个redis容器,而docker run的参数有很多,由于时间太久,我已经忘记了当初的启动参数,也并没有使用docker-compose这样的编排工具。现在我如何找回此前的启动命令?

我可以使用inspect命令查看容器的元数据,根据元数据反推出运行的参数。

docker inspect 1cc825a43022

[
    {
        "Id": "1cc825a430226187c957b18c3006b4e3346cf143f43513ee71647011bbd98cfe",
        "Created": "2019-10-12T05:54:40.635365198Z",
        "Path": "docker-entrypoint.sh",
        "Args": [
            "redis-server",
            "--appendonly",
            "yes"
        ],
        "State": {
            "Status": "running",
            "Running": true,
            "Paused": false,
            "Restarting": false,
            "OOMKilled": false,
            ...

但实际使用不是很方便,因为inspect返回的数据实在太多,找到数据后还要手工的反推出启动时的命令,费时又容易出错。这个时候我们可以借助runlike这个小工具。

runlike使用python开发,我们直接使用pip安装

pip install runlike

# 安装成功后直接运行,使用`-p`参数可将返回值美观一点
runlike -p 1cc825a43022

docker run \
        --name=jolly_mirzakhani \
        --hostname=1cc825a43022 \
        --env=PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin \
        --env=GOSU_VERSION=1.11 \
        --env=REDIS_VERSION=4.0.14 \
        --env=REDIS_DOWNLOAD_URL=http://download.redis.io/releases/redis-4.0.14.tar.gz \
        --env=REDIS_DOWNLOAD_SHA=1e1e18420a86cfb285933123b04a82e1ebda20bfb0a289472745a087587e93a7 \
        --volume=/usr/local/docker/data:/data \
        --volume=/data \
        -p 6379:6379 \
        --restart=always \
        --detach=true \
        redis:4 \
        redis-server --appendonly yes

Docker复现RUN命令
https://blog.yjll.blog/post/89a34fac.html
作者
简斋
发布于
2020年6月13日
许可协议