web-dev-qa-db-ja.com

Jenkins:Dockerデーモンに接続できません

CentOSマシンでJenkinsとDockerを実行しています。 Githubリポジトリを取得してDockerイメージを作成するJenkinsの仕事があります。ジョブを実行しようとすると、次のエラーが表示されます。

+ docker build -t myProject . Cannot connect to the Docker daemon. Is the docker daemon running on this host? Build step 'Execute Shell' marked build as failure Finished: FAILURE

これは、Sudo usermod -aG docker jenkinsを介してdockerユーザーグループにジェンキンを追加し、マシンを再起動した場合でも発生します。どうすれば修正できますか?

ところで、コマンドをSudo docker build -t myProject .に変更しようとすると、エラーが発生しますSudo: sorry, you must have a tty to run Sudo

25
pcsram

JenkinsおよびDockerのインストール後。 jenkinsユーザーをdockergroupに追加します(あなたがしたように)

Sudo gpasswd -a jenkins docker

次のファイルを編集します

vi /usr/lib/systemd/system/docker.service

そして、このルールを編集してAPIを公開します:

ExecStart=/usr/bin/docker daemon -H unix:// -H tcp://localhost:2375

Dockerデーモンをリロードして再起動します

systemctl daemon-reload
systemctl restart docker

その後、ジェンキンスを再起動し、ジェンキンスジョブでジェンキンスユーザーとしてdockerコマンドを実行できました

Sudo service jenkins restart
34
lvthillo

ジェンキンスでも同じ問題がありました。

Docker-compose.ymlに/ var/run/docker.sock:/var/run/docker.sockを追加して修正しました:

  jenkins:
  container_name: jenkins
  build: "jenkins/"
  ports:
    - "8080:8080"
  environment:
    - Java_OPTS:-Djava.awt.headless=true
  volumes:
    - /var/jenkins_home
    - /var/run/docker.sock:/var/run/docker.sock
3
S_intg

@lvthillo、あなたの答えは良いですが、十分ではありません。 Dockerグループも作成する必要があります。 Dockerのインストール後の手順を参照してください非rootユーザーとしてDockerを管理しますhttps://docs.docker.com/engine/installation/linux/linux-postinstall/#manage-docker-as-a-non-root-user

jenkinsを実行しているユーザーをdockerグループに追加します。

例えば。 jenkinsユーザーでJenkinsサーバーを実行する場合:

ステップ1:Dockerグループを作成する

Sudo groupadd docker

ステップ2:ユーザーをdockerグループに追加します。

Sudo usermod -aG docker jenkins

ステップ3:ログアウトしてジェンキンとして再度ログインし、テストします。

docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

dockerグループには、この目的のために、起動時にdockerデーモンによって特別な処理が行われます。そのグループのすべてのユーザーは、Sudoなしでdockerを呼び出すことができます。これは注意して使用してください。

https://docs.docker.com/engine/security/security/#docker-daemon-attack-surface

3
Brent Fisher

別のオプションは、Jenkins docker Hostを 'unix:///var/run/docker.sock'にポイントすることです

これは、実際のdockerホストを実行して開くのではありません。

2
Bob

myProjectをタグ名として使用することはできません。画像名とタグはすべて小文字でなければなりません。

invalid argument "myProject" for "-t, --tag" flag: invalid reference format: repository name must be lowercase
See 'docker build --help'.

docker-composeを使用している場合、誤解を招くエラーが表示されます

Couldn't connect to Docker daemon at http+docker://localunixsocket - is it running?

If it's at a non-standard location, specify the URL with the DOCKER_Host environment variable.

https://github.com/docker/compose/issues/2816

1
theRemix