当前位置: 首页 > 知识库问答 >
问题:

如何显示docker容器的run命令

公孙弘深
2023-03-14

我使用第三方GUI(Synology Docker软件包)来设置Docker容器。但是,它的局限性使我需要从命令行运行容器。(我想映射另一个主机ip以绑定端口)

现在,由于已经完成了很多设置,我想检索启动这个容器的原始run命令,然后我可以将端口映射端口更改为新的端口。例如“docker运行-p80:8080gitlab

我找不到这样做的方法,事件使用“docker inspect”,没有提供此类信息。

请提供一些建议来解决这个问题。

共有3个答案

颛孙建业
2023-03-14

我编写了一个简单的基于节点的CLI工具,用于从现有容器生成docker run命令。

https://www.npmjs.com/package/rekcod

下面是一个例子:

$ npm i -g rekcod
$ rekcod redis_container

docker run -d --name redis_container --restart always -h a44159e148e1 \
--expose 6379/tcp -e PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin \
-e REDIS_VERSION=3.0.7 -e REDIS_DOWNLOAD_URL=http://download.redis.io/releases/redis-3.0.7.tar.gz \
-e REDIS_DOWNLOAD_SHA1=e56b4b7e033ae8dbf311f9191cf6fdf3ae974d1c \
--entrypoint "/entrypoint.sh" redis "redis-server"

还处理链接、装入的卷和其他内容。

目前还不是超级健壮,但处理的东西比提到的其他一些东西要多,这更是我想要的。

编辑:在一个单一的命令,无需安装任何软件:

docker run --rm -v /var/run/docker.sock:/var/run/docker.sock nexdrew/rekcod redis_container
陶树
2023-03-14

使用docker inspect:

$ docker inspect foo/bar
[
    {
        # …
        "Config": {
            # …
            "Cmd": [
                "/usr/local/bin/script.sh"
            ],
            # …
        }
    }
]

你可以用jq编程解析这个:

$ docker inspect foo/bar | jq -r '.[0]["Config"]["Cmd"][0]'
/usr/local/bin/script.sh
范翰飞
2023-03-14

那么如何反向工程docker run命令呢?

有一个github存储库尝试反向工程docker run命令,但它目前并不完美,版本为0.1。2。您应该按照它进行更新。也许有一天你可以用它来获得正确的run命令。

$ sudo pip install runlike

# run the ubuntu image
$ docker run -ti ubuntu bash

$ docker ps -a  
# suppose you get the container ID 1dfff2ba0226

# Run runlike to get the docker run command. 
$ runlike 1dfff2ba0226
docker run --name=elated_cray -t ubuntu bash

Github仓库:runlike

无需安装即可运行(感谢@tilo)

docker run --rm -v /var/run/docker.sock:/var/run/docker.sock:ro \
    assaflavie/runlike YOUR-CONTAINER

或者设置化名放到你的Shell档案里

alias runlike="docker run --rm -v /var/run/docker.sock:/var/run/docker.sock:ro assaflavie/runlike"

docker ps

runlike YOUR-CONTAINER
 类似资料:
  • 问题内容: 我使用第三方GUI(Synology Docker软件包)来设置Docker容器。但是,它的局限性使我需要从命令行运行容器。(我想映射另一个主机IP绑定端口) 现在,由于已经完成了许多设置,因此我想检索启动该容器的原始运行命令,然后可以将端口映射端口更改为新端口。例如。“ ” 我找不到这样做的方法,事件使用“ docker inspect”,没有提供此类信息。 请提供一些建议以解决此问

  • 问题内容: 我有一个创建的容器,但我不记得我用来启动它的确切命令。有什么办法可以找回吗? 这与在Docker中查看运行/停止容器的完整命令不同, 我想知道的是生成容器的完整docker命令,而不是容器内的命令。 问题答案: 通过查看的输出,您可以推断出大部分信息。 例如,您可以通过查看键来发现在容器内部启动的命令。如果我运行: 我以后可以运行: 得到: 同样,的输出还将包含有关容器中使用的Dock

  • 我有一个我创建的容器,但我记不起我用来启动它的确切的docker run命令。有什么方法可以找回吗? 这与在Docker中查看运行/停止容器的完整命令不同,我想知道的是生成容器的完整Docker命令,而不是容器中的命令。

  • 有人能帮我理解docker run之间的区别吗? 当我做码头运行-帮助 在新容器中运行命令。 它们在内部运行容器的方式有什么不同吗?还是两者都做同样的工作? 根据https://forums.docker.com/t/docker-run-and-docker-container-run/30526.docker运行仍然是旧的,很快就会被弃用,但还没有确认。

  • 我试图设置一个docker容器,并使用< code>RUN ls来帮助调试。然而,当我运行< code>RUN ls时,docker打印出以下内容: 我希望它注销文件夹中的文件。有谁知道会发生什么? 这是我的完整Dockerfile: 提前感谢!

  • 问题内容: 我正在尝试设置一个docker容器,并正在用来帮助调试。但是,当我运行时,docker打印出以下内容: 我希望它注销该文件夹中的文件。有人知道会发生什么吗? 这是我完整的Dockerfile: 提前致谢! 问题答案: Docker缓存最近构建的层,以便后续构建可以重用它们。 打破此行为的最简单方法是在构建过程中使用该标志: 但是,这会使所有缓存的层失效。如果您仍然想在指令之前将缓存的层