Docker 기반 컨테이너가 있습니다.gitlab-ce/latest
영상. 최소한의 침해를 유지하면서 Ansible을 사용하여 몇 가지 추가 작업을 허용하기 위해 저는 다음을 선택했습니다.번들 설치기본적으로 /assets/sshd_config
컨테이너와 함께 제공됩니다 . 복사를 선택할 수도 있었지만 docker compose
결국 그렇게 하게 되었습니다.
결과 설치는 다음과 같습니다( docker inspect
발췌):
"Mounts": [
{
"Type": "bind",
"Source": "/srv/gitlab/sshd_config",
"Target": "/assets/sshd_config",
"ReadOnly": true,
"BindOptions": {
"Propagation": "shared"
}
}
],
이제 컨테이너가 다시 시작되지 않으면 호스트 측() 파일에 대한 변경 사항이 /srv/gitlab/sshd_config
컨테이너() 내부에 반영되지 않는다는 것을 알았습니다./assets/sshd_config
많은 변경을 가하거나 별도의 작업을 수행하지 않고도 호스트 측의 변경 사항을 컨테이너 내에서 즉시 확인할 수 있는 방법이 있습니까?재시작컨테이너?
답변1
바인딩 설치는 다음과 같아야 합니다.전시하다컨테이너 내부에 있지만 sshd는 다시 시작될 때까지 새 구성을 읽지 않습니다.
1단계 - 컨테이너 이름 가져오기
$ docker container list
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b1605793904b gitlab/gitlab-ce "/assets/wrapper" About a minute ago Up About a minute (health: starting) 22/tcp, 80/tcp, 443/tcp elastic_austin
이 경우 내 컨테이너 이름은 "elastic_austin"입니다.
2단계(선택 사항) - 수정한 파일이 존재하는지 확인
컨테이너 내부의 bash를 통해 변경 사항이 있는지 확인할 수 있습니다.docker exec
$ docker exec -it elastic_austin bash
root@b1605793904b:/# tail /etc/ssh/sshd_config
[...your sshd_config here...]
귀하의 변경 사항이 거기에 있기를 바랍니다.
3단계 - SSH 데몬 다시 시작
이제 컨테이너 내부에서 변경 사항이 발생했음을 알았으므로 컨테이너 내부에서 sshd 서비스를 다시 시작해야 합니다.
service ssh restart
컨테이너 내부의 bash나 docker exec
호스트 시스템에서 실행할 수 있습니다 .
$ docker exec -it elastic_austin service ssh restart
* Restarting OpenBSD Secure Shell server sshd [ OK ]
그러면 컨테이너가 업데이트된 SSH 구성을 다시 로드해야 합니다.