시스템 사용자 모드에서 도커를 기다리는 방법은 무엇입니까?

rlpowell

"systemd --user"단위 파일에서 Docker 컨테이너 (아마도 방금 발견 https://github.com/ibuildthecloud/systemd-docker 사용 )를 시작합니다. 나는 그들이 시작할 때 시작하기를 원합니다.

문제는 After=docker.servicesystemd 사용자 모드 단위가 systemd 시스템 모드 단위를 볼 수 없기 때문에 할 수 없다는 것 입니다.

누구든지 이것을 고칠 좋은 방법이 있습니까?

지금까지 내가 가진 "최고의"아이디어는 "docker info"가 합리적인 것을 반환 할 때까지 잠자기 루프를 실행하는 스크립트를 실행하는 한 번만 실행되는 시스템 단위를 만드는 것입니다. 그런 다음 After = 그게 나쁘게 보입니다. 방법.

파일 화재

이 문제에 대한 한 가지 좋은 해결책은 ( systemd 시스템 인스턴스에서 실행되는) Docker 데몬이 소켓 활성화를 사용하도록하는 것입니다.

이렇게하면 docker 명령 (예 : 사용자 systemd 단위에서) 을 시작할 때 연결할 소켓이 있지만 Docker 데몬이 실제로 서비스를 제공 할 준비가 될 때까지 차단됩니다.

명시 적 종속성을 제거하기위한 소켓 활성화의 기본 아이디어는 systemd 블로그의이 기사에 설명되어 있습니다. 이 기사에서는 전통적으로 명시 적 종속성을 통해 처리되었지만 소켓 활성화를 통해 더 이상 구성 할 필요가없는 네 가지 서비스에 대해 설명합니다. 다음은 발췌입니다 (길지만 실제로 요점을 만듭니다).

소켓 활성화를 사용하면 어떤 종류의 순서도없이 4 개의 서비스를 모두 동시에 시작할 수 있습니다. 리스닝 소켓 생성이 데몬 외부로 이동하기 때문에 동시에 모두 시작할 수 있으며 서로의 소켓에 바로 연결할 수 있습니다. 즉, 단일 단계에서 /dev/log/run/dbus/system_bus_socket소켓이 생성되고 다음 단계에서는 4 개의 서비스가 모두 동시에 생성됩니다. 그런 다음 D-Bus가 syslog에 기록하려고 할 때 메시지를/dev/log. 소켓 버퍼가 꽉 차지 않는 한 초기화를 위해 원하는 다른 작업을 즉시 진행할 수 있습니다. syslog 서비스가 따라 잡자마자 대기중인 메시지를 처리합니다. 소켓 버퍼가 가득 차면 소켓에 다시 쓸 수있을 때까지 클라이언트 로깅이 일시적으로 차단되고 로그 메시지를 쓸 수있는 순간 계속됩니다. 즉, 서비스 예약은 전적으로 커널에 의해 수행됩니다. 사용자 공간 관점에서 모든 서비스가 동시에 실행되고 한 서비스가 필요한 서비스를 유지할 수없는 경우 다른 서비스가 필요한 경우 일시적으로 차단되지만 즉시 계속됩니다. 이러한 요청이 발송됩니다. 이 모든 것은 완전히 자동이며 사용자 공간에는 보이지 않습니다. 따라서 소켓 활성화를 통해 스타트 업을 대폭 병렬화 할 수 있습니다. 이전에는 엄격하게 직렬화가 필요하다고 생각했던 서비스를 동시에 시작할 수 있습니다. 대부분의 Linux 서비스는 소켓을 통신 채널로 사용합니다. 소켓 활성화를 통해 이러한 채널의 클라이언트와 서버를 동시에 시작할 수 있습니다.

Docker 데몬은 2014 년부터 소켓 활성화를 지원 하므로 사용중인 버전이 이미 지원할 가능성이 높습니다.

배포판이 docker.socket장치를 배송하는지 확인합니다 .이 경우 활성화하기 만하면됩니다.

Docker 데몬이 소켓 활성화를 지원하지만 배포에 docker.socket단위 가 포함되어 있지 않은 경우 설정 방법에 대한 지침 이 자습서 를 참조하십시오.


고려해야 할 또 다른 대안은 Docker에서 podman 으로 전환하는 입니다.

(당신은 단순히 교체, 같은 명령 줄을 사용할 수 있도록 Podman 시도는 드롭 인 (drop-in) 호환 대체 부두 노동자를위한 일하기 dockerpodman.)

이들의 주요 차이점은 podman에는 데몬이 필요하지 않기 때문에 컨테이너를 시작하기 전에 데몬이 작동 할 때까지 기다릴 필요가 없다는 것입니다. Podman은 최신 버전의 Linux 배포에서 패키지로 제공됩니다. 그것과 docker오늘 사용하는 그대로 사용할 수 있다는 사실은 그것을 쉽게 시작할 수 있도록합니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

읽기 전용 파일 시스템에서 새 사용자를 만드는 방법은 무엇입니까?

분류에서Dev

시스템화 된 서비스 파일의 사용자를 변경하는 방법은 무엇입니까?

분류에서Dev

텍스트 파일의 사용자를 Unix 시스템에 추가하는 방법은 무엇입니까?

분류에서Dev

모든 비 시스템 Linux 사용자를 위해 --comment를 인쇄하는 방법은 무엇입니까?

분류에서Dev

waf 빌드 시스템에서 사용자 지정 코드 생성기를 사용하는 방법은 무엇입니까?

분류에서Dev

커널 모드에서 ZwQuerySystemInformation ()을 사용하여 스레드 ID를 얻는 방법은 무엇입니까?

분류에서Dev

동일한 시스템에서 Flutter stable과 dev SDK를 모두 사용하는 방법은 무엇입니까?

분류에서Dev

Pulseaudio에서 시스템 사운드 용 출력 장치를 선택하는 방법은 무엇입니까?

분류에서Dev

Travis CI에서 Devicemapper Docker 파일 시스템 백엔드를 사용하는 방법은 무엇입니까?

분류에서Dev

winapi C / C ++에서 시스템 mui 리소스를 사용하는 방법은 무엇입니까?

분류에서Dev

Sublime Text에서 사용자의 빌드 시스템에 대한 바로 가기를 만드는 방법은 무엇입니까?

분류에서Dev

읽기 전용 파일 시스템에서 Ubuntu를 사용하는 방법은 무엇입니까?

분류에서Dev

사용자 코드에서 마우스 커서를 이동하는 방법은 무엇입니까?

분류에서Dev

단일 사용자 모드에서 vi를 작동시키는 방법은 무엇입니까?

분류에서Dev

컨테이너 내부에서 도커 시스템 ID를 얻는 방법은 무엇입니까?

분류에서Dev

QT에서 API를 사용하여 시스템 밝기를 설정하는 방법은 무엇입니까?

분류에서Dev

나중에 사용하도록 설계된 저장된 쿼리에서 SQL 주입을 방지하는 방법은 무엇입니까? 자동화 시스템

분류에서Dev

ZFS 기반 시스템에서 SSD를 사용하는 방법은 무엇입니까?

분류에서Dev

pentadactyl에서 시스템 클립 보드로 텍스트를 복사하는 방법은 무엇입니까?

분류에서Dev

tmux : 대용량 텍스트를 시스템 클립 보드에 복사하는 방법은 무엇입니까?

분류에서Dev

블랙리스트가 실패 할 때 단일 사용자 부팅에서만 커널 모듈로드를 차단하는 방법은 무엇입니까?

분류에서Dev

도커 컨테이너에서 호스트 IP를 사용하는 방법은 무엇입니까?

분류에서Dev

커피 스크립트에서 Rails 도우미를 사용하는 방법은 무엇입니까?

분류에서Dev

시스템화 된 사용자 서비스를 실행하여 절전 모드 (일명 일시 중지, 최대 절전 모드)에서 트리거하는 방법은 무엇입니까?

분류에서Dev

모든 마커와 사용자를 중앙에 표시하도록 Google지도 확대 / 축소 수준을 설정하는 방법은 무엇입니까?

분류에서Dev

CLI 도구를 사용하여 Linux 시스템에 새 (사용자 정의) MIME 유형을 설치하는 방법은 무엇입니까?

분류에서Dev

Raspbian 내에서 UEFI가 아닌 시스템 용 Ubuntu LiveUSB를 만드는 방법은 무엇입니까?

분류에서Dev

Lubuntu에서 시스템 사운드를 활성화하는 방법은 무엇입니까?

분류에서Dev

모의 라이브러리를 사용하지 않고 iOS Swift에서 시스템 라이브러리를 모의하는 방법은 무엇입니까?

Related 관련 기사

  1. 1

    읽기 전용 파일 시스템에서 새 사용자를 만드는 방법은 무엇입니까?

  2. 2

    시스템화 된 서비스 파일의 사용자를 변경하는 방법은 무엇입니까?

  3. 3

    텍스트 파일의 사용자를 Unix 시스템에 추가하는 방법은 무엇입니까?

  4. 4

    모든 비 시스템 Linux 사용자를 위해 --comment를 인쇄하는 방법은 무엇입니까?

  5. 5

    waf 빌드 시스템에서 사용자 지정 코드 생성기를 사용하는 방법은 무엇입니까?

  6. 6

    커널 모드에서 ZwQuerySystemInformation ()을 사용하여 스레드 ID를 얻는 방법은 무엇입니까?

  7. 7

    동일한 시스템에서 Flutter stable과 dev SDK를 모두 사용하는 방법은 무엇입니까?

  8. 8

    Pulseaudio에서 시스템 사운드 용 출력 장치를 선택하는 방법은 무엇입니까?

  9. 9

    Travis CI에서 Devicemapper Docker 파일 시스템 백엔드를 사용하는 방법은 무엇입니까?

  10. 10

    winapi C / C ++에서 시스템 mui 리소스를 사용하는 방법은 무엇입니까?

  11. 11

    Sublime Text에서 사용자의 빌드 시스템에 대한 바로 가기를 만드는 방법은 무엇입니까?

  12. 12

    읽기 전용 파일 시스템에서 Ubuntu를 사용하는 방법은 무엇입니까?

  13. 13

    사용자 코드에서 마우스 커서를 이동하는 방법은 무엇입니까?

  14. 14

    단일 사용자 모드에서 vi를 작동시키는 방법은 무엇입니까?

  15. 15

    컨테이너 내부에서 도커 시스템 ID를 얻는 방법은 무엇입니까?

  16. 16

    QT에서 API를 사용하여 시스템 밝기를 설정하는 방법은 무엇입니까?

  17. 17

    나중에 사용하도록 설계된 저장된 쿼리에서 SQL 주입을 방지하는 방법은 무엇입니까? 자동화 시스템

  18. 18

    ZFS 기반 시스템에서 SSD를 사용하는 방법은 무엇입니까?

  19. 19

    pentadactyl에서 시스템 클립 보드로 텍스트를 복사하는 방법은 무엇입니까?

  20. 20

    tmux : 대용량 텍스트를 시스템 클립 보드에 복사하는 방법은 무엇입니까?

  21. 21

    블랙리스트가 실패 할 때 단일 사용자 부팅에서만 커널 모듈로드를 차단하는 방법은 무엇입니까?

  22. 22

    도커 컨테이너에서 호스트 IP를 사용하는 방법은 무엇입니까?

  23. 23

    커피 스크립트에서 Rails 도우미를 사용하는 방법은 무엇입니까?

  24. 24

    시스템화 된 사용자 서비스를 실행하여 절전 모드 (일명 일시 중지, 최대 절전 모드)에서 트리거하는 방법은 무엇입니까?

  25. 25

    모든 마커와 사용자를 중앙에 표시하도록 Google지도 확대 / 축소 수준을 설정하는 방법은 무엇입니까?

  26. 26

    CLI 도구를 사용하여 Linux 시스템에 새 (사용자 정의) MIME 유형을 설치하는 방법은 무엇입니까?

  27. 27

    Raspbian 내에서 UEFI가 아닌 시스템 용 Ubuntu LiveUSB를 만드는 방법은 무엇입니까?

  28. 28

    Lubuntu에서 시스템 사운드를 활성화하는 방법은 무엇입니까?

  29. 29

    모의 라이브러리를 사용하지 않고 iOS Swift에서 시스템 라이브러리를 모의하는 방법은 무엇입니까?

뜨겁다태그

보관