docker非基本但常用的指令
那些本身就自带的命令就不记了,只记一些没有内置指令的但常用的功能。
通过代理运行container内程序
在host上用代理运行一个程序,可以简单地在命令前面加上代理变量:
http_proxy=xxx curl google.com
但是用如下指令运行容器
http_proxy=xxx docker run tutum/curl curl google.com
容器内的程序并不会受代理影响(因为容器本身是一独立的os)
要想让容器内程序走代理,需用:
docker container run
-e HTTP_PROXY=http://username:password@proxy2.domain.com
-e HTTPS_PROXY=http://username:password@proxy2.domain.com
myimage
也可以定义docker client的配置文件~/.docker/config.json
中,使之成为默认配置,不用每次运行时指定了:
1 | { |
参考:
https://stackoverflow.com/questions/47827496/how-to-configure-docker-container-proxy
https://docs.docker.com/network/proxy/#configure-the-docker-client
查看远端image的所有tag
查看某容器的定义文件
简单的看:
docker history <IMAGE_ID>
仔细的看:
docker run --rm -v ‘/var/run/docker.sock:/var/run/docker.sock’ lukapeschke/dfa <IMAGE_ID>
ctrl-c不能退出正在运行的容器?怎么停止所有正在运行的容器?
如果一个命令卡住了,容器不退出,这时按ctrl-c也没用,因为没有为它分配终端
,而响应ctrl-c退出其实是终端程序的功能
所以,启动时加上-t参数即可
docker run -t tutum/curl curl google.com
但是,带上-t后即使可以ctrl-c返回host终端了,容器本身还不会停止,必须用stop指令显式停止。
如果有多个容器卡住了,那怎么快速把它们都停止呢?docker并没有一个stopall指令或类似参数。
这时可以自己把正在运行中的容器查询出来,将其id发送给stop即可:
docker stop $(docker ps -q)
参考:https://github.com/moby/moby/issues/2838#issuecomment-330364056