Tôi muốn chạy Jenkins trong Container nơi máy chủ của tôi đang chạy Alpine Linux.
Tôi có một vở kịch Ansible khởi động container Jenkins. Tuy nhiên, container thoát ra ngay khi nó bắt đầu. Tôi tin rằng vấn đề có liên quan đến việc khởi động container trên máy chủ của tôi chạy Alpine Linux.
- name: pull jenkins image
docker_image:
name: jenkins/jenkins
tag: lts-alpine
- name: create jenkins container
docker_container:
name: jenkins
image: "jenkins/jenkins:lts-alpine"
state: started
env:
JAVA_OPTS: "-Xmx300m"
memory: 500M
kernel_memory: 500M
ports:
- 8080:8080
- 50000:50000
volumes:
- jenkins:/var/jenkins_home:rw
Khi tôi chạy, docker ps -a
tôi có thể thấy rằng container docker đã thoát.
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
523f107cb861 jenkins/jenkins:lts-alpine "/sbin/tini -- /usr/…" 28 seconds ago Exited (1) 27 seconds ago jenkins
Tôi nhìn vào nhật ký docker logs jenkins
để thấy java thất bại trong việc phân bổ bộ nhớ:
OpenJDK 64-Bit Server VM warning: INFO: os::commit_memory(0x000076cd5dda8000, 2555904, 1) failed; error='Operation not permitted' (errno=1)
#
# There is insufficient memory for the Java Runtime Environment to continue.
# Native memory allocation (mmap) failed to map 2555904 bytes for committing reserved memory.
# An error report file with more information is saved as:
# /tmp/hs_err_pid7.log
Tôi đã cố gắng thiết lập bộ nhớ nhưng tôi nghĩ rằng nó có liên quan đến tôi khi chạy bộ chứa docker trong Alpine Linux. Container bắt đầu cục bộ trên OSX. Máy chủ của tôi có 15G miễn phí trong 16G.
Có một tùy chọn Java mà tôi đang thiếu hoặc một số thứ bị thiếu trong Playbook của tôi không?