簡體   English   中英

Docker - 無法在unix:///var/run/docker.sock上連接到Docker守護程序

[英]Docker — Cannot connect to the Docker daemon at unix:///var/run/docker.sock

我在Ubuntu中通過Nix安裝了Docker 17.12.0-ceLinux uplink 4.13.0-36-generic #40~16.04.1-Ubuntu SMP Fri Feb 16 23:25:58 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux ),但是每次我嘗試執行任何Docker命令時,它都會告訴我: Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running? Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

這就是我做的:

$ nix-env --install --prebuilt-only docker-17.12.0-ce

$ nix-env -q
docker-17.12.0-ce
go-1.9.4
hugo-0.32.2
kotlin-1.2.21
nix-1.11.16
nodejs-8.9.4
openjdk-8u172b02
openjdk-9.0.4-b11

$ docker version
Client:
 Version:   17.12.0-ce
 API version:   1.35
 Go version:    go1.9.4
 Git commit:    486a48d2701493bb65385788a291e36febb44ec1
 Built: Thu Feb 15 13:56:40 2018
 OS/Arch:   linux/amd64
 Experimental:  false
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

$ docker ps -a
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

我閱讀了Linux的安裝后步驟 (盡管這在某種程度上不適用於Nix軟件包)並繼續添加了一個docker用戶和所有這些東西......但仍然沒有。

我知道這個問題有很多答案 - 我已經嘗試了幾個“解決方案”......但是還沒有運氣。

在非NixOS發行版上安裝軟件包時,不會設置服務(如守護程序)。 服務由NixOS模塊創建,因此它們需要NixOS。

例如,在Docker的情況下,守護進程是通過設置systemd服務創建的。 NixOS 模塊的片段如下所示:

  ...
  options.virtualisation.docker = {
    enable =
      mkOption {
        type = types.bool;
        default = false;
        description =
          ''
            This option enables docker, a daemon that manages
            linux containers. Users in the "docker" group can interact with
            the daemon (e.g. to start or stop containers) using the
            <command>docker</command> command line tool.
          '';
};
...

systemd.services.docker = {
        wantedBy = optional cfg.enableOnBoot "multi-user.target";
        environment = proxy_env;
        serviceConfig = {
          ExecStart = [
            ""
            ''
              ${cfg.package}/bin/dockerd \
                --group=docker \
                --host=fd:// \
                --log-driver=${cfg.logDriver} \
                ${optionalString (cfg.storageDriver != null) "--storage-driver=${cfg.storageDriver}"} \
                ${optionalString cfg.liveRestore "--live-restore" } \
                ${cfg.extraOptions}
            ''];
          ExecReload=[
            ""
            "${pkgs.procps}/bin/kill -s HUP $MAINPID"
          ];
};
...

您可以在其他發行版上完成等效操作,但您必須手動創建服務和配置文件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM