[英]docker error: /var/run/docker.sock: no such file or directory
我是碼頭工人的新手。 我有一個將數據加載到 impala 的 shell 腳本,我想要一個運行構建圖像並運行容器的 docker 文件。 我在 mac 上,安裝了 boot2docker 並設置了DOCKER_HOST
。
bash-3.2$ docker info
Containers: 0
Images: 0
Storage Driver: aufs
Root Dir: /mnt/sda1/var/lib/docker/aufs
Dirs: 0
Execution Driver: native-0.2
Kernel Version: 3.15.3-tinycore64
Debug mode (server): true
Debug mode (client): false
Fds: 10
Goroutines: 10
EventsListeners: 0
Init Path: /usr/local/bin/docker
Sockets: [unix:///var/run/docker.sock tcp://0.0.0.0:2375]
我正在嘗試使用以下方法安裝預先構建的圖像:
sudo docker pull busybox
我收到此錯誤:
sudo docker pull busybox 2014/08/18 17:56:19 Post http:///var/run/docker.sock/images/create?fromImage=busybox&tag=: dial unix /var/run/docker.sock: no such file or directory
我的 docker 設置有問題嗎?
當我執行docker pull busybox
時,它會拉取圖像並下載完成。
bash-3.2$ docker pull busybox
Pulling repository busybox
a9eb17255234: Download complete
fd5373b3d938: Download complete
d200959a3e91: Download complete
37fca75d01ff: Download complete
511136ea3c5a: Download complete
42eed7f1bf2a: Download complete
c120b7cab0b0: Download complete
f06b02872d52: Download complete
120e218dd395: Download complete
1f5049b3536e: Download complete
bash-3.2$ docker run busybox /bin/echo Hello Doctor
Hello Doctor
我錯過了什么嗎?
當您使用boot2docker
時,您不需要以sudo
身份運行任何 docker 命令,因為傳入boot2docker
VM 的每個命令默認都以 root 身份運行。
當您以sudo
運行時會看到錯誤,因為sudo
沒有設置DOCKER_HOST
,只有您的用戶可以。
您可以通過執行以下操作來確認:
$ env
然后一個
$ sudo env
並在每個輸出中尋找DOCKER_HOST
。
至於有一個運行腳本的 docker 文件,這樣的事情可能對你有用:
Dockerfile
FROM busybox
# Copy your script into the docker image
ADD /path/to/your/script.sh /usr/local/bin/script.sh
# Run your script
CMD /usr/local/bin/script.sh
然后你可以運行:
docker build -t your-image-name:your-tag .
這將構建您的 docker 映像,您可以通過執行以下操作來查看:
docker images
然后,要運行您的容器,您可以執行以下操作:
docker run your-image-name:your-tag
此運行命令將從您使用Dockerfile
和構建命令創建的映像啟動一個容器,然后在您的script.sh
完成執行后完成。
您可以使用shellinit
快速設置環境
在您的命令提示符處執行:
$(boot2docker shellinit)
這將填充和導出環境變量並初始化其他功能。
當我在終端上啟動 boot2docker-vm 時,在我的 MAC 上使用
boot2docker start
我看到以下內容
To connect the Docker client to the Docker daemon, please set:
export DOCKER_CERT_PATH=<my things>
export DOCKER_TLS_VERIFY=1
export DOCKER_HOST=tcp://<ip>:2376
設置這些環境變量后,我能夠毫無問題地運行構建。
更新 [2016-04-28]如果您使用的是最新版本的 docker,您可以這樣做
eval $(docker-machine env)
將設置環境
( docker-machine env
將打印導出語句)
如果docker service
未運行,則docker pull
將失敗。 確保它正在運行
:~$ ps aux | grep docker
root 18745 1.7 0.9 284104 13976 ? Ssl 21:19 0:01 /usr/bin/docker -d
如果它沒有運行,您可以通過以下方式啟動它
sudo service docker start
對於 Ubuntu 15 及更高版本使用
sudo systemctl start docker
我也遇到了這個錯誤。 不過,我沒有使用 boot2docker ,只是在 Ubuntu 上安裝了“普通” docker(請參閱https://docs.docker.com/installation/ubuntulinux/ )。
我收到錯誤消息(“撥號 unix /var/run/docker.sock:沒有這樣的文件或目錄。您是否嘗試連接到沒有 TLS 的啟用 TLS 的守護程序?”),因為 docker守護程序尚未運行。
在 Ubuntu 上,您需要啟動服務:
sudo service docker start
另請參閱http://blog.arungupta.me/resolve-dial-unix-docker-sock-error-techtip64
對於 Windows 上的 boot2docker,在看到之后:
FATA[0000] Get http:///var/run/docker.sock/v1.18/version:
dial unix /var/run/docker.sock: no such file or directory.
Are you trying to connect to a TLS-enabled daemon without TLS?
我所做的只是:
boot2docker start
boot2docker shellinit
這產生了:
export DOCKER_CERT_PATH=C:\Users\vonc\.boot2docker\certs\boot2docker-vm
export DOCKER_TLS_VERIFY=1
export DOCKER_HOST=tcp://192.168.59.103:2376
最后:
boot2docker ssh
碼頭工人再次工作
在 Linux 中,首先在終端中執行sudo service docker start
。
如果您使用的是 CentOS 7,並且您已經通過 yum 安裝了 Docker,請不要忘記運行:
$ sudo systemctl start docker
$ sudo systemctl enable docker
這將啟動服務器,並在啟動時自動重新啟動它。
要設置您的環境並為將來的會話保留它,您可以執行以下操作:
echo 'export DOCKER_HOST="tcp://$(boot2docker ip 2>/dev/null):2375";' >> ~/.bashrc
然后: source ~/.bashrc
您的環境將在每個會話中設置
第一個 /var/run/docker.sock 指的是 boot2docker 虛擬機中的相同路徑。 為 windows /var/run/docker.sock 正確編寫
您,也許不是 OP,但由於您使用 docker (尤其是菜鳥)進行黑客攻擊和斜線處理的次數,可能已經有一個名為/var/run/docker.sock/
的目錄。 刪除該目錄並重試。
這幫助我讓它在 Centos 7 上運行。
我已經使用離線方法安裝了 docker,並且服務器重啟后 docker 沒有運行。 所以,我執行了下面對我有用的命令!
/usr/bin/dockerd > /dev/null
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.