다음과 같이 시작된 컨테이너에서 "memlock" 시스템 제한을 설정하는 데 문제가 있습니다.
docker run -it ubuntu:xenial
간단히 말해서, 제가 시도한 것은 다음과 같습니다.
Bash 터미널 세션 1에서:
docker run -it ubuntu:xenial
/etc/security/limits.conf
다음 줄을 포함하도록 설정
* hard memlock unlimited * soft memlock unlimited
파일 끝에.
그런 다음 호스트 시스템의 다른 bash 터미널에서 동일한 컨테이너로 "bash in"하고 다음을 시도하십시오.
root@6ae391cfb6de:/# ulimit -l unlimited
다음 오류가 발생합니다.
bash: ulimit: max locked memory: cannot modify limit: Operation not permitted
세부정보 복사
저는 MacOS Sierra 10.12.6/Docker 버전 18.03.1-ce, 버전 9ee9f40에서 실행 중입니다.
쉘 #1
macOS>
ulimit -l # output of this command is 'unlimited' which shows host ulimits are not the issue
출력: 무제한
맥OS>
docker run -it ubuntu:xenial
다음 명령은 위 명령으로 시작된 xenial-docker-instance의 Mac의 bash 쉘 #1에서 실행됩니다.
cd # to home directory
grep limit .bashrc # check it any session limits are defined at shell startup -- nothing found
cat >> /etc/security/limits.conf <<EOF
* hard memlock unlimited
* soft memlock unlimited
EOF
Mac의 쉘 #2
containerId=`docker ps | grep ubuntu | sed -e's/ .*//'` # assumes you only have one docker instance of ubuntu running
docker exec -t -i $containerId bash # 'bash in' to ubuntu running container launched in shell #2
ulimit -l
# output is 82000 ... huh?
#
# try setting
ulimit -l unlimited
#
# Nope.. i get this error:
# bash: ulimit: max locked memory: cannot modify limit: Operation not permitted
종료: 세부정보 복사
어떤 조언이나 지침이라도 대단히 감사하겠습니다.
답변1
내 친구 Chris Cellucci가 나에게 답을 주었습니다. run with --privileged
이에 대해서는 오늘이나 내일 자세히 설명하겠습니다.
답변2
docker가 이 기능을 제공한다면 좋지 않을 것입니다.
Linux에서는 내 생각에 그것은 능력입니다 CAP_IPC_LOCK
.
잠금이 필요한 이유는 일반적으로 좋은 생각도 아니고 필요하지도 않습니다. 잠자는 동안 스왑을 막지는 않습니다.
여기서 확인했어요https://docs.docker.com/docker-for-mac/docker-toolbox/#the-docker-toolbox-environmentMac에는 두 가지 버전의 Docker가 있습니다. 둘 다 가상 머신 내부 Linux 인스턴스의 컨테이너에서 실행됩니다. 따라서 기능이 적절할 것입니다. 적절한 기능을 추가해야 합니다. 바라보다http://man7.org/linux/man-pages/man7/capability.7.html