Docker không thể kết nối với docker daemon


473

Sau khi tôi cập nhật phiên bản Docker của mình lên 0.8.0, tôi nhận được thông báo lỗi trong khi nhập sudo docker version:

Client version: 0.8.0
Go version (client): go1.2
Git commit (client): cc3a8c8
2014/02/19 12:54:16 Can't connect to docker daemon. Is 'docker -d' running on this host?

Và tôi đã làm theo hướng dẫn và nhập lệnh sudo docker -d, và tôi đã nhận được điều này:

[/var/lib/docker|2462000b] +job initserver()
[/var/lib/docker|2462000b.initserver()] Creating server
open /var/lib/docker/aufs/layers/cf2414da53f9bcfaa48bc3d58360d7f1cfd3784e4fe51fbef95197709dfc285d: no such file or directory[/var/lib/docker|2462000b] -job initserver() = ERR (1)
2014/02/19 12:55:57 initserver: open /var/lib/docker/aufs/layers/cf2414da53f9bcfaa48bc3d58360d7f1cfd3784e4fe51fbef95197709dfc285d: no such file or directory

Làm thế nào để tôi giải quyết vấn đề?


7
Bạn đã sử dụng sudo khi chạy docker -d?
Ben Whaley

Tôi nhận thấy rằng trong lỗi nó nói no such file or directory[/var/lib/docker|2462000b]. Có /var/lib/dockertồn tại trên hệ thống của bạn? Nếu không thì tôi nghĩ bạn cần cài đặt lại Docker.
Ben Whaley

3
Tôi có cùng một vấn đề (không thể kết nối với trình nền mà các chương trình 'ps' vẫn đang chạy), ngoại trừ tôi không nhận được bất kỳ thông báo 'tệp nào không tìm thấy' khi bắt đầu trình nền. / var / lib / docker không tồn tại.
Jonathan Hartley

Bạn đang sử dụng docker trên VPS?
pigletfly

Cài đặt docker desktop từ đây, nó sẽ giải quyết nó. docs.docker.com/docker-for-mac/install
Guy Assaf

Câu trả lời:


642

Linux

Các bước sau khi cài đặt cho tài liệu Linux cho thấy các bước sau:

  1. Tạo nhóm docker .
    bến tàu sudo
  2. Thêm người dùng vào nhóm docker .
    sudo usermod -aG docker $ (whoami)
  3. Đăng xuất và đăng nhập lại để đảm bảo docker chạy với quyền chính xác.
  4. Bắt đầu cập bến.
    Dock dịch vụ sudo bắt đầu

Mac OS X

Như Dayel Ostraco nói là cần thiết để thêm các biến môi trường:

docker-machine start # Start virtual machine for docker
docker-machine env  # It's helps to get environment variables
eval "$(docker-machine env default)" # Set environment variables

Các docker-machine startlệnh kết quả đầu ra các ý kiến để hướng dẫn quá trình này.


Đúng. Đây là vấn đề đối với tôi. Tôi đã thêm người dùng của mình vào nhóm docker và bây giờ tôi có thể kết nối với daemon. Cảm ơn
Bogdan

FWIW, liên kết đến phần cụ thể là đây
không đối xứng

20
Nếu, vì một số lý do, bạn không muốn đăng xuất, bạn có thể sử dụng newgrplệnh để bắt đầu một trình bao mới trong nhóm mới này. Như thế này : newgrp docker.
Denilson Sá Maia

sudo chown $ USER: $ USER / đường dẫn / đến / docker / binary
Ivor Scott

Tôi không có thời gian để khởi động lại bash. alias docker='sudo docker'Thủ thuật cũng vậy . : p
LovaBill

149

Linux

Để chạy docker daemon trên Linux (từ CLI ), hãy chạy:

$ sudo service docker start # Ubuntu/Debian

Lưu ý: Bỏ qua $ký tự khi sao chép và dán.

Trên RedHat / CentOS, hãy chạy : sudo systemctl start docker.

Để khởi tạo hệ thống tập tin "cơ sở", hãy chạy:

$ sudo service docker stop
$ sudo rm -rf /var/lib/docker
$ sudo service docker start

hoặc thủ công như:

$ sudo docker -d --storage-opt dm.basesize=20G

Cài đặt docker-machinetrên Linux

Để cài đặt nhị phân máy trên Linux:

  • tại địa phương:

    install -vm755 <(curl -L https://github.com/docker/machine/releases/download/v0.5.3/docker-machine_linux-amd64) $HOME/bin/docker-machine
    
  • toàn cầu:

    sudo bash -c 'install -vm755 <(curl -L https://github.com/docker/machine/releases/download/v0.5.3/docker-machine_linux-amd64) /usr/local/bin/docker-machine'
    

hệ điều hành Mac

Trên macOS, dockernhị phân chỉ là máy khách và bạn không thể sử dụng nó để chạy trình nền của docker, vì trình nền Docker sử dụng các tính năng hạt nhân dành riêng cho Linux, do đó bạn không thể chạy Docker tự nhiên trong OS X. Vì vậy, bạn phải cài đặt docker-machineđể tạo VM và đính kèm với nó.

Cài đặt docker-machinetrên macOS

Nếu bạn chưa có docker-machinelệnh, hãy cài đặt nó bằng cách sử dụng một trong các phương pháp sau:

  • Sử dụng lệnh Brew : brew install docker-machine docker.
  • thủ công từ GitHub :

    install -v <(curl https://github.com/docker/machine/releases/download/v0.5.3/docker-machine_linux-amd64) /usr/local/bin/docker-machine
    

Xem: Bắt đầu với Docker cho Mac .

Cấu hình docker-machinetrên macOS

Để khởi động Docker Machine thông qua Homebrew, hãy chạy:

brew services start docker-machine

Để tạo một defaultmáy (nếu bạn không có máy, hãy xem docker-machine ls:):

docker-machine create --driver virtualbox default

Sau đó, thiết lập môi trường cho máy khách Docker:

eval "$(docker-machine env default)"

Sau đó kiểm tra lại bằng cách liệt kê các container:

docker ps

Xem: Bắt đầu với Docker Machine và VM cục bộ .


Cài đặt Docker.app trên macOS

Ngoài ra, với giải pháp trên, bạn có thể cài đặt ứng dụng Docker bằng cách:

brew cask install docker

Kiểm tra bài này để biết thêm chi tiết . Xem thêm: Không thể kết nối với daemon Docker trên macOS


1
Docker dịch vụ sudo bắt đầu hoạt động với Docker 1.9.1 trên Ubuntu 14.04

cảm ơn. đây là những gì làm việc cho tôi trên Ubuntu 14.04. mọi thứ khác đều thất bại.
nyxee

Đây là điều duy nhất hoạt động với tôi trên Mac OSX với phần cứng cũ hơn năm 2010. Tôi đã phải cài đặt docker-toolboxtừ docs.docker.com/toolbox/toolbox_install_mac
Vikram

2
Tôi cần cài đặt docker-compose, docker-machine và docker qua Homebrew thì nó vẫn hoạt động tốt!
Entalpi

Tôi gặp vấn đề này trên CentOS 7.6 với docker 18 sudo rm -rf /var/lib/dockervà sau đó khởi động lại đã thực hiện thủ thuật này. Tôi đã thực sự bế tắc và không có giải pháp nào khác làm việc cho tôi.
Ashkan

142

Nếu bạn đang chạy Docker trên OS X, việc chạy eval sau đây đã có hiệu quả với tôi.

eval "$(docker-machine env default)"

Nếu bạn không muốn phải chạy câu lệnh eval này trên mỗi phiên cuối, bạn có thể thêm câu này vào bash_profile:

#Docker
eval "$(docker-machine env default)"

Hãy chắc chắn khởi động lại phiên cuối hoặc chạy nguồn bash_profileđể các thay đổi có hiệu lực.


3
Tương tự ở đây, nếu tôi thử điều này một mình, tôi thường nhận được Error checking TLS connection: Host is not running... chạy eval này sau khi lệnh docker-machine start defaultthực hiện thủ thuật.
Emilio Ferrucci

100

Sau khi điều tra chi tiết, vấn đề này dường như xảy ra mỗi lần sau khi Mac OS X được khởi động lại (hoặc máy ảo Docker được khởi động lại), điều này ngăn máy khách Docker kết nối với daemon Docker.

Để giải quyết vấn đề, bạn có thể:

A) Cài đặt lại Docker Toolbox bằng trình cài đặt chính thức ( https://www.docker.com/products/docker-toolbox ) hoặc đơn giản là

B) Chạy các lệnh sau theo thứ tự:

# First make sure that the virtual machine is running
docker-machine start default

# Regenerate TLS connection certs, requires confirmation
docker-machine regenerate-certs default

# Finally, set env
eval "$(docker-machine env default)"

C) Giống như (B), bạn cũng có thể sao chép và dán dòng sau để chạy tất cả ba lệnh:

docker-machine start default; docker-machine regenerate-certs default; eval "$(docker-machine env default)"

Trong trường hợp bạn nhận được lỗi sau:

Error getting SSH command: Something went wrong running an SSH command!
command : cat /etc/os-release
err     : exit status 255
output  :

chỉ cần chạy lại ba lệnh lần khác và nó sẽ hoạt động lần thứ hai.


6
Tôi đang nhận Máy chủ không tồn tại: "mặc định"
Roman Gaufman 17/2/2016

@RomanGaufman: điều này có hiệu quả với bạn không: docker-machine start default?
KAD

1
@RomanGaufman Tôi phải khởi động lại thiết bị đầu cuối của mình trước khi lệnh được thực thi thành công.
anon58192932

Có phải vì ip của vm của hộp ảo thay đổi mỗi khi bạn khởi động lại máy mac?
Cui Pengfei

Lỗi của @ RomanGaufman được giải quyết bằng câu trả lời (hiện tại) bên dưới: stackoverflow.com/a/34887761/634576
Dave Schweisguth

47

Điều này thường xảy ra khi bạn không ở trong dockernhóm. Bạn có thể thêm mình vào dockernhóm với:

sudo usermod -aG docker yourusername

hoặc là

sudo usermod -aG docker $(whoami)

Sau này, bạn cần đăng xuất và đăng nhập lại vào máy chủ.

Ngoài ra, bạn có thể sudomỗi lệnh Docker.


5
và nếu nhóm không tồn tại: sudo groupadd docker
izy

30

Nếu tất cả các giải pháp khác ở trên không hoạt động, bạn có thể thử kiểm tra quyền sở hữu của /var/run/docker.sock:

ls -l /var/run/docker.sock

Nếu bạn không phải là chủ sở hữu thì hãy thay đổi quyền sở hữu bằng lệnh:

sudo chown *your-username* /var/run/docker.sock

Sau đó, bạn có thể tiếp tục và thử thực hiện các lệnh Docker không rắc rối: D


1
Tôi đã bắt đầu với câu trả lời này, và điều này đã giúp tôi!
Andrzej Martyna

2
Vấn đề với cách tiếp cận này là, bạn phải lặp lại bước này mỗi khi daemon được khởi động lại
MFIhsan

Hi @MFIhsan một thông minh sys-admin sẽ nói với bạn chỉ cần tạo một kịch bản bash của những lệnh và và thêm nó vào crontab để có nó chạy lúc khởi động lại / khởi động như đã giải thích ở đây> stackoverflow.com/a/29247942/3469960
kevthanewversi

Một người dùng thông thường không bao giờ nên sở hữu một chiếc tất! Nếu bạn không sở hữu chiếc tất thì hãy chắc chắn rằng bạn thuộc nhóm bánh xe và nhóm chiếc tất thuộc về ... chứ không phải nhóm chủ sở hữu tất!
CrazyMerlin

16

Cách tốt nhất để tìm hiểu tại sao Docker không hoạt động sẽ là chạy daemon bằng tay.

$ sudo service docker stop
$ ps aux | grep docker  # do this until you don't see /usr/bin/docker -d
$ /usr/bin/docker -d

Trình nền Docker đăng nhập vào STDOUT, vì vậy nó sẽ bắt đầu phun ra bất cứ điều gì nó đang làm.

Đây là vấn đề của tôi là:

[8bf47e42.initserver()] Creating pidfile
2015/01/11 15:20:33 pid file found, ensure docker is not running or delete /var/run/docker.pid

Điều này là do thể hiện đã được sao chép từ một máy ảo khác. Tôi chỉ cần loại bỏ pidfile, và mọi thứ hoạt động sau đó.

Tất nhiên, thay vì mù quáng cho rằng điều này sẽ hoạt động, tôi khuyên bạn nên chạy daemon bằng tay thêm một lần nữa và xem xét đầu ra nhật ký cho bất kỳ lỗi nào khác trước khi bắt đầu dịch vụ sao lưu.


1
Đó cũng là điều giúp tôi tìm ra vấn đề (mặc dù tôi không may thấy câu trả lời của bạn). Của tôi là apparmorgói mất tích .
Pierre de LESPINAY 3/2/2015

Giải pháp này đã làm việc cho tôi. Sau khi tôi xóa /var/run/docker.pid, cuối cùng tôi đã có thể khởi động docker.
jirikadlec2

3
Cảnh báo: '-d' không được dùng nữa, nó sẽ bị xóa sớm. Xem cách sử dụng. WARN [0000] thay vào đó, vui lòng sử dụng 'docker daemon'.
juanmf

3
cờ được cung cấp nhưng không được xác định: -d
Luís de Sousa

Để chạy trình nền docker bằng tay trong các phiên bản mới nhất có bật gỡ lỗi, hãy sử dụng:dockerd -D
Luis Miguel Serrano

14

Nếu bạn nhận được tin nhắn Can't connect to docker daemon. Is 'docker -d' running on this host?, bạn có thể kiểm tra nó bằng cách docker version.

Nếu bạn thấy thông tin như Docker Client đang chạy. nhưng Docker Server thì không , rõ ràng bạn cần khởi động máy chủ Docker.

Trong CentOS, bạn có thể sử dụng serviceđể bắt đầu hoặc dừng máy chủ Docker.

$ sudo service docker stop
$ sudo service docker start

Sau đó, sau khi bạn nhập docker version, bạn sẽ nhận được thông tin của Docker Client và Docker Server , và daemon Docker đã được bắt đầu.


2
sudo service docker startcũng làm việc cho tôi trên Ubuntu 14.04.
funroll

Cent os 7, phải làm điều đó mỗi lần tôi khởi động docker.
Lúa

@Paddy Bạn cần kích hoạt dịch vụ sau khi nêu nó và nó sẽ chạy nếu hệ thống được khởi động và duy trì hoạt động ở chế độ nền.
CrazyMerlin

Tất cả những câu trả lời có nội dung: "Bạn cần sudo systemctl start docker" luôn cho rằng có một dịch vụ docker để bắt đầu. Nếu có bất kỳ sự cố nào khi cài đặt docker, tệp cấu hình dịch vụ thậm chí có thể không tồn tại, trong trường hợp đó bạn sẽ nhận được: "Đơn vị docker.service không được tải"
CrazyMerlin

12

Làm một ps aux | grep dockerđể xem nếu daemon đang chạy. Nếu không chạy/etc/init.d/docker start


5
Tôi có cùng một vấn đề. 'ps' cho thấy quá trình docker của tôi vẫn đang chạy.
Jonathan Hartley

dừng lại và bắt đầu docker (đã chạy) giúp tôi thẳng ra.
kyle

14
sudo service docker startnói với tôi "docker start / running, process 4633" rồi sudo service docker statusnói "docker stop / chờ đợi"
Pierre de LESPINAY 3/2/2015

12

Tôi khởi động lại Docker sau khi cài đặt nó:

$ sudo service docker stop
$ sudo service docker start

Và nó hoạt động.


9

Tôi có vấn đề tương tự. Tôi đã phải đăng xuất và đăng nhập lại vào shell vì tôi vừa cài đặt Docker và lệnh sau không hiển thị trong môi trường của tôi.

export DOCKER_HOST=127.0.0.1:4243 >> ~/.bashrc

3
Tôi chỉ cần đăng xuất và đăng nhập lại. Tất cả đã được sửa!
Mark Shust tại M.academy

Điều này đã giải quyết vấn đề của tôi! Tôi đang chạy Ubuntu 16.04 dưới dạng WSL. Điều duy nhất tôi phải thay đổi là số cổng mặc định: export DOCKER_HOST = 127.0.0.1: 2375 >> ~ / .bashrc
Alex

9

Tôi đã gặp phải vấn đề này và tôi đã khởi động lại Docker bằng các lệnh sau:

$ sudo service docker stop
$ sudo service docker start

Nhưng tôi không giải quyết được vấn đề của mình, vì tôi quên thực hiện các lệnh Docker mà không có sudo. Đối với những người phải đối mặt với vấn đề này, hãy thử kiểm tra xem.

Thử

$ sudo docker info

thay vì điều này:

$ docker info

Đây chính xác là vấn đề của tôi khi cố gắng chạy docker buildtrên Ubuntu Xenial.
ashnazg

9

Bạn có thể sử dụng lệnh

sudo service docker stop && sudo service docker start

chỉ đơn giản là bắt đầu nó.


3
Hoặc sudo service docker restart, nó dễ dàng hơn 😊
fr1sk

8

Tôi có cùng một lỗi và cố gắng docker-machine regenerate-certshoặc eval..không làm việc cho tôi.

Điều này trên OS X 10.11.3 (El Capitan) và Docker v1.10.1. Tôi chỉ có thể sửa nó bằng cách xóa và tạo lại docker-machine một lần nữa. Nguồn

Nếu đang chạy docker-machine ls, nó hiển thị cho bạn một đầu ra tương tự như đầu ra bên dưới;

DOCKER

không xác định

LRI

Không thể truy vấn phiên bản docker: Không thể kết nối với điểm cuối của công cụ docker

Hãy thử gỡ bỏ máy Docker của bạn với;

docker-machine rm -f default

defaultTên máy Docker của bạn ở đâu . Sau đó;

docker-machine create -d virtualbox default

Tạo một máy Docker mới.

Kiểm tra kỹ xem mọi thứ có vẻ bình thường không (không có lỗi hoặc Docker không xác định) với:

docker-machine ls

Cuối cùng, đừng quên chạy "$(docker-machine env default)"trước khi bạn tiếp tục hoặc chạy Docker Quickstart Terminal, thứ giúp bạn ...


6

Tôi gặp vấn đề tương tự - "Không thể kết nối với docker daemon." (ngoại trừ tôi không nhận được bất kỳ lỗi 'không tìm thấy tệp' nào khi cố gắng khởi động máy chủ.)

'ps' cho thấy "/ usr / bin / docker -d" vẫn đang chạy

Tôi nhận ra rằng tôi chưa bao giờ thực sự thành công trong việc điều hành máy chủ. Mọi nỗ lực đã được tạo ra

...
2014/03/24 21:57:29 pid file found, ensure docker is not running or delete /var/run/docker.pid

Vì vậy, tôi muộn màng nhận ra rằng việc cài đặt docker có thể đã đăng ký daemon với upstart, đã khởi động nó cho tôi. Do đó, cố gắng giết daemon để tự khởi động lại nó không thành công (hoạt động không được phép). Vì vậy, tôi đã làm một

sudo kill -9 <PID>

về quy trình daemon. Một trình nền khác ngay lập tức đã diễn ra, và cái mới này hiện đang cho phép ứng dụng khách CLI của tôi kết nối:

$ sudo docker info
Containers: 0
Images: 0
Driver: aufs
 Root Dir: /var/lib/docker/aufs
 Dirs: 0
WARNING: No memory limit support
WARNING: No swap limit support

6

Hãy thử thêm người dùng hiện tại vào dockernhóm:

sudo usermod -aG docker $USER

Sau đó đăng xuất và đăng nhập.


6

Sử dụng ứng dụng Docker CE

hệ điều hành Mac

Sử dụng ứng dụng Docker Community Edition mới cho macOS. Ví dụ:

  1. Gỡ cài đặt tất cả các gói Docker Homebrew mà bạn đã cài đặt cho đến nay:

    brew uninstall docker-compose
    brew uninstall docker-machine
    brew uninstall docker
    
  2. Cài đặt ứng dụng theo cách thủ công hoặc qua Homebrew-Cask :

    brew cask install docker
    

    Lưu ý: Ứng dụng này sẽ tạo liên kết cần thiết để docker, docker-compose, docker-machinevv

  3. Sau khi chạy ứng dụng, hãy kiểm tra biểu tượng cá voi Docker trong menu trạng thái.

  4. Bây giờ bạn sẽ có thể sử dụng docker, docker-compose, docker-machinelệnh như bình thường trong nhà ga .

Liên quan:

Linux / Windows

Tải xuống Docker CE từ trang tải xuống và làm theo hướng dẫn.


Lưu ý 2018-5-20: ứng dụng Docker CE trên macOS khá nhảm nhí. Mỗi khi tôi mở nó, nó sẽ đóng băng ngay trên đường đi, không thể làm gì được. Tôi đã cố gắng Google và khắc phục sự cố, cho đến nay vẫn hoạt động với nó
NamNamNam

1
Đây là câu trả lời chính xác cho vấn đề được báo cáo, cảm ơn!
paranza

6

Tôi biết rằng có rất nhiều câu trả lời trong bài viết này. Chỉ cần tôi muốn thêm một câu trả lời đơn giản được giải quyết vấn đề nêu trên.

sudo systemctl start docker

Chạy lệnh trên và nó sẽ bắt đầu tất cả các luồng / dịch vụ liên quan đến docker.


5

Tôi chỉ gặp vấn đề tương tự, chạy trên Amazon AWS .

Đây là những gì tôi đã cố gắng:

  • Thiết lập docker-machinecục bộ với phiên bản AWS đã có
  • Được sử dụng thiết lập chung
  • Đó là loại kết nối, nhưng vì cổng từ xa đã bị đóng, nó đã thất bại
  • Sau đó, daemon Docker từ chối khởi động, nhưng chạy dockerdđã hoạt động ...

Nó đã được thử nghiệm sau trên máy từ xa:

service docker start # Also restart, no success
systemctl start docker # Also restart, no success
dockerd # Success

Tôi đã gỡ bỏ /var/lib/dockervà gỡ cài đặt mọi thứ, nhưng không thành công sau khi cài đặt lại. Thật không may, tôi không có nhật ký được lưu trữ từ thất bại, nhưng docker.servicechỉ từ chối bắt đầu.

Tuy nhiên, điều cuối cùng đã giải quyết vấn đề của tôi về cơ bản là:

sudo usermod -aG docker $(whoami)

4

Theo dõi trang web của Docker: Quản lý Docker với tư cách là người dùng không root

1) Tạo nhóm Docker

sudo groupadd docker 

2) Làm cho người dùng thuộc nhóm docker để có được đặc quyền của nhóm.

sudo usermod -aG docker $USER

Kiểm tra xem biến môi trường DOCKER_HOST có được đặt cho trình bao của bạn không.

env | grep DOCKER_HOST

Nếu nó tồn tại,

unset DOCKER_HOST

Sau đó, điều này sẽ làm việc:

docker run hello-world

1
bạn là một người bảo vệ cuộc sống unset DOCKER_HOSTlàm việc cho tôi
dùng4954595

4

Nếu bạn đang chạy trên OS X bằng công cụ Docker, hãy làm theo cách này.

Khởi động lại daemon và cấu hình môi trường của bạn:

docker-machine restart

Và sau đó

docker-machine env

Cuối cùng,

eval $(docker-machine env)

Để kiểm tra daemon đang chạy:

docker ps -ahoặc docker-machine ls. Điều này sẽ liệt kê tất cả các container.


2

Tôi đã có cùng một vấn đề. Trong CentOS 6.5:

ps aux |grep `cat /var/run/docker.pid`

Nếu nó hiển thị không có quá trình trình nền Docker tồn tại, thì tôi gõ:

docker -d

Sau đó Ctrl+ Dđể dừng Docker. Bởi vì chúng tôi sử dụng -dtùy chọn, Docker sẽ chạy như daemon. Bây giờ chúng ta có thể làm:

service docker start

Sau đó tôi có thể làm một docker pull centos. Đó là tất cả.

LƯU Ý: Nếu những điều này không hoạt động, bạn có thể thử yum update, và sau đó lặp lại những điều này một lần nữa, bởi vì tôi yum installtrước những điều này.


2

Các dịch vụ Docker có thể không chạy.

Nếu bạn đang sử dụng RedHat / Fedora / CentOS, vui lòng thử điều này:

sudo systemctl start docker

Nếu bạn đang dùng Ubuntu / Debian:

sudo service start docker

Docker sẽ bắt đầu chạy trên máy chủ của bạn và cổng tương ứng.


1

Kiểm tra xem bạn có đang sử dụng Docker Machine :)

Chạy docker-machine env defaultnên làm mánh khóe.

Bởi vì theo tài liệu:

Docker Machine là một công cụ cho phép bạn cài đặt Docker Engine trên các máy chủ ảo và quản lý các máy chủ bằng docker-machinecác lệnh. Bạn có thể sử dụng Máy để tạo máy chủ Docker trên hộp Mac hoặc Windows cục bộ, trên mạng công ty, trong trung tâm dữ liệu của bạn hoặc trên các nhà cung cấp đám mây như AWS hoặc Digital Ocean.

Sử dụng docker-machinecác lệnh, bạn có thể bắt đầu, kiểm tra, dừng và khởi động lại máy chủ được quản lý, nâng cấp máy khách Docker và daemon và định cấu hình máy khách Docker để nói chuyện với máy chủ của bạn.

Trỏ máy CLI vào máy chủ đang chạy, được quản lý và bạn có thể chạy dockercác lệnh trực tiếp trên máy chủ đó. Ví dụ: chạy docker-machine env defaultđể trỏ đến một máy chủ được gọi default, làm theo các hướng dẫn trên màn hình để hoàn tất envthiết lập và chạy docker ps, docker run hello-worldv.v.

https://docs.docker.com/machine/overview/


1
  1. Tôi cũng có vấn đề tương tự. Vấn đề là ở các socket được phân bổ cho docker-daemon và docker-client.
  2. Đầu tiên, quyền không được đặt cho docker-client trên docker.sock Bạn có thể đặt nó bằng cách sử dụng "sudo usermod -aG docker $ USER"
  3. Sau đó kiểm tra tệp bash của bạn nơi docker-client đang chạy, Đối với tôi, đó là vào ngày 0.0.0.0:2375, trong khi docker-daemon đang chạy trên ổ cắm unix. (Nó được đặt trong tệp cấu hình của dockerd).
  4. Chỉ cần bình luận bash-line và nó sẽ hoạt động tốt.
  5. Nhưng nếu bạn muốn làm cho nó hoạt động trên cổng TCP thay vì ổ cắm unix, hãy thay đổi tệp cấu hình của dockerd và đặt nó vào 0.0.0.0.2375 và giữ dòng trong bash như hiện tại hoặc đặt thành 0,0.0.0: 2375.

1

Để khắc phục, bạn cần đưa ra các lệnh sau trong thiết bị đầu cuối. Tôi sẽ giải thích từng bước:

# Uninstall Docker from apt packages
$ sudo apt-get remove docker docker.io

# Remove it from the libraries just to be
# sure it's gone forever
$ sudo rm -rf /var/lib/docker/*

Bây giờ, nếu bạn muốn đơn giản hóa mọi thứ và có thêm thời gian, bạn có thể chạy inittập lệnh của tôi với tham số installDocker:

# Pull the init script from GitHub
$ wget https://github.com/dminca/dotfiles/blob/master/init

# Add rights to run the script
$ chmod 755 init

# Just run the script with the installDocker parameter
$ ./init installDocker

Khởi động lại là tùy chọn, nhưng tôi khuyên bạn nên làm điều đó để đảm bảo tất cả đều chạy trơn tru.


1

Tôi gặp vấn đề tương tự khi chạy Docker 1.10 trên Ubuntu 14.04 và không có câu trả lời nào được đưa ra. Đối với tôi, cách khắc phục là chỉ định trình điều khiển lưu trữ khi chạy trình nền Docker.

sudo docker daemon --storage-driver=devicemapper

1

Nếu bạn sử dụng gitlab-ci / gitlab-runners, bạn sẽ gặp lỗi đó nếu bạn không có quyền truy cập /var/run/docker.sock.

Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock

Để giải quyết vấn đề:

sudo usermod -aG docker gitlab-runner

Xác minh với:

sudo -u gitlab-runner -H docker info

Mong rằng sẽ giúp.


0

Nếu tái tạo chứng chỉ TLS không hoạt động

docker-machine regenerate-certs default

Hãy thử khởi động lại máy docker và đặt biến env:

docker-machine restart default
eval $(docker-machine env default)

Kiểm tra xem máy có chạy không:

docker-machine ls

Hay cách khác

docker run hello-world

Điều này làm việc cho tôi. Tuy nhiên, nếu bạn vẫn không có trình nền, trang xử lý sự cố của Docker sẽ nêu chi tiết một quy trình để dừng, xóa và tạo một máy mới.


0

Tôi cũng gặp vấn đề "Không thể kết nối với daemon Docker. Có phải daemon docker đang chạy trên máy chủ này không?".

Tôi đã quên sử dụng sudo. Hy vọng nó sẽ giúp một số người trong chúng ta.

$:docker images
Cannot connect to the Docker daemon. Is the docker daemon running on this host?

$:sudo docker images
REPOSITORY   TAG   IMAGE ID   CREATED   SIZE
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.