Docker: Container tiếp tục khởi động lại lần nữa


108

Hôm nay, tôi đã triển khai một phiên bản của MediaWiki bằng cách sử dụng hình ảnh docker appcontainers / mediawiki và bây giờ tôi gặp một vấn đề mới mà tôi không thể tìm thấy manh mối nào. Sau khi cố gắng gắn vào vùng chứa phía trước mediawiki bằng:

docker attach mediawiki_web_1

câu trả lời nào Terminatedtrên cấu hình của tôi vì lý do tôi bỏ qua, cũng thử:

docker exec -it mediawiki_web_1 bash

Tôi nhận được một cái gì đó gần với một thông báo lỗi:

Error response from daemon: Container 81c07e4a69519c785b12ce4512a8ec76a10231ecfb30522e714b0ae53a0c9c68 is restarting, wait until the container is running

Và có một vấn đề mới của tôi, bởi vì vùng chứa này không bao giờ ngừng khởi động lại. Tôi có thể thấy rằng việc sử dụng docker ps -amà luôn trả về một TRẠNG THÁI là Restarting (127) x seconds ago.

Vấn đề là, tôi có thể dừng vùng chứa (tôi đã thử nghiệm) nhưng việc khởi động lại nó dường như đưa nó trở lại vòng lặp khởi động lại.

Bất kỳ ý tưởng những gì có thể là vấn đề ở đây? Toàn bộ mọi thứ vẫn hoạt động bình thường cho đến khi tôi cố gắng gắn vào nó ...

Tôi buồn :-(


Tôi đã thành công khi xóa hoàn toàn toàn bộ bộ nhớ cache Docker của mình bằng cách sử dụng forum.docker.com/t/how-to-delete-cache/5753/2 (tôi cũng đã thêm thẻ -f vào rmi). Sau đó, tôi xây dựng lại các thùng chứa của mình và chúng hoạt động.
alberto56,

Đối với tôi, việc xóa các vùng chứa và hình ảnh (như được mô tả trong liên kết của @ alberto56) là không đủ, tôi cũng phải xóa tập liên quan. Một khi tôi đã làm điều đó, tôi đã trở lại kinh doanh.
Katie Byers

Câu trả lời:


172

Các docker logslệnh sẽ hiển thị cho bạn những sản lượng một container được tạo ra khi bạn không chạy nó một cách tương tác. Điều này có thể bao gồm thông báo lỗi.

docker logs --tail 50 --follow --timestamps mediawiki_web_1

Bạn cũng có thể chạy một vùng chứa mới ở phía trước docker run -ti <your_wiki_image>để xem nó hoạt động như thế nào. Bạn có thể cần ánh xạ một số cấu hình từ docker-composeyml của mình sang dockerlệnh.

Tôi đoán rằng việc đính kèm vào quy trình wiki phương tiện đã gây ra sự cố làm hỏng một thứ gì đó trong dữ liệu của bạn.


Kết quả của lệnh bạn cung cấp mà tôi đoán là nhận được 50 nhật ký cuối cùng liên quan đến vùng chứa 2016-05-26T16:38:27.362409489Z * Stopping web server apache2 * 2016-05-26T21:49:11.376549083Z Terminated 2016-05-26T21:49:11.688655642Z /bin/bash: /tmp/.runconfig.sh: No such file or directorynhư sau:, vậy bạn nói đúng, có thứ gì đó bị hỏng trong dữ liệu vì runconfig.sh dường như đã biến mất. Tôi sẽ cố gắng chạy vùng chứa một lần nữa từ phía trước như bạn đã khuyên. Chỉ cần tìm cách xác định 25 đối số thích hợp ^^
Balessan

7
Cảm ơn, chạy một vùng chứa mới đã hoàn thành công việc. Docker được cho là để dễ dàng triển khai của tôi nhưng hiện tại thì đó là một thất bại lớn :-) Tôi có lẽ cần học hỏi và thử thêm ...
Balessan

Tôi đang nhổ tóc để cố gắng làm cho MySQL hoạt động. docker ps -acho tôi thấy rằng nó đã bị mắc kẹt trong vòng lặp khởi động và lệnh của bạn cho tôi biết lý do tại sao: các tệp đã có trong thư mục mysql mà nó không thể xóa. Bạn đã cứu tôi khỏi việc nhổ tóc hàng giờ đồng hồ. Cảm ơn!
Blizzardengle

32

Khi docker kill CONTAINER_IDkhông hoạt động và docker stop -t 1 CONTAINER_IDcũng không hoạt động, bạn có thể thử xóa vùng chứa:

docker container rm CONTAINER_ID

Tôi đã gặp sự cố tương tự hôm nay trong đó vùng chứa ở trong vòng lặp khởi động lại liên tục.

Vấn đề trong trường hợp của tôi liên quan đến việc tôi là một kỹ sư kém.

Dù sao, tôi đã khắc phục sự cố bằng cách xóa vùng chứa, sửa mã của mình, sau đó xây dựng lại và chạy vùng chứa.

Hy vọng rằng điều này sẽ giúp bất kỳ ai gặp khó khăn với vấn đề này trong tương lai


4
Tôi đã đặt mã xấu trong ứng dụng của tôi và trong tập tin Docker soạn của tôi thêm restart: alwaysmà để lại cho tôi trong một vòng lặp của Docker cố gắng để bắt đầu một ứng dụng chia .. :(
Giannis Katsini

4

Theo kinh nghiệm cá nhân, có vẻ như có sự cố bên trong bộ chứa docker của bạn không cho phép nó khởi động lại. Vì vậy, một số quá trình bên trong vùng chứa đang khiến quá trình khởi động lại bị treo hoặc một số quá trình đang khiến vùng chứa gặp sự cố khi bắt đầu.

Khi bạn khởi động vùng chứa, hãy chắc chắn rằng bạn bắt đầu nó tách rời "-d" nếu bạn định gắn vào nó. (ví dụ: "docker run -d mediawiki_web_1")


Tôi giả sử chạy vùng chứa bằng cách sử dụng docker-comp vẫn tách nó ra, phải không? Hoặc đối số -d bị thiếu trong tệp cấu hình của tôi. sẽ kiểm tra điều đó.
Balessan

4

tl; dr Nó đang khởi động lại với mã trạng thái 127, nghĩa là có một tệp / thư viện bị thiếu trong vùng chứa của bạn. Bắt đầu một vùng chứa mới chỉ có thể sửa chữa nó.

Giải trình:

Theo như hiểu biết của tôi về Docker, đây là những gì đang xảy ra:

  1. Container cố gắng khởi động. Trong quá trình này, nó cố gắng truy cập vào một tệp / thư viện không tồn tại.
  2. Nó thoát với một mã trạng thái 127, được giải thích trong câu trả lời này .
  3. Thông thường, đây là nơi vùng chứa lẽ ra đã thoát hoàn toàn, nhưng nó khởi động lại.
  4. Nó khởi động lại vì chính sách khởi động lại phải được đặt thành thứ gì đó khác với no( mặc định ), (sử dụng cờ dòng lệnh --restarthoặc docker-compose.ymlkhóa restart) trong khi khởi động vùng chứa.

Giải pháp: Một cái gì đó có thể đã làm hỏng vùng chứa của bạn. Tốt nhất nên bắt đầu một thùng chứa mới.


2

Đây cũng có thể là trường hợp nếu bạn đã tạo một systemddịch vụ có:

[Service]
Restart=always
ExecStart=/usr/bin/docker container start -a my_container
ExecStop=/usr/bin/docker container stop -t 2 my_container

1

Trong trường hợp của tôi vùng chứa nginx vẫn tiếp tục khởi động lại, tôi đã kiểm tra nhật ký của vùng chứa nginx và biết tệp .crt và .key của một miền không được yêu cầu đang có lỗi, vì vậy tôi đã xóa tệp .conf, .crt và .key tương ứng rồi khởi động lại. nginx. Vậy là nginx hoạt động tốt mà không cần khởi động lại.


0

Tôi đã quên Minikube đang chạy trong nền và đó là thứ luôn khởi động lại chúng sao lưu


0

Trước tiên hãy kiểm tra nhật ký tại sao vùng chứa không thành công. Bởi vì chính sách khởi động lại của bạn có thể đưa vùng chứa của bạn trở lại trạng thái đang chạy. Tốt hơn để khắc phục sự cố, Sau đó, có thể bạn có thể tạo một hình ảnh mới có / không có bản sửa lỗi. Sau đó thực hiện lệnh dưới đây

docker system prune

https://forums.docker.com/t/docker-registry-in-restart-1-status-forever/12717/3


0

Hãy thử thêm các thông số này vào tệp yml docker của bạn

restart: "no"
  restart: always
  restart: on-failure
  restart: unless-stopped
  environment:
    POSTGRES_DB: "db_name"
    POSTGRES_HOST_AUTH_METHOD: "trust"

Tệp cuối cùng sẽ trông giống như thế này

postgres:
  restart: "no"
  restart: always
  restart: on-failure
  restart: unless-stopped
  image: postgres:latest
  volumes:
    - /data/postgresql:/var/lib/postgresql
  ports:
    - "5432:5432"
  environment:
    POSTGRES_DB: "db_name"
    POSTGRES_HOST_AUTH_METHOD: "trust"
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.