我想让docker CLI连接到远程守护程序,但我需要在本地机器上安装包括守护程序在内的整个引擎吗?
首先,下载并解压/卸载您系统的版本。以下是适用于mac、linux和windows的x86_64二进制文件。
展开归档后,您可以在./docker/docker
中找到docker CLI可执行文件—将该文件移动到您的路径中,就完成了。
如果您特别希望将docker CLI安装到docker映像中,下面是我的Dockerfile命令:
ENV DOCKERVERSION=18.03.1-ce
RUN curl -fsSLO https://download.docker.com/linux/static/stable/x86_64/docker-${DOCKERVERSION}.tgz
&& tar xzvf docker-${DOCKERVERSION}.tgz --strip 1
-C /usr/local/bin docker/docker
&& rm docker-${DOCKERVERSION}.tgz
h/t到此注释
添加到Aaron的方法中,如果您正在构建自己的映像,您现在可以使用多阶段构建来从现有的外部映像复制docker
二进制文件,例如:
COPY --from=docker:dind /usr/local/bin/docker /usr/local/bin/
这将从公共中提取docker
二进制文件Dockerhub上的docker:dind
图像。
请参阅:https://docs.docker.com/develop/develop-images/multistage-build/.
如果您想在Linux中安装Docker,那么在最新的1.12.0版本中,Docker守护进程和Docker客户端位于单独的二进制文件中。
这已经在发布日志中提到:
将二进制文件一分为二:docker(客户端)和dockerd(守护进程)#20639
如果您在Mac中安装Docker,则Mac OS二进制文件仅限客户端:resource
您可以(就像其他答案建议的那样)直接从Docker:下载
docker_url=https://download.docker.com/linux/static/stable/x86_64
docker_version=18.03.1-ce
curl -fsSL $docker_url/docker-$docker_version.tgz |
tar zxvf - --strip 1 -C /usr/bin docker/docker
与其他答案的区别在于,没有中间的tar文件。我在Dockerfile RUN层中使用了这个。
在Windows上,您可以使用chocolatey软件包管理器自行安装CLI。
一旦你加载了巧克力,你可以从管理员命令提示符运行:
choco install /y docker-cli
出于某种原因,这似乎比Aaron提供的Windows链接更新得多。(v19而不是v17,截至2020年1月)
如果按照这些说明中的说明从官方软件包存储库安装docker,则可以简单地安装docker-ce-cli
软件包,并省略docker-ce
和containerd.io
的安装。
完整安装顺序(适用于Ubuntu):
sudo apt-get update
sudo apt-get install
apt-transport-https
ca-certificates
curl
gnupg
lsb-release
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo
"deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
# Here is the part that is different
sudo apt-get install docker-ce-cli
如果您在Windows上,您可以从这里下载Docker CLI的最新版本:
StefanScherer/docker cli builder
并通过设置DOCKER_HOST
环境变量指向远程Docker守护程序:
$env:DOCKER_HOST = 'tcp://X.X.X.X:2375'
请注意,为了使其工作,必须将Docker Daemon配置为通过TCP公开其API。这可以在daemon.json
文件中完成:
{
"hosts": ["unix:///var/run/docker.sock", "tcp://0.0.0.0:2375"]
}
如果你想让docker和docker在没有守护程序的情况下组成CLI,你可以将它们安装为python包,该包还安装可执行文件:
python pip install docker docker-compose
并设置环境变量DOCKER_HOST,即DOCKER_HOST = SSH://user@host
对于Ubuntu:
apt-get update
apt-get download docker.io
dpkg --fsys-tarfile docker.io_*.deb | tar xOf - ./usr/bin/docker > ./docker-cli
chmod +x ./docker-cli
rm docker.io_*.deb
shopt -s expand_aliases # alias are not expanded in non-interactive mode (e.g. gitlab ci)
alias docker=$PWD/docker-cli
在使用远程docker守护进程(env DOCKER_HOST
)时非常有用。