docker-compose oci运行时错误:在链接的容器中找不到可执行文件。

huangapple go评论132阅读模式
英文:

docker-compose oci runtime error executable file not found (in linked container)

问题

我正在尝试设置Docker和Compose以运行集成测试。

我有以下的docker-compose.yml文件:

  1. version: '3'
  2. services:
  3. tests:
  4. build:
  5. context: .
  6. dockerfile: Dockerfile.tests
  7. links:
  8. - web
  9. - maindb
  10. web:
  11. build:
  12. context: .
  13. dockerfile: Dockerfile.web
  14. ports:
  15. - "8080:8080"
  16. volumes:
  17. - .:/code
  18. - logvolume01:/var/log
  19. links:
  20. - maindb
  21. maindb:
  22. image: postgres
  23. environment:
  24. POSTGRES_PASSWORD: example
  25. volumes:
  26. logvolume01: {}

web容器本身运行得很好:

  1. $ docker-compose -p wh run web
  2. Starting wh_maindb_1 ... done
  3. 2017/07/27 22:05:34 [I] http server Running on http://:8080

但是当我运行tests容器时,我遇到了错误:

  1. $ docker-compose -p wh run tests
  2. Starting wh_maindb_1 ... done
  3. Starting 6faff07f7671_6faff07f7671_wh_web_1 ...
  4. Starting 6faff07f7671_6faff07f7671_wh_web_1 ... error
  5. ERROR: for 6faff07f7671_6faff07f7671_wh_web_1 Cannot start service web: oci runtime error: container_linux.go:262: starting container process caused "exec: \"web\": executable file not found in $PATH"

这是我的Dockerfile.web文件:

  1. $ cat Dockerfile.web
  2. FROM ubuntu:xenial
  3. WORKDIR /app
  4. ADD bin/* /app/
  5. CMD ["/app/web"]

/app/web是用Golang 1.6编写的动态链接守护程序。

以下是一些版本信息:

  1. $ docker version
  2. Client:
  3. Version: 17.06.0-ce
  4. API version: 1.30
  5. Go version: go1.8.3
  6. Git commit: 02c1d87
  7. Built: Fri Jun 23 21:23:31 2017
  8. OS/Arch: linux/amd64
  9. Server:
  10. Version: 17.06.0-ce
  11. API version: 1.30 (minimum version 1.12)
  12. Go version: go1.8.3
  13. Git commit: 02c1d87
  14. Built: Fri Jun 23 21:19:04 2017
  15. OS/Arch: linux/amd64
  16. Experimental: false
  17. $ docker-compose version
  18. docker-compose version 1.14.0, build c7bdf9e
  19. docker-py version: 2.4.2
  20. CPython version: 2.7.12
  21. OpenSSL version: OpenSSL 1.0.2g 1 Mar 2016

希望对你有所帮助!

英文:

I'm trying to setup docker & compose for running integration tests

I have the following docker-compose.yml

  1. version: '3'
  2. services:
  3. tests:
  4. build:
  5. context: .
  6. dockerfile: Dockerfile.tests
  7. links:
  8. - web
  9. - maindb
  10. web:
  11. build:
  12. context: .
  13. dockerfile: Dockerfile.web
  14. ports:
  15. - "8080:8080"
  16. volumes:
  17. - .:/code
  18. - logvolume01:/var/log
  19. links:
  20. - maindb
  21. maindb:
  22. image: postgres
  23. environment:
  24. POSTGRES_PASSWORD: example
  25. volumes:
  26. logvolume01: {}

web container itself works pretty fine

  1. $ docker-compose -p wh run web
  2. Starting wh_maindb_1 ... done
  3. 2017/07/27 22:05:34 [I] http server Running on http://:8080

But when I run tests container, I get the error

  1. $ docker-compose -p wh run tests
  2. Starting wh_maindb_1 ... done
  3. Starting 6faff07f7671_6faff07f7671_wh_web_1 ...
  4. Starting 6faff07f7671_6faff07f7671_wh_web_1 ... error
  5. ERROR: for 6faff07f7671_6faff07f7671_wh_web_1 Cannot start service web: oci runtime error: container_linux.go:262: starting container process caused "exec: \"web\": executable file not found in $PATH"

Here is my Dockerfile.web

  1. $ cat Dockerfile.web
  2. FROM ubuntu:xenial
  3. WORKDIR /app
  4. ADD bin/* /app/
  5. CMD ["/app/web"]

/app/web is dynamically linked daemon written in Golang 1.6

And some version info

  1. $ docker version
  2. Client:
  3. Version: 17.06.0-ce
  4. API version: 1.30
  5. Go version: go1.8.3
  6. Git commit: 02c1d87
  7. Built: Fri Jun 23 21:23:31 2017
  8. OS/Arch: linux/amd64
  9. Server:
  10. Version: 17.06.0-ce
  11. API version: 1.30 (minimum version 1.12)
  12. Go version: go1.8.3
  13. Git commit: 02c1d87
  14. Built: Fri Jun 23 21:19:04 2017
  15. OS/Arch: linux/amd64
  16. Experimental: false
  17. $ docker-compose version
  18. docker-compose version 1.14.0, build c7bdf9e
  19. docker-py version: 2.4.2
  20. CPython version: 2.7.12
  21. OpenSSL version: OpenSSL 1.0.2g 1 Mar 2016

答案1

得分: 0

这可能与一些docker-compose的bug有关。

尝试清理容器:

  1. docker-compose down

或者使用以下命令(这将删除容器数据):

  1. docker rm -f $(docker ps -a -q)
英文:

This is maybe related to some docker-compose bug.

Try cleaning containers

  1. docker-compose down

Alternatively this (you will lose your container data):

  1. docker rm -f $(docker ps -a -q)

huangapple
  • 本文由 发表于 2017年7月28日 06:10:51
  • 转载请务必保留本文链接:https://go.coder-hub.com/45361846.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定