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
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
ジェンキンスでも同じ問題がありました。
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
@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
別のオプションは、Jenkins docker Hostを 'unix:///var/run/docker.sock'にポイントすることです
これは、実際のdockerホストを実行して開くのではありません。
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.