我试图在Bash for Windows(WSL)上运行3个Docker镜像,MySQL,Redis和我的一个项目。
为此,我必须连接到在Windows上运行的Docker引擎,特别是在tcp://locahost:2375
上。我已将以下行添加到.bashrc
:
export DOCKER_HOST=tcp://127.0.0.1:2375
我可以成功运行docker
docker ps
命令,例如docker run hello-world
或cd
,但只要我sudo docker-compose up --build
进入我的项目目录并运行
-H
加载图像并旋转容器我收到错误:
错误:无法连接到http + docker:// localunixsocket的Docker守护程序 - 它正在运行吗?
如果它位于非标准位置,请使用DOCKER_HOST环境变量指定URL。
我知道如果我使用docker-compose
参数我可以提供地址,但我宁愿找到更永久的解决方案。出于某种原因,DOCKER_HOST
似乎忽略了$d1 = new DateTime($time1);
$d2 = new DateTime($time2);
$diff = $d1->diff($d2);
环境变量,我无法弄清楚为什么......
答案 0 :(得分:4)
您的问题是sudo
。它是一个完全不同于shell的程序,除非您明确指出,否则不会传输导出的环境。您可以在/etc/sudoers
(或/etc/sudoers.d/docker
)中添加以下行:
Defaults env_keep += DOCKER_HOST
或者您可以直接将其传递给命令行:
sudo DOCKER_HOST=$DOCKER_HOST docker-compose up --build
答案 1 :(得分:0)
通过设置import React, { Fragment, useState, useContext, useEffect } from 'react';
import {
SearchBar,
IconContainer
} from '../../styles/componentStyles/SearchBox/SearchBox';
import SearchIcon from './SearchIcon';
import SearchResult from './SearchResult';
import GenreFancyItemContext from '../../Context/genreFancyITem/GenreFancyItemContext';
export default function SearchBox() {
const genreFancyItemContext = useContext(GenreFancyItemContext);
const { getSearchResults, searchResults } = genreFancyItemContext;
const [searchText, setSearchText] = useState('');
const onChange = e => {
console.log('On change executes');
var text = e.target.value;
setSearchText(text);
getSearchResults(searchText);
console.log(searchResults);
};
return (
<Fragment>
<SearchBar
type="text"
name="searchSting"
placeholder=" Search Fancyitem..."
onChange={onChange}
value={searchText}
/>
<SearchResult />
</Fragment>
);
}
,您告诉命令行中的每次docker运行都使用 http api ,而不是默认值-在本地主机上使用 socket 。
默认情况下 http api 未打开
DOCKER_HOST
您可以在本地主机上的http api上为$ sudo cat /lib/systemd/system/docker.service | grep ExecStart
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
添加tern
但通常您想通过-H tcp://127.0.0.1:2375
(仅在适当的防火墙上进行操作)在远程服务器的api上进行培训
因此您需要在-H tcp://0.0.0.0:2375
中更改为下一行
/lib/systemd/system/docker.service