2016-01-28 24 views
17

Tôi tạo hình ảnh docker với tệp jar và coppying jar trong hình ảnh. My Dockerfile là:Chạy tệp jar trong hình ảnh docker

FROM anapsix/alpine-java 
MAINTAINER myNAME 
COPY testprj-1.0-SNAPSHOT.jar /home/testprj-1.0-SNAPSHOT.jar 
RUN java -jar /home/testprj-1.0-SNAPSHOT.j 

Sau khi thực hiện lệnh

docker build -t imageName. 

Trong giao diện điều khiển tôi thấy đầu ra từ ứng dụng và everthing là tốt sau. Nhưng khi tôi dừng hình ảnh, tôi không biết cách chạy lại hình ảnh? Khi thực hiện lệnh sau:

docker run -i -t imageName java -jar /home/testprj-1.0-SNAPSHOT.jar 

Ứng dụng chạy lại, nhưng trong Dockerfile tôi đã viết lệnh này. Làm thế nào để chạy hình ảnh mà không có lệnh này và ứng dụng chạy tự động?

Trả lời

35

Có sự khác biệt giữa hình ảnh và vùng chứa.

  • Hình ảnh sẽ được xây dựng ONCE
  • Bạn có thể bắt đầu container từ hình ảnh

Trong trường hợp của bạn:

Thay đổi hình ảnh của bạn:

FROM anapsix/alpine-java 
MAINTAINER myNAME 
COPY testprj-1.0-SNAPSHOT.jar /home/testprj-1.0-SNAPSHOT.jar 
CMD ["java","-jar","/home/testprj-1.0-SNAPSHOT.jar"] 

xây dựng hình ảnh của bạn:

docker build -t imageName . 

Bây giờ gọi chương trình của bạn bên trong một container:

docker run --name myProgram imageName 

Bây giờ khởi động lại chương trình của bạn bằng cách khởi động các container:

docker restart myProgram 

chương trình của bạn thay đổi? Tạo lại hình ảnh !:

docker rmi imageName 
docker build -t imageName . 
+2

Tôi gặp lỗi khi nói "Lỗi: Không thể truy cập jarfile /opt/helloworld.jar" !! Tôi có nên cho phép bất kỳ cái bình nào không? –

+0

Đây là những gì đã xảy ra với tôi: đường dẫn đến bình không chính xác. Bạn nên kiểm tra nó. – Sam003

+0

tôi cũng thất bại vì tên tương đối ... – chenchuk

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