다음에서 비디오 녹화 Java 개발자를 위한 Docker 웨비나를 이용할 수 있습니다:
자주 묻는 질문에 대한 답변은 다음과 같습니다:
- 다음과 비교하여 Kubernetes에 대해 어떻게 생각하십니까? 도커 및 도커 스웜? 쿠버네티스 또는 도커 스웜? 어느 쪽을 선택해야 할까요?상황에 따라 다르지만;)Docker Swarm은 Kubernetes에 비해 학습 곡선이 훨씬 더 간단합니다. Kubernetes는 매우 독단적이지만 작동 방식을 이해하면 매우 강력할 수 있습니다. 고려할 만한 몇 가지 사항은 다음과 같습니다:
- 간편한 설정/시작
- 새로운 개념을 배우거나 Docker에 맞춰야 하는 경우
- 기존 워크플로와 어떻게 연계할 수 있나요?
- 단일 또는 다중 마스터
- 여러 클라우드 지원
- 여러 클라우드에 걸친 클러스터
- 동적 스케일링 업/다운
- 노드/컨테이너 장애 시 컨테이너 스케줄 재조정하기
- 플러그형 스케줄러 전략(화려하게 꾸미고 싶은 경우)
- 서비스 검색
- 영구 볼륨
이 질문이 몇 달 전에 나온 질문이라면 Kubernetes 을 선택하는 것이 당연한 선택이었을 것입니다. 하지만 Docker Swarm은 정말 많은 릴리스와 기능을 출시하고 있으며 잘 따라잡고 있습니다. 확인해보세요. 규모에 맞게 Kubernetes 성능을 능가하는 Docker Swarm. 해커뉴스 에서도 이 주제에 대한 흥미로운 토론이 진행 중입니다. 관련 문서도 읽어보세요. 규모에 따른 컨테이너 플랫폼 평가.
또한 다음 사항도 살펴봐야 합니다. 메소스+마라톤 또는 DC/OS.
시작하기 위한 몇 가지 블로그를 소개합니다:
- 예를 들어 정적 리소스를 리패키징하기 위해 각 변경 후 WAR 파일을 번들링하지 않고 대신 압축 해제된 아카이브를 사용하는 경우 docker WildFly 컨테이너에 대해 개발하는 모범 사례는 무엇인가요? 도커는 다음을 허용합니다. 파일 시스템의 디렉터리를 볼륨으로 매핑하기 를 컨테이너에 추가합니다. 이렇게 하면 변경할 때마다 WAR을 번들링할 필요 없이 WildFly 컨테이너에 대해 애플리케이션을 개발하는 데 사용할 수 있습니다. 이에 대한 자세한 설명은 Eclipse에서 WildFly Docker로 배포하기.
- IntelliJ Idea는 Mac OS/Windows에서 네이티브 도커를 지원하나요?Andrey: 아직은 아니지만 로드맵에 포함되어 있습니다.
- 환경 변수 제공의 장단점은 무엇인가요? 컨설턴트:컨설턴트와 같은 링크와 환경 변수 제공의 장단점은 무엇인가요? 도커 링크는 레거시이므로 환경 변수 및 도커 네트워킹 를 사용하는 것이 새 애플리케이션을 구축하는 데 권장됩니다. 자세한 내용은 아래의 다른 답변에서 확인하세요.
- 컨테이너에서 실행 중인 Java 프로세스에 디버거를 연결하려면 어떻게 해야 하나요? 다니엘 브라이언트의 훌륭한 블로그 게시물을 읽어보세요. Docker에서 실행되는 Java 애플리케이션 디버깅하기.
- 도커와 방랑자의 관계는 무엇인가요? 둘 다 함께 사용할 수 있나요? 도커가 배그랜트를 대체할 수 있나요?Docker와 Vagrant는 서로 다른 문제를 해결하며, Vagrant를 사용하면 호스트 머신과 독립적으로 가상 머신을 프로비저닝할 수 있습니다. 이는 VirtualBox와 같은 하이퍼바이저를 사용하여 수행됩니다. 가상 머신에 대한 정의는
방랑자 파일
를 사용하여 VM을 설정하는 방법과 환경을 프로비저닝할 스크립트를 정의합니다. 이러한 VM은 Linux, Windows 또는 Mac에서 생성할 수 있으며, Docker를 사용하면 컨테이너를 생성할 수 있습니다. 이는 다음을 기반으로 하는 네이티브 Linux 기술입니다.lxc
올 여름에 Windows Server 2016에 출시됩니다. Mac용 Docker는 Mac용 개발 환경을 제공하며, Docker 엔진을 프로비저닝해야 하는 경우 다음을 수행할 수 있습니다.방랑자 파일
를 사용하여 Ubuntu 또는 CentOS를 프로비저닝합니다. 그런 다음apt get
또는yum 설치
스크립트를 실행하여 Docker Engine을 설치하세요. 새 버전의 Docker Engine을 사용할 수 있는 경우 Vagrant 이미지도 업데이트하거나 스크립트를 다시 실행해야 합니다. 또 다른 옵션은 Docker Machine을 사용하고 VirtualBox 드라이버를 사용하여 Docker Engine이 설치될 머신을 만드는 것입니다. 이 경우도커 머신
스크립트에는 단순히 도커 엔진을 업그레이드하는 업그레이드와 같은 명령이 있으며, 좀 더 흥미로운 논의는 다음에서 확인할 수 있습니다. 스택오버플로우 그리고 Quora이 전체 방정식을 더욱 흥미롭게 만들기 위해, Vagrant는 Docker 컨테이너로 백업할 수 있습니다. 가상 머신 대신! - IntelliJ IDEA 15에서 Docker 도구 창이 누락되었습니다. 플러그인이 설치되었습니다.Andrey: 별도의 도구 창은 2016.1에 추가되었습니다. 그 전에는 Docker가 애플리케이션 서버 도구 창의 일부였습니다.
- index.jsp를 변경하고 이미지를 다시 빌드하지 않고 브라우저에서 변경 사항을 확인할 수 있나요? IntelliJ IDEA의 리소스 업데이트 작업의 정신에 따라? 안드레이 좋은 아이디어 같네요. 트래커에 기능 요청으로 제출해 주세요: https://youtrack.jetbrains.com/issues/IDEA.
- VirtualBox보다 xhyve/Hyper-V를 사용하면 성능이 향상되나요? Mac용 도커는 알파인 리눅스 배포판의 도커 엔진을 Mac OS X용 xhyve 가상 머신 또는 Windows의 Hyper-V에서 실행합니다. xhyve는 다음을 기반으로 구축됩니다.
Hypervisor.framework
를 지원합니다. 유형 2 하이퍼바이저가 아닌 네이티브 기술을 사용할 때의 주요 장점은 네이티브 룩앤필, 더 나은 성능 및 더 나은 볼륨 관리입니다.자세한 내용은 (3개월 전 블로그)에서 읽어보세요. xhyve 대 VirtualBox 드라이버 벤치마크. 이 영역은 빠르게 진화하고 있으며 다음을 주시하십시오. blog.docker.com 에서 자세한 내용을 확인하세요. - In 도커 컴포즈컨테이너 하나만 업데이트하면 '링크'가 손실되나요, 아니면 모든 컨테이너를 다시 배포해야 하나요? Docker 링크는 이제 레거시입니다. 애플리케이션을 마이그레이션하여 다음을 사용하도록 하는 것이 좋습니다. 도커 네트워킹. . 링크와 네트워킹의 주요 차이점 가 있습니다:
- 서로 다른 물리적 또는 가상 호스트에서 컨테이너를 서로 연결하세요.
- 네트워킹을 사용하는 컨테이너는 다른 컨테이너와의 연결을 중단하지 않고도 쉽게 중지, 시작 및 재시작할 수 있습니다.
- 컨테이너를 먼저 만들어야만 연결할 수 있는 것은 아닙니다. 네트워킹을 사용하면 컨테이너를 원하는 순서대로 생성하고 컨테이너 이름을 사용하여 서로를 검색할 수 있습니다.
- 호스트에서 실행 중인 컨테이너에 호스트 포트를 노출하려면 어떻게 해야 하나요? 컨테이너의 포트는 다음을 사용하여 호스트에 노출됩니다.
-p
도커를 실행합니다. 호스트의 포트는 다음을 사용하여 액세스할 수 있습니다.:
를 직접 입력하세요. - 공식 Java Docker 이미지(OpenJDK 기반)는 TCK 인증을 받지 않았습니다. 이 경우 어떻게 해야 하나요? OpenJDK는 Java SE의 참조 구현이므로 TCK를 준수합니다. 공식 자바 도커 이미지 는 OpenJDK.Azul 시스템을 기반으로 합니다. OpenJDK에 대한 상업적 지원 제공. 또 다른 옵션은 Azul 시스템에서 사용 가능한 OpenJDK 이미지. 이는 최신 버전의 OpenJDK 8, 7 및 6 플랫폼에 대한 완전한 테스트와 호환성 검증을 거친 빌드입니다.오라클은 JDK용 Docker파일을 게시하지만 이미지는 게시하지 않습니다. 이 정의에서는
오라클 리눅스:최신
를 기본 이미지로 사용하거나우분투
,센토스
또는알파인
. 이 경우 자체 Docker파일을 만들 수 있습니다. Docker에서 Java를 실행하시나요? 법을 위반하고 있습니다. 는 오라클 JDK 기반 이미지를 Docker Hub로 푸시해서는 안 되는 이유를 잘 요약한 글입니다. - WildFly가 설치된 컨테이너에서 다른 서버의 DB가 있는 컨테이너를 사용하려면 어떻게 해야 하나요? 도커 링크 는 레거시이며 컨테이너가 동일한 호스트에서 각각 통신하는 것만 허용합니다. 두 개의 컨테이너가 통신하는 데 권장되는 방법은 도커 네트워크기본적으로 도커 스웜 클러스터는 오버레이 네트워크 를 사용하면 여러 컨테이너가 호스트 간에 통신할 수 있습니다.WildFly 및 Couchbase를 사용하는 멀티 컨테이너 및 멀티 호스트 애플리케이션 는 각 컨테이너가 Docker Swarm 클러스터의 두 개의 별도 호스트에서 실행되는 Couchbase와 WildFly를 연결하는 방법을 보여줍니다. 다음은 참조용 Compose 파일입니다:
123456789101112131415mycouchbase:컨테이너_이름: "db"이미지: 카우치베이스/서버포트:- 8091:8091- 8092:8092- 8093:8093- 11210:11210mywildfly:이미지: arungupta/wildfly-관리자환경:- COUCHBASE_URI=db포트:- 8080:8080- 9990:9990
다음은 몇 가지 참고 자료입니다:
- IntelliJ 및 Docker에 대한 자세한 내용은 다음에서 확인하세요. jetbrains.com/idea/docker/
- 자기 주도형 자바 개발자용 도커 워크샵
- Java 개발자를 위한 Docker 소개 슬라이드
- Docker 및 IntelliJ 데모용 스크립트 동영상에 표시된
- Docker 문서
- 컨테이너의 카우치베이스