2015-08-07 25 views
21

Tôi mới dùng docker vì vậy tôi có thể làm điều này sai, nhưng tôi đang cố cài đặt Tomcat6 qua số Dockerfile như sau:Lệnh '/ bin/sh -c trả lại mã khác 0: 127

FROM rhel7:latest 
RUN cd /tmp 
RUN "wget", "http://www.us.apache.org/dist/tomcat/tomcat-6/v6.0.44/bin/apache-tomcat-6.0.44.tar.gz" 
RUN tar xzf apache-tomcat-6.0.44.tar.gz 
RUN mv apache-tomcat-6.0.44 /usr/local/tomcat6 
RUN cd /usr/local/tomcat6 
Run ./bin/start.sh 

nó thất bại trên dòng thứ 3 với:

RUN "wget", "http://www.us.apache.org/dist/tomcat/tomcat-6/v6.0.44/bin/apache-tomcat-6.0.44.tar.gz" 

Khi tôi chạy Docker build tôi có được điều này: this

tôi đang sử dụng:

  • Oracle Virtual Box V4.3.28 r100309
  • Docker trên RHEL7

Cảm ơn trước sự giúp đỡ nào.

+0

Tôi đã xem qua bài đăng này tìm kiếm một giải pháp cho một 'trả về một mã không khác: 139' trong một máy chủ CentOS 7. Tôi đã giải quyết được vấn đề của tôi chỉ cần gỡ bỏ cài đặt và cài đặt lại docker một lần nữa. 'sudo yum xóa docker.x86_64 docker-common.x86_64 docker-distribution.x86_64 docker-rhel-push-plugin.x86_64' ' sudo yum remove docker.x86_64 docker-common.x86_64 docker-distribution.x86_64 docker- rhel-push-plugin.x86_64' –

Trả lời

9

Giải pháp cho hình ảnh với lỗi là thêm trước khi wget CMD RUN yum -y install wget

Nếu bạn viết nó như thế này, nó là kết quả tương tự, thực hiện chỉ khác nhau:

RUN wget http://www.us.apache.org/dist/tomcat/tomcat-6/v6.0.44/bin/apache-tomcat-6.0.44.tar.gz 

Không sử dụng dấu ngoặc kép và dấu phẩy trong lệnh RUN.

+0

Nó không có sự khác biệt với nó, nó vẫn cho cùng một lỗi – user5201726

+3

Trong trường hợp đó, hãy thêm câu lệnh 'RUN yum -y install wget' trước dòng có lỗi. – Dharmit

+0

Cảm ơn, tôi đang cố gắng, nhưng nó đã thoát với mã 1 ngay bây giờ. Đây là những gì được hiển thị. http://i.imgur.com/wqmlenh.png Tôi có đăng ký với RedHat và tôi đang sử dụng nó trên máy, tôi có phải đăng nhập quản lý đăng ký bằng Docker không? – user5201726

7

Mã thoát 127 từ lệnh shell nghĩa là "không tìm thấy lệnh". Vì vậy, trong trường hợp của bạn có vẻ như "wget" trong dấu ngoặc kép không được tìm thấy khi Docker chạy nó.

Trong một số trường hợp, lệnh cài đặt wget (hoặc bất kỳ công cụ dòng lệnh nào bị thiếu) trước tiên phải được chạy trong Dockerfile vì một số hình ảnh Docker cơ sở sẽ không có wget. Bạn sẽ thêm một dòng trước khi lệnh không trông giống như thế này:

RUN yum install -y wget 
0

Đừng quên bạn có thể thêm tất cả lib và gói bạn cần trên cùng một dòng

RUN cd /tmp \ 
 
&& apt-get update \ 
 
&& apt-get install -y curl apt-utils wget unzip\ 
 
&& rm -rf /var/lib/apt/lists/*

Các vấn đề liên quan