사용자 도구

사이트 도구


docker

차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

양쪽 이전 판 이전 판
다음 판
이전 판
다음 판 양쪽 다음 판
docker [2017/03/28 09:05]
kwon37xi [참조]
docker [2019/03/25 15:27]
kwon37xi
줄 21: 줄 21:
 docker run [option] [image-name] {[실행명령]} docker run [option] [image-name] {[실행명령]}
 </code> </code>
-    * ''-i -t'' : interactive, pseudo-tty : 실행된 명령에서 인터랙티브하게 입력/출력 가능+    * ''-i -t'' or ''-it'' : interactive, pseudo-tty : 실행된 명령에서 인터랙티브하게 입력/출력 가능
     * ''%%--%%name [container-name]'' 컨테이너 이름지정     * ''%%--%%name [container-name]'' 컨테이너 이름지정
     * ''-d'' : detached 상태로(background로) 실행     * ''-d'' : detached 상태로(background로) 실행
 +    * ''%%--%%rm'' : 기존에 이미 도커 컨텐이너가 존재하면 삭제하고 다시 실행
     * ''-v $HOSTDIR:$DOCKERDIR'' : HOST의 디렉토리를 컨테이너의 디렉토리에 마운트     * ''-v $HOSTDIR:$DOCKERDIR'' : HOST의 디렉토리를 컨테이너의 디렉토리에 마운트
     * ''-p 127.0.0.1:$HOSTPORT:$CONTAINERPORT'' : HOST의 특정포트로 들어오는 요청을 Container의 특정포트로 보내기.<code sh>     * ''-p 127.0.0.1:$HOSTPORT:$CONTAINERPORT'' : HOST의 특정포트로 들어오는 요청을 Container의 특정포트로 보내기.<code sh>
줄 30: 줄 31:
 # 앞의 "127.0.0.1:" 생략 가능. # 앞의 "127.0.0.1:" 생략 가능.
 </code> </code>
 +    * ''%%--%%restart=[option]'' : ''no'',''on-failure[:max-retries]'',''always'',''unless-stopped'' 등을 지정하면 해당 컨테이너 자동 리스타트를 옵션으로 지정할 수 있다. 개발환경에서는 ''unless-stopped''(명시적 중지가 아니면 자동 재시작) 정도이면 될 듯.
   * ''docker ps -a'' : 모든 컨테이너 목록 출력. ''-a''는 전체 목록, ''-a''없으면 현재 실행중인 것들만.   * ''docker ps -a'' : 모든 컨테이너 목록 출력. ''-a''는 전체 목록, ''-a''없으면 현재 실행중인 것들만.
   * ''docker start [container-name|id]'' : 컨테이너 시작   * ''docker start [container-name|id]'' : 컨테이너 시작
줄 40: 줄 42:
   * ''docker stop [container-name]'' : 컨테이너 정지   * ''docker stop [container-name]'' : 컨테이너 정지
   * ''docker rm [container-name]''   * ''docker rm [container-name]''
 +  * [[https://stackoverflow.com/questions/17236796/how-to-remove-old-docker-containers|불필요한 Container, Image 삭제]]<code sh> 
 +docker image prune 
 +docker container prune 
 +# 위 둘을 합친게 volume인가? 
 +docker volume prune -f 
 +</code> 
 +  * [[https://docs.docker.com/engine/reference/commandline/volume_prune/|docker volume prune | Docker Documentation]]
 ==== Volume Mount ==== ==== Volume Mount ====
   * host 의 diretory를 docker container에 마운트하기   * host 의 diretory를 docker container에 마운트하기
줄 50: 줄 58:
   * ''docker inspect [container-name]'' 으로 마운팅 상황 확인 가능   * ''docker inspect [container-name]'' 으로 마운팅 상황 확인 가능
   * Host 디렉토리를 마운트하려면 ''-v /host/dir:/container/dir''로 host 디렉토리를 container의 특정 디렉토리에 마운팅   * Host 디렉토리를 마운트하려면 ''-v /host/dir:/container/dir''로 host 디렉토리를 container의 특정 디렉토리에 마운팅
-  * +  * [[[[https://stackoverflow.com/questions/41485217/mount-current-directory-as-a-volume-in-docker-on-windows-10|현재 디렉토리 마운팅 script]]<code sh> 
 +#The following two options will work on both PowerShell and Linux: 
 + 
 +docker run --rm -it -v ${PWD}:/usr/src/project gcc:4.9 
 + 
 +docker run --rm -it -v $(pwd):/usr/src/project gcc:4.9 
 +</code>
 ==== Docker Proxy ==== ==== Docker Proxy ====
   * Linux에서 Docker Proxy 프로세스가 뜨는 것을 막으려면, 커널 2.6을 제외하고,   * Linux에서 Docker Proxy 프로세스가 뜨는 것을 막으려면, 커널 2.6을 제외하고,
줄 57: 줄 71:
 </code> </code>
  
 +<code sh>
 +/etc/default/docker 파일에 DOCKER_OPTS 을 추가한 후 docker daemon 을 재시작하면 된다. 
 +
 +$ cat /etc/default/docker
 +DOCKER_OPTS="--userland-proxy=false"
 +</code>
 +  * [[http://bluese05.tistory.com/53|Docker Network 구조(3) - container 외부 통신 구조]]
 +
 +==== /etc/hosts ====
 +  * [[https://docs.docker.com/engine/reference/run/#managing-etchosts|Docker run reference | Docker Documentation - managing-etc/hosts]]
 +<code sh>
 +docker run --add-host="some.example.com:127.17.0.1"
 +</code>
 ===== 오류 대응 ===== ===== 오류 대응 =====
 ==== centos ==== ==== centos ====
 ''unable to remount sys readonly: unable to mount sys as readonly max retries reached'' 오류를 만나면 ''unable to remount sys readonly: unable to mount sys as readonly max retries reached'' 오류를 만나면
-''/etc/sysconfig/docker'' 파일에 ''--exec-driver=lxc'' 추가 후 docker 재시작.+''/etc/sysconfig/docker'' 파일에 ''%%--%%exec-driver=lxc'' 추가 후 docker 재시작.
 <code sh> <code sh>
 other_args="--selinux-enabled --exec-driver=lxc" other_args="--selinux-enabled --exec-driver=lxc"
줄 67: 줄 94:
  
 ===== Docker & Java / JVM / JDK ===== ===== Docker & Java / JVM / JDK =====
 +  * [[java:openjdk:docker|OpenJdk Docker]]
 +  * [[https://www.javacodegeeks.com/2017/12/docker-java-developers-develop-docker.html|Docker for Java Developers: Develop on Docker]]
   * Docker의 JVM에서 ''jmap'' 으로 Heap Dump를 뜰 수 없다.   * Docker의 JVM에서 ''jmap'' 으로 Heap Dump를 뜰 수 없다.
   * [[https://jarekprzygodzki.wordpress.com/2016/12/19/jvm-in-docker-and-ptrace_attach/|JVM in Docker and PTRACE_ATTACH]]를 참조하여 Docker 실행시에 ''%%--%%cap-add=SYS_PTRACE'' 옵션을 준다.   * [[https://jarekprzygodzki.wordpress.com/2016/12/19/jvm-in-docker-and-ptrace_attach/|JVM in Docker and PTRACE_ATTACH]]를 참조하여 Docker 실행시에 ''%%--%%cap-add=SYS_PTRACE'' 옵션을 준다.
줄 73: 줄 102:
 Caused by: sun.jvm.hotspot.debugger.DebuggerException: Can't attach to the process: ptrace(PTRACE_ATTACH, ..) failed for 142: Operation not permitted Caused by: sun.jvm.hotspot.debugger.DebuggerException: Can't attach to the process: ptrace(PTRACE_ATTACH, ..) failed for 142: Operation not permitted
 </code> </code>
 +  * [[https://dzone.com/articles/running-a-jvm-in-a-container-without-getting-kille|Running a JVM in a Container Without Getting Killed]] Java 8u131 에서 Docker의 메모리할당량과 관련된 옵션 사용가능
 +    * [[java:options|Oracle(SUN) JVM Options]] 참조
 +  * [[https://dzone.com/articles/improved-docker-container-integration-with-java-10|Improved Docker Container Integration With Java 10 - DZone Java]]
 +
 +===== Windows 10 & Docker CE=====
 +  * Windows 10과 Docker 사용시 Hyper-V 에 오류를 발생시키는 것으로 보임 - 정확하지는 않음<code>
 +vmswitch.sys DRIVER_IRQL_NOT_LESS_OR_EQUAL  어쩌구 오류
 +</code>
 +  * sqlserver 2017 을 docker로 실행했을 때 오류가 발생하는 것으로 예상됨.
 +  * https://github.com/Microsoft/mssql-docker/issues/88#issucomomment-314618471
  
 ===== Mac OS X 성능 문제 ===== ===== Mac OS X 성능 문제 =====
   * [[https://docs.docker.com/docker-for-mac/osxfs/#performance-issues-solutions-and-roadmap|Mac OS Docker Preformance Issue]]   * [[https://docs.docker.com/docker-for-mac/osxfs/#performance-issues-solutions-and-roadmap|Mac OS Docker Preformance Issue]]
   * 볼륨 마운트시에 엄청 느려지는 현상이 2017년 현재 존재하는 듯.   * 볼륨 마운트시에 엄청 느려지는 현상이 2017년 현재 존재하는 듯.
 +
 +===== Docker Log rotation =====
 +  * ''/var/lib/docker/containers/*/*.log'' 에 STDOUT 이 모두 계속 출력되므로 log rotate가 필요하다.
 +  * [[http://mcchae.egloos.com/11259352|[Docker] 로그 rotate]]
 +
 +===== CIDR 변경 =====
 +  * [[https://bluese05.tistory.com/16|docker0 IP 및 CIDR 변경하기]]
 +  * [[https://docs.docker.com/v17.09/engine/userguide/networking/default_network/custom-docker0/|Customize the docker0 bridge | Docker Documentation]]
 +
 ===== 참조 ===== ===== 참조 =====
   * [[http://pyrasis.com/docker.html|가장 빨리 만나는 Docker]]   * [[http://pyrasis.com/docker.html|가장 빨리 만나는 Docker]]
줄 86: 줄 134:
   * [[http://www.dasblinkenlichten.com/docker-networking-101-host-mode/|Docker Networking 101 – Host mode - Das Blinken Lichten]]   * [[http://www.dasblinkenlichten.com/docker-networking-101-host-mode/|Docker Networking 101 – Host mode - Das Blinken Lichten]]
   * [[https://blog.2dal.com/2017/03/27/docker-and-oom-killer/|Docker and OOM(Out Of Memory) Killer – asbubam's blog]]   * [[https://blog.2dal.com/2017/03/27/docker-and-oom-killer/|Docker and OOM(Out Of Memory) Killer – asbubam's blog]]
 +  * [[https://spoqa.github.io/2017/06/22/docker-tip.html|개발 환경에서 유용한 Docker 명령어 소개]]
docker.txt · 마지막으로 수정됨: 2024/02/15 09:58 저자 kwon37xi