นักเทียบท่าไม่สามารถเชื่อมต่อกับดีมอนนักเทียบท่า


473

หลังจากฉันอัปเดตเวอร์ชัน Docker เป็น0.8.0ฉันจะได้รับข้อความแสดงข้อผิดพลาดขณะเข้าสู่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?

และฉันได้ทำตามคำแนะนำและป้อนคำสั่งsudo docker -dและฉันได้รับสิ่งนี้:

[/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

ฉันจะแก้ปัญหาได้อย่างไร


7
คุณใช้ sudo เมื่อใช้งานนักเทียบท่า -d หรือไม่?
Ben Whaley

no such file or directory[/var/lib/docker|2462000b]ผมสังเกตเห็นว่าในข้อผิดพลาดก็กล่าวว่า ไม่/var/lib/dockerอยู่ในระบบของคุณหรือไม่ ถ้าไม่ใช่ฉันคิดว่าคุณต้องติดตั้ง Docker ใหม่
Ben Whaley

3
ฉันมีปัญหาเดียวกัน (ไม่สามารถเชื่อมต่อกับ daemon ที่รายการ 'ps' ยังคงทำงานอยู่) ยกเว้นฉันไม่ได้รับข้อความ 'ไม่พบไฟล์' เมื่อเริ่มต้น daemon / var / lib / docker มีอยู่
Jonathan Hartley

คุณใช้นักเทียบท่าบน VPS หรือไม่?
pigletfly

ติดตั้งเดสก์ทอปนักเทียบท่าจากที่นี่มันจะแก้มัน docs.docker.com/docker-for-mac/install
Guy Assaf

คำตอบ:


642

ลินุกซ์

ขั้นตอนโพสต์ติดตั้งสำหรับลินุกซ์เอกสารเผยขั้นตอนต่อไปนี้:

  1. สร้างกลุ่มนักเทียบท่า
    sudo groupadd docker
  2. เพิ่มผู้ใช้ไปยังกลุ่มนักเทียบท่า
    sudo usermod -aG docker $ (whoami)
  3. ออกจากระบบและกลับเข้าสู่ระบบอีกครั้งเพื่อให้แน่ใจว่านักเทียบท่าทำงานด้วยสิทธิ์ที่ถูกต้อง
  4. เริ่มนักเทียบท่า
    sudo service docker start

Mac OS X

ดังที่Dayel Ostracoกล่าวว่าจำเป็นต่อการเพิ่มตัวแปรสภาพแวดล้อม:

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

docker-machine startคำสั่งเอาท์พุทเมนต์เพื่อเป็นแนวทางในกระบวนการ


ใช่. นี่เป็นปัญหาสำหรับฉัน ฉันเพิ่มผู้ใช้ของฉันไปยังกลุ่มนักเทียบท่าและตอนนี้ฉันสามารถเชื่อมต่อกับภูต ขอบคุณ
Bogdan

FWIW เชื่อมโยงไปยังส่วนที่เฉพาะเจาะจงคือนี้
ไม่สมมาตร

20
หากด้วยเหตุผลบางอย่างคุณไม่ต้องการออกจากระบบคุณสามารถใช้newgrpคำสั่งเพื่อเริ่มเชลล์ใหม่ในกลุ่มใหม่นี้ newgrp dockerเช่นนี้
Denilson Sá Maia

sudo chown $ USER: $ USER / path / to / docker / binary
Ivor Scott

ฉันไม่มีเวลารีสตาร์ททุบตี ดังนั้นalias docker='sudo docker'ไม่หลอกลวง : p
LovaBill

149

ลินุกซ์

ในการรัน docker daemon บน Linux (จากCLI ) ให้รัน:

$ sudo service docker start # Ubuntu/Debian

หมายเหตุ: ข้าม$ตัวละครเมื่อคัดลอกและวาง

บน RedHat / CentOS sudo systemctl start dockerเรียกใช้:

ในการเริ่มต้นระบบไฟล์ "base" ให้รัน:

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

หรือชอบ:

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

ติดตั้งdocker-machineบน Linux

ในการติดตั้งไบนารีของเครื่องบน Linux:

  • ท้องที่:

    install -vm755 <(curl -L https://github.com/docker/machine/releases/download/v0.5.3/docker-machine_linux-amd64) $HOME/bin/docker-machine
    
  • ทั่วโลก:

    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'
    

MacOS

บน macOS dockerไบนารีเป็นเพียงไคลเอ็นต์และคุณไม่สามารถใช้เพื่อเรียกใช้ docker daemon เนื่องจาก Docker daemon ใช้คุณสมบัติเคอร์เนลเฉพาะ Linux ดังนั้นคุณจึงไม่สามารถเรียกใช้ Docker ได้ใน OS X ดังนั้นคุณต้องติดตั้งdocker-machineเพื่อสร้าง VM และแนบไปกับมัน

ติดตั้งdocker-machineบน macOS

หากคุณยังไม่มีdocker-machineคำสั่งให้ติดตั้งโดยใช้วิธีใดวิธีหนึ่งต่อไปนี้:

  • ใช้Brewbrew install docker-machine dockerสั่ง:
  • ด้วยตนเองจากGitHub :

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

ดู: เริ่มต้นด้วยการเทียบท่าสำหรับ Mac

กำหนดค่าdocker-machineบน macOS

หากต้องการเริ่มDocker Machineผ่าน Homebrew ให้เรียกใช้:

brew services start docker-machine

ในการสร้างdefaultเครื่อง (ถ้าคุณไม่มีให้ดู:) docker-machine ls:

docker-machine create --driver virtualbox default

จากนั้นตั้งค่าสภาพแวดล้อมสำหรับไคลเอ็นต์ Docker:

eval "$(docker-machine env default)"

จากนั้นตรวจสอบอีกครั้งโดยระบุคอนเทนเนอร์:

docker ps

โปรดดูที่: เริ่มต้นด้วยการเทียบท่าเครื่องและ VM


ติดตั้งDocker.appบน macOS

นอกจากวิธีแก้ปัญหาข้างต้นคุณสามารถติดตั้งแอพ Docker โดย:

brew cask install docker

ตรวจสอบเรื่องนี้โพสต์สำหรับรายละเอียดเพิ่มเติม ดูเพิ่มเติม: ไม่สามารถเชื่อมต่อกับ Docker daemon บน macOS


1
sudo service docker start ทำงานร่วมกับ Docker 1.9.1 บน Ubuntu 14.04

ขอบคุณ นี่คือสิ่งที่ใช้ได้กับฉันใน Ubuntu 14.04 ทุกอย่างอื่นล้มเหลว
nyxee

นี่เป็นสิ่งเดียวที่ทำงานกับฉันบน Mac OSX กับฮาร์ดแวร์ที่เก่ากว่าปี 2010 ฉันต้องติดตั้งdocker-toolboxจากdocs.docker.com/toolbox/toolbox_install_mac
Vikram

2
ฉันจำเป็นต้องติดตั้งนักเทียบท่าเครื่องนักเทียบท่าและนักเทียบท่าผ่าน Homebrew จากนั้นก็ใช้ได้ดี!
Entalpi

ฉันมีปัญหานี้ใน CentOS 7.6 ด้วยนักเทียบท่า 18 sudo rm -rf /var/lib/dockerแล้วเริ่มต้นใหม่ได้เคล็ดลับ ฉันติดจริงๆและไม่มีวิธีอื่นที่เหมาะกับฉัน
Ashkan

142

หากคุณใช้ Docker บน OS X การรัน eval ต่อไปนี้ใช้งานได้สำหรับฉัน

eval "$(docker-machine env default)"

หากคุณไม่ต้องการเรียกใช้คำสั่ง eval นี้ในทุก ๆ เทอร์มินัลเซสชันคุณสามารถเพิ่มสิ่งนี้ในbash_profile:

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

ตรวจสอบให้แน่ใจว่าได้รีสตาร์ทเซสชันเทอร์มินัลหรือรันซอร์สbash_profileเพื่อให้การเปลี่ยนแปลงมีผล


3
เช่นเดียวกันที่นี่ถ้าฉันลองทำตามลำพังฉันมักจะได้รับError checking TLS connection: Host is not running... เรียกใช้การประเมินนี้หลังจากที่คำสั่งdocker-machine start defaultทำกลอุบาย
Emilio Ferrucci

100

หลังจากการตรวจสอบโดยละเอียดปัญหานี้ดูเหมือนว่าจะเกิดขึ้นทุกครั้งหลังจากที่รีบูตเครื่อง Mac OS X (หรือรีสตาร์ทเครื่องเสมือนจริงของ Docker) ซึ่งป้องกันไม่ให้ไคลเอ็นต์ Docker เชื่อมต่อกับภูต Docker

ในการแก้ปัญหาคุณสามารถ:

A) ติดตั้ง Docker Toolbox อีกครั้งโดยใช้ตัวติดตั้งอย่างเป็นทางการ ( https://www.docker.com/products/docker-toolbox ) หรือเพียงแค่

B) เรียกใช้คำสั่งต่อไปนี้ตามลำดับ:

# 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) เช่นเดียวกับ (B) คุณยังสามารถคัดลอกและวางบรรทัดต่อไปนี้เพื่อเรียกใช้คำสั่งทั้งสาม:

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

ในกรณีที่คุณได้รับข้อผิดพลาดดังต่อไปนี้:

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

เพิ่งรันคำสั่งทั้งสามอีกครั้งและมันควรจะทำงานในครั้งที่สอง


6
ฉันกำลังรับโฮสต์ไม่มี: "ค่าเริ่มต้น"
Roman Gaufman

@RomanGaufman: มันเหมาะกับคุณไหม: นักเทียบท่าเริ่มต้นกับเครื่อง
KAD

1
@RomanGaufman ฉันต้องรีสตาร์ทเครื่องก่อนที่คำสั่งจะทำงานสำเร็จ
anon58192932

เป็นเพราะ ip ของ box box vm เปลี่ยนไปทุกครั้งที่คุณรีบูทเครื่อง mac?
Cui Pengfei 崔鹏飞

@ RomanGaufman ข้อผิดพลาดได้รับการแก้ไขโดยคำตอบ (ปัจจุบัน) ด้านล่าง: stackoverflow.com/a/34887761/634576
Dave Schweisguth

47

สิ่งนี้มักเกิดขึ้นเมื่อคุณไม่ได้อยู่ในdockerกลุ่ม คุณสามารถเพิ่มตัวเองในdockerกลุ่มด้วย:

sudo usermod -aG docker yourusername

หรือ

sudo usermod -aG docker $(whoami)

หลังจากนี้คุณต้องออกจากระบบและกลับเข้าสู่เซิร์ฟเวอร์

หรือคุณสามารถใช้sudoคำสั่ง Docker ได้ทุกคำสั่ง


5
และถ้าไม่มีกลุ่ม: sudo groupadd
docker

30

หากโซลูชันอื่นทั้งหมดด้านบนไม่ทำงานคุณสามารถลองตรวจสอบความเป็นเจ้าของได้/var/run/docker.sock:

ls -l /var/run/docker.sock

หากคุณไม่ใช่เจ้าของให้เปลี่ยนความเป็นเจ้าของด้วยคำสั่ง:

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

จากนั้นคุณสามารถไปข้างหน้าและลองดำเนินการคำสั่ง Docker ได้โดยไม่ยุ่งยาก


1
ฉันเริ่มต้นด้วยคำตอบนี้และสิ่งนี้ช่วยฉัน!
Andrzej Martyna

2
ปัญหาเกี่ยวกับวิธีนี้คือคุณต้องทำซ้ำขั้นตอนนี้ทุกครั้งที่มีการรีสตาร์ท daemon
MFIhsan

สวัสดี @MFIhsan ผู้ดูแลระบบ sys ที่ชาญฉลาดจะบอกให้คุณสร้างสคริปต์ทุบตีของคำสั่งเหล่านั้นและ & เพิ่มลงใน crontab เพื่อให้มันทำงานเมื่อรีบูต / เริ่มต้นตามที่อธิบายไว้ที่นี่> stackoverflow.com/a/29247942/3469960
kevthanewversi

ผู้ใช้ทั่วไปไม่ควรมีถุงเท้า! หากคุณไม่ได้เป็นเจ้าของถุงเท้าให้แน่ใจว่าคุณอยู่ในกลุ่มล้อและกลุ่มถุงเท้านั้นเป็นของ ... ไม่ใช่กลุ่มเจ้าของถุงเท้า!
CrazyMerlin

16

วิธีที่ดีที่สุดในการค้นหาสาเหตุที่นักเทียบท่าไม่ทำงานคือการเรียกใช้ daemon ด้วยตนเอง

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

The Docker daemon บันทึกการทำงานไปที่ STDOUT ดังนั้นมันจะเริ่มคายสิ่งที่ทำ

นี่คือปัญหาของฉัน:

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

นี่เป็นเพราะอินสแตนซ์ถูกโคลนจากเครื่องเสมือนอื่น ฉันต้องลบ pidfile และทุกอย่างทำงานได้ในภายหลัง

แน่นอนว่าแทนที่จะใช้วิธีนี้เราจะแนะนำให้ใช้ daemon ด้วยตนเองอีกครั้งและตรวจสอบบันทึกผลลัพธ์เพื่อหาข้อผิดพลาดอื่น ๆ ก่อนเริ่มบริการสำรอง


1
นั่นคือสิ่งที่ช่วยฉันในการค้นหาปัญหา (ฉันโชคไม่ดีที่เห็นคำตอบของคุณหลังจากนั้น) ของฉันคือapparmorแพ็คเกจที่ขาดหายไป
Pierre de LESPINAY

วิธีนี้ใช้ได้ผลสำหรับฉัน หลังจากฉันลบ /var/run/docker.pid ในที่สุดฉันก็สามารถเริ่มนักเทียบท่าได้
jirikadlec2

3
คำเตือน: '-d' เลิกใช้แล้วจะถูกลบในไม่ช้า ดูการใช้งาน WARN [0000] โปรดใช้ 'docker daemon' แทน
juanmf

3
ให้ไว้ แต่ไม่ได้กำหนด: -d
Luís de Sousa

หากต้องการเรียกใช้ docker daemon ด้วยตนเองในเวอร์ชันล่าสุดด้วยการเปิดใช้งานการดีบัก:dockerd -D
Luis Miguel Serrano

14

ถ้าคุณได้รับข้อความคุณสามารถตรวจสอบด้วยCan't connect to docker daemon. Is 'docker -d' running on this host?docker version

หากคุณเห็นข้อมูลเช่นDocker Client กำลังทำงาน แต่เซิร์ฟเวอร์ Docker ไม่ใช่คุณต้องเริ่มต้นเซิร์ฟเวอร์ Docker

ใน CentOS คุณสามารถใช้serviceเพื่อเริ่มหรือหยุดเซิร์ฟเวอร์ Docker

$ sudo service docker stop
$ sudo service docker start

จากนั้นหลังจากที่คุณพิมพ์docker versionคุณจะได้รับข้อมูลของDocker Client และ Docker Serverและ Docker daemon เริ่มต้นแล้ว


2
sudo service docker startยังทำงานให้ฉันบน Ubuntu 14.04
funroll

Cent os 7 ต้องทำทุกครั้งที่ฉันเริ่มนักเทียบท่า
Paddy

@Paddy คุณต้องเปิดใช้งานบริการหลังจากระบุและจะทำงานหากระบบเริ่มทำงานและยังคงทำงานอยู่ในพื้นหลัง
CrazyMerlin

คำตอบทั้งหมดเหล่านี้ที่กล่าวว่า: "คุณต้อง sudo systemctl start docker" เสมอถือว่ามีบริการตัวเริ่มต้น หากมีปัญหาใด ๆ ในการติดตั้งตัวเทียบท่าอาจจะไม่มีไฟล์การกำหนดค่าบริการซึ่งในกรณีนี้คุณจะได้รับ: "Unit docker.service ไม่ได้โหลด"
CrazyMerlin

12

ทำ a ps aux | grep dockerเพื่อดูว่า daemon กำลังทำงานอยู่หรือไม่ ถ้าไม่ได้วิ่ง/etc/init.d/docker start


5
ผมมีปัญหาเดียวกัน. 'ps' แสดงให้เห็นว่ากระบวนการตัวเทียบท่าของฉันยังคงทำงานอยู่
Jonathan Hartley

การหยุดและการเริ่มนักเทียบท่า (ซึ่งกำลังทำงานอยู่) ทำให้ฉันยืดตัวตรง
kyle

14
sudo service docker startบอกฉัน "นักเทียบท่าเริ่มต้น / ทำงานกระบวนการ 4633" แล้วsudo service docker statusบอกว่า "นักเทียบท่าหยุด / รอ"
ปิแอร์เดอ LESPINAY


9

ฉันมีปัญหาที่คล้ายกัน ฉันต้องออกจากระบบและลงชื่อเข้าใช้อีกครั้งเพื่อเชลล์เพราะฉันเพิ่งติดตั้ง Docker และคำสั่งต่อไปนี้ไม่แสดงในสภาพแวดล้อมของฉัน

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

3
ฉันต้องการออกจากระบบและลงชื่อเข้าใช้อีกครั้งแก้ไขทั้งหมด!
Mark Shust ที่ M.academy

นี่เป็นการแก้ไขปัญหาของฉัน! ฉันใช้ Ubuntu 16.04 เป็น WSL สิ่งเดียวที่ฉันต้องเปลี่ยนคือหมายเลขพอร์ตเริ่มต้น: export DOCKER_HOST = 127.0.0.1: 2375 >> ~ / .bashrc
Alex

9

ฉันประสบปัญหานี้และฉันรีสตาร์ท Docker โดยใช้คำสั่งเหล่านี้:

$ sudo service docker stop
$ sudo service docker start

sudoแต่ผมไม่ได้แก้ปัญหาของฉันเพราะฉันลืมที่จะรันคำสั่งหางของฉันโดยไม่ สำหรับผู้ที่ประสบปัญหานี้ลองตรวจสอบดู

ลอง

$ sudo docker info

แทนสิ่งนี้:

$ docker info

นี่เป็นปัญหาของฉันอย่างแน่นอนเมื่อพยายามเรียกใช้docker buildบน Ubuntu Xenial
ashnazg

9

คุณสามารถใช้คำสั่ง

sudo service docker stop && sudo service docker start

เพียงแค่เริ่มต้น


3
หรือsudo service docker restartง่ายกว่า😊
fr1sk

8

ฉันมีข้อผิดพลาดเดียวกันและพยายามdocker-machine regenerate-certsหรือeval..ไม่ได้ผลสำหรับฉัน

สิ่งนี้บน OS X 10.11.3 (El Capitan) และ Docker v1.10.1 ฉันสามารถแก้ไขได้โดยการลบและสร้างเครื่องเทียบท่าใหม่อีกครั้งเท่านั้น แหล่ง

หากใช้งานdocker-machine lsจะแสดงผลลัพธ์ที่คล้ายกับรายการด้านล่าง

นักเทียบท่า

ไม่ทราบ

ข้อผิดพลาด

ไม่สามารถสืบค้นรุ่นของนักเทียบท่า: ไม่สามารถเชื่อมต่อกับจุดสิ้นสุดเอนจินของเครื่องมือเทียบท่าได้

ลองลบเครื่องนักเทียบท่าของคุณด้วย;

docker-machine rm -f default

defaultชื่อเครื่องนักเทียบท่าของคุณอยู่ที่ไหน แล้ว;

docker-machine create -d virtualbox default

สร้างเครื่องนักเทียบท่าใหม่

ตรวจสอบอีกครั้งว่าทุกอย่างดูปกติแล้ว (ไม่มีข้อผิดพลาดหรือไม่รู้จัก Docker) ด้วย:

docker-machine ls

สุดท้ายอย่าลืมเรียกใช้"$(docker-machine env default)"ก่อนที่จะดำเนินการต่อหรือเรียกใช้ Terminal Docker Quickstart ซึ่งทำเพื่อคุณ ...


6

ฉันมีปัญหาเดียวกัน - "ไม่สามารถเชื่อมต่อกับดีมอนเกอร์" (ยกเว้นฉันไม่ได้รับข้อผิดพลาด 'ไม่พบไฟล์' ในการพยายามเริ่มต้นเซิร์ฟเวอร์)

'ps' แสดงว่า "/ usr / bin / docker -d" ยังคงทำงานอยู่

ฉันรู้ว่าฉันไม่เคยประสบความสำเร็จในการใช้เซิร์ฟเวอร์ด้วยตนเอง ทุกความพยายามผลิตออกมา

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

ดังนั้นฉันจึงรู้ว่าการติดตั้งตัวเทียบท่าอาจจะลงทะเบียนภูตด้วยการพุ่งพรวดซึ่งเริ่มต้นให้ฉันแล้ว ดังนั้นพยายามฆ่า daemon เพื่อเริ่มต้นใหม่ด้วยตนเองล้มเหลว (ไม่อนุญาตการดำเนินการ) ดังนั้นฉันจึงทำ

sudo kill -9 <PID>

ในกระบวนการ daemon ภูตอีกตัวหนึ่งเข้าแทนที่ทันทีและอันใหม่นี้ก็ให้ไคลเอนต์ของฉันเชื่อมต่อ CLI:

$ 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

ลองเพิ่มผู้ใช้ปัจจุบันไปยังdockerกลุ่ม:

sudo usermod -aG docker $USER

จากนั้นออกจากระบบและลงชื่อเข้าใช้


6

ใช้แอพ Docker CE

MacOS

ใช้แอพ Docker Community Edition ใหม่สำหรับ macOS ตัวอย่างเช่น:

  1. ถอนการติดตั้งแพ็คเกจ Docker Homebrew ทั้งหมดที่คุณติดตั้งแล้ว:

    brew uninstall docker-compose
    brew uninstall docker-machine
    brew uninstall docker
    
  2. ติดตั้งแอพด้วยตนเองหรือผ่านHomebrew-Cask :

    brew cask install docker
    

    หมายเหตุ: app นี้จะสร้างการเชื่อมโยงสิ่งที่จำเป็นเพื่อdocker, docker-compose, docker-machineฯลฯ

  3. หลังจากเรียกใช้แอปแล้วให้ชำระเงินไอคอนปลาวาฬ Docker ในเมนูสถานะ

  4. ตอนนี้คุณควรจะสามารถที่จะใช้docker, docker-compose, docker-machineคำสั่งตามปกติในเทอร์มิ

ที่เกี่ยวข้อง:

ลินุกซ์ / Windows

ดาวน์โหลดDocker CE จากหน้าดาวน์โหลดและทำตามคำแนะนำ


2018-5-20 หมายเหตุ: แอพ Docker CE บน macOS ค่อนข้างเส็งเคร็ง ทุกครั้งที่ฉันเปิดมันมันก็ค้างในทางไม่สามารถทำอะไรได้ ฉันพยายาม Google และแก้ไขปัญหาจนถึงตอนนี้ยังทำงานกับมันอยู่
NamNamNam

1
นี่คือคำตอบที่ถูกต้องสำหรับปัญหาที่รายงานขอบคุณ!
paranza

6

ฉันรู้ว่ามีคำตอบมากมายในโพสต์นี้ ฉันเพียงต้องการเพิ่มคำตอบง่ายๆที่แก้ไขปัญหาดังกล่าวข้างต้น

sudo systemctl start docker

เรียกใช้คำสั่งด้านบนและจะเริ่มต้นทุกเธรดที่เกี่ยวข้องกับหัวข้อ / บริการ


5

ฉันเพิ่งมีปัญหาเดียวกันวิ่งบนAmazon AWS

นี่คือสิ่งที่ฉันพยายาม:

  • ตั้งค่าdocker-machineในเครื่องด้วยอินสแตนซ์ AWS ที่มีอยู่แล้ว
  • ใช้การตั้งค่าทั่วไป
  • มันเชื่อมต่อกัน แต่เนื่องจากปิดรีโมตพอร์ตแล้วจึงล้มเหลว
  • หลังจากนั้น Docker daemon ปฏิเสธที่จะเริ่มทำงาน แต่การทำงานdockerdไม่ทำงาน ...

มันได้รับการทดสอบต่อไปนี้บนเครื่องระยะไกล:

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

ฉันลบ/var/lib/dockerและถอนการติดตั้งทุกอย่าง แต่ไม่ประสบความสำเร็จหลังจากติดตั้งใหม่ น่าเสียดายที่ฉันไม่มีบันทึกที่จัดเก็บจากความล้มเหลว แต่docker.serviceเพิ่งปฏิเสธที่จะเริ่มต้น

อย่างไรก็ตามสิ่งที่แก้ไขปัญหาของฉันได้ในที่สุดก็คือ:

sudo usermod -aG docker $(whoami)

4

ติดตามไซต์ DOC ของนักเทียบท่า: จัดการนักเทียบท่าในฐานะผู้ใช้ที่ไม่ใช่รูท

1) สร้างกลุ่มนักเทียบท่า

sudo groupadd docker 

2) ทำให้ผู้ใช้เป็นสมาชิกของกลุ่มนักเทียบท่าเพื่อรับสิทธิ์ของกลุ่ม

sudo usermod -aG docker $USER

ตรวจสอบว่าตัวแปรสภาพแวดล้อม DOCKER_HOST ถูกตั้งค่าสำหรับเชลล์ของคุณ

env | grep DOCKER_HOST

ถ้ามีอยู่

unset DOCKER_HOST

จากนั้นควรใช้งานได้:

docker run hello-world

1
คุณเป็นเครื่องมือช่วยชีวิตunset DOCKER_HOSTให้กับฉัน
user3014595

4

หากคุณใช้งาน OS X โดยใช้เครื่องมือ Docker ให้ทำตามสิ่งนี้

รีสตาร์ท daemon และกำหนดค่าสภาวะแวดล้อมของคุณ:

docker-machine restart

และจากนั้น

docker-machine env

สุดท้าย

eval $(docker-machine env)

วิธีทดสอบ daemon กำลังทำงาน:

docker ps -adocker-machine lsหรือ นี่จะแสดงรายการคอนเทนเนอร์ทั้งหมด


2

ฉันมีปัญหาเดียวกัน ใน CentOS 6.5:

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

หากไม่มีกระบวนการ Docker daemon อยู่แสดงว่าฉันพิมพ์:

docker -d

จากนั้นCtrl+ Dเพื่อหยุด Docker เนื่องจากเราใช้-dตัวเลือก Docker จะทำงานเป็น daemon ตอนนี้เราสามารถทำได้:

service docker start

docker pull centosแล้วฉันจะทำ นั่นคือทั้งหมดที่

หมายเหตุ: หากสิ่งเหล่านี้ไม่ได้ผลคุณสามารถลองyum updateแล้วทำซ้ำอีกครั้งเพราะฉันyum installก่อนหน้านี้


2

บริการเทียบท่าอาจไม่ทำงาน

หากคุณอยู่ใน RedHat / Fedora / CentOS โปรดลองสิ่งนี้:

sudo systemctl start docker

หากคุณอยู่บน Ubuntu / Debian:

sudo service start docker

นักเทียบท่าจะเริ่มทำงานบนโฮสต์และพอร์ตที่เกี่ยวข้องของคุณ


1

ตรวจสอบว่าคุณใช้ Docker Machine อยู่หรือไม่ :)

วิ่งdocker-machine env defaultควรทำเคล็ดลับ

เพราะตามเอกสาร:

Docker Machine เป็นเครื่องมือที่ให้คุณติดตั้ง Docker Engine บนโฮสต์เสมือนและจัดการโฮสต์ด้วยdocker-machineคำสั่ง คุณสามารถใช้ Machine เพื่อสร้างโฮสต์ Docker บนกล่อง Mac หรือ Windows ท้องถิ่นของคุณในเครือข่าย บริษัท ของคุณในศูนย์ข้อมูลของคุณหรือในผู้ให้บริการคลาวด์เช่น AWS หรือ Digital Ocean

ใช้docker-machineคำสั่งคุณสามารถเริ่มต้นตรวจสอบหยุดและเริ่มโฮสต์ที่มีการจัดการอัปเกรดไคลเอ็นต์ Docker และ daemon และกำหนดค่าไคลเอ็นต์ Docker เพื่อพูดคุยกับโฮสต์ของคุณ

ชี้ Machine CLI ไปยังโฮสต์ที่ได้รับการจัดการและคุณสามารถเรียกใช้ dockerคำสั่งได้โดยตรงบนโฮสต์นั้น ตัวอย่างเช่นเรียก docker-machine env defaultไปยังจุดที่จะเป็นเจ้าภาพที่เรียกว่าdefaultทำตามคำแนะนำบนหน้าจอเพื่อที่สมบูรณ์แบบenvการติดตั้งและการทำงานdocker ps, docker run hello-worldและอื่น ๆ

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


1
  1. ฉันยังมีปัญหาเดียวกัน ปัญหาอยู่ในซ็อกเก็ตที่จัดสรรให้กับ docker-daemon และ docker-client
  2. ก่อนอื่นไม่ได้รับอนุญาตสำหรับนักเทียบท่า - ลูกค้าใน docker.sock คุณสามารถตั้งค่าได้โดยใช้ "sudo usermod -aG docker $ USER"
  3. จากนั้นตรวจสอบไฟล์ bash ของคุณที่ซึ่ง docker-client กำลังทำงานสำหรับฉันมันคือ 0.0.0.0:2375 ในขณะที่ docker-daemon กำลังทำงานบนซ็อกเก็ตยูนิกซ์ (มันถูกตั้งค่าในไฟล์กำหนดค่าของ dockerd)
  4. เพียงแค่แสดงความคิดเห็น bash-line และมันจะทำงานได้ดี
  5. แต่ถ้าคุณต้องการให้มันทำงานบนพอร์ต TCP แทนที่จะเป็นซ็อกเก็ตยูนิกซ์ให้เปลี่ยนไฟล์กำหนดค่าของ dockerd และตั้งไว้ที่ 0.0.0.0.2375 และเก็บบรรทัดไว้ใน bash ตามที่มีอยู่หรือตั้งเป็น 0.0.0.0: 2375

1

ในการแก้ไขคุณต้องใช้คำสั่งต่อไปนี้ในเครื่องเทอร์มินัล ฉันจะอธิบายแต่ละขั้นตอน:

# 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/*

ตอนนี้ถ้าคุณต้องการทำให้สิ่งต่าง ๆ ง่ายขึ้นและมีเวลามากขึ้นคุณสามารถเรียกใช้initสคริปต์ของฉันด้วยพารามิเตอร์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

การรีบูตเป็นทางเลือก แต่ฉันขอแนะนำให้คุณทำเพื่อให้แน่ใจว่าทุกอย่างทำงานได้อย่างราบรื่น


1

ฉันมีปัญหาเดียวกันกับที่เรียกใช้ Docker 1.10 บน Ubuntu 14.04 และไม่มีคำตอบที่ให้มาเลย สำหรับฉันการแก้ไขคือการระบุไดรเวอร์การจัดเก็บเมื่อเรียกใช้ Docker daemon

sudo docker daemon --storage-driver=devicemapper

1

ถ้าคุณใช้ gitlab-CI / gitlab /var/run/docker.sockวิ่งคุณได้รับข้อผิดพลาดที่ถ้าคุณไม่ได้มีสิทธิ์ในการเข้าถึง

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

วิธีแก้ปัญหา:

sudo usermod -aG docker gitlab-runner

ยืนยันด้วย:

sudo -u gitlab-runner -H docker info

หวังว่าจะช่วย


0

หากการสร้างใบรับรอง TLS ไม่ทำงาน

docker-machine regenerate-certs default

ลองรีสตาร์ทเครื่องนักเทียบท่าและตั้งค่าตัวแปร env:

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

ตรวจสอบว่าเครื่องทำงานด้วย:

docker-machine ls

หรืออีกวิธีหนึ่ง

docker run hello-world

สิ่งนี้ใช้ได้สำหรับฉัน อย่างไรก็ตามหากคุณยังไม่มี daemon หน้าการแก้ไขปัญหาของ Docker จะให้รายละเอียดเกี่ยวกับกระบวนการหยุดการถอดและการสร้างเครื่องใหม่


0

ฉันยังได้รับปัญหา "ไม่สามารถเชื่อมต่อกับ Docker daemon ได้ Docker daemon ทำงานบนโฮสต์นี้หรือไม่"

sudoผมเคยลืมที่จะใช้ หวังว่ามันจะช่วยพวกเราบางคน

$: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
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.