사용자 도구

사이트 도구


docker

차이

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

차이 보기로 링크

양쪽 이전 판 이전 판
다음 판
이전 판
docker [2018/11/30 15:23]
kwon37xi [Container 관리]
docker [2020/07/02 09:18] (현재)
kwon37xi [Container 관리]
줄 6: 줄 6:
   * [[https://​github.com/​wsargent/​docker-cheat-sheet|Docker Cheat Sheet]]   * [[https://​github.com/​wsargent/​docker-cheat-sheet|Docker Cheat Sheet]]
   * [[docker:​install_ubuntu|Docker Install on Ubuntu Linux]]   * [[docker:​install_ubuntu|Docker Install on Ubuntu Linux]]
 +  * [[docker:​install_redhat|Docker Install on Redhat/​CentOS/​Amazon Linux]]
 +  * [[docker:​install_arch|Docker install on Arch/​Manjaro]]
 +  * [[docker:​install_debian|Docker install on Debian Linux]]
 +  * [[docker:​runlike|docker runlike]]
 +  * [[docker:​distroless|distroless]]
 +  * [[linux:​ctop|ctop]]
  
 ===== Usage ===== ===== Usage =====
 +==== 설치 후 테스트 ====
 +<code sh>
 +docker run hello-world
 +</​code>​
 +
 ==== Docker Hub Search ==== ==== Docker Hub Search ====
 <code sh> <code sh>
줄 17: 줄 28:
   * ''​docker images''​ : 이미지 목록보기   * ''​docker images''​ : 이미지 목록보기
   * ''​docker rmi [image-name]:​[tag]''​ : 이미지 삭제. ''​tag''​ 생략시 버전 상관없이 모두 삭제.   * ''​docker rmi [image-name]:​[tag]''​ : 이미지 삭제. ''​tag''​ 생략시 버전 상관없이 모두 삭제.
 +
 +
 ==== Container 관리 ==== ==== Container 관리 ====
   * ''​run''​ 명령으로 컨테이너 생성<​code sh>   * ''​run''​ 명령으로 컨테이너 생성<​code sh>
줄 24: 줄 37:
     * ''​%%--%%name [container-name]''​ 컨테이너 이름지정     * ''​%%--%%name [container-name]''​ 컨테이너 이름지정
     * ''​-d''​ : detached 상태로(background로) 실행     * ''​-d''​ : detached 상태로(background로) 실행
-    * ''​--rm''​ : 기존에 이미 도커 컨텐이너가 존재하면 삭제하고 다시 실행+    * ''​%%--%%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>
줄 33: 줄 46:
     * ''​%%--%%restart=[option]''​ : ''​no'',''​on-failure[:​max-retries]'',''​always'',''​unless-stopped''​ 등을 지정하면 해당 컨테이너 자동 리스타트를 옵션으로 지정할 수 있다. 개발환경에서는 ''​unless-stopped''​(명시적 중지가 아니면 자동 재시작) 정도이면 될 듯.     * ''​%%--%%restart=[option]''​ : ''​no'',''​on-failure[:​max-retries]'',''​always'',''​unless-stopped''​ 등을 지정하면 해당 컨테이너 자동 리스타트를 옵션으로 지정할 수 있다. 개발환경에서는 ''​unless-stopped''​(명시적 중지가 아니면 자동 재시작) 정도이면 될 듯.
   * ''​docker ps -a''​ : 모든 컨테이너 목록 출력. ''​-a''​는 전체 목록, ''​-a''​없으면 현재 실행중인 것들만.   * ''​docker ps -a''​ : 모든 컨테이너 목록 출력. ''​-a''​는 전체 목록, ''​-a''​없으면 현재 실행중인 것들만.
 +    * ''​%%--%%no-trunc''​ 명령줄 줄이지 않고 보여주기
   * ''​docker start [container-name|id]''​ : 컨테이너 시작   * ''​docker start [container-name|id]''​ : 컨테이너 시작
   * ''​docker restart [container-name]''​ : 재시작   * ''​docker restart [container-name]''​ : 재시작
줄 40: 줄 54:
   * ''​docker exec [container-name] [명령] ...''​ : 외부에서 컨테이너 안의 명령 실행하기   * ''​docker exec [container-name] [명령] ...''​ : 외부에서 컨테이너 안의 명령 실행하기
   * ''​docker exec -it [container-name] /​bin/​bash''​ : 외부에서 컨네이너 안의 bash interactive 하게 실행   * ''​docker exec -it [container-name] /​bin/​bash''​ : 외부에서 컨네이너 안의 bash interactive 하게 실행
 +  * ''​docker exec -it -u [user]:​[group] [container-name] /​bin/​bash''​ : docker 컨테이너 안에 있는 특정 user:group 으로 접속
   * ''​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>   * [[https://​stackoverflow.com/​questions/​17236796/​how-to-remove-old-docker-containers|불필요한 Container, Image 삭제]]<​code sh>
 +# 이름없는 모든 이미지 삭제
 docker image prune docker image prune
 +
 +# 중지된 모든 컨테이너 삭제
 docker container prune docker container prune
-위 둘을 합친게 volume인가?​+ 
 +사용하지 않는 모든 도커 볼륨 삭제
 docker volume prune -f docker volume prune -f
 +
 +# 사용하지 않는 모든 도커 네트워크 삭제
 +docker network prune
 +
 +# 위 모든 명령을 합친 것. 이것에 의해 삭제되지 않는 다는 것은 사용중인 컨테이너,​ 이미지, 기타 등등이라는 의미
 +docker system prune -a
 </​code>​ </​code>​
   * [[https://​docs.docker.com/​engine/​reference/​commandline/​volume_prune/​|docker volume prune | Docker Documentation]]   * [[https://​docs.docker.com/​engine/​reference/​commandline/​volume_prune/​|docker volume prune | Docker Documentation]]
줄 58: 줄 83:
   * ''​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을 제외하고,​
줄 99: 줄 130:
     * [[java:​options|Oracle(SUN) JVM Options]] 참조     * [[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]]   * [[https://​dzone.com/​articles/​improved-docker-container-integration-with-java-10|Improved Docker Container Integration With Java 10 - DZone Java]]
 +  * [[https://​dzone.com/​articles/​pitfalls-in-jvm-and-docker-defaults|Pitfalls in JVM and Docker Defaults - DZone Java]]
  
 ===== Windows 10 & Docker CE===== ===== Windows 10 & Docker CE=====
줄 114: 줄 146:
   * ''/​var/​lib/​docker/​containers/​*/​*.log''​ 에 STDOUT 이 모두 계속 출력되므로 log rotate가 필요하다.   * ''/​var/​lib/​docker/​containers/​*/​*.log''​ 에 STDOUT 이 모두 계속 출력되므로 log rotate가 필요하다.
   * [[http://​mcchae.egloos.com/​11259352|[Docker] 로그 rotate]]   * [[http://​mcchae.egloos.com/​11259352|[Docker] 로그 rotate]]
 +
 +===== CIDR 변경 =====
 +  * docker 의 기본 IP 대역인 ''​172.17.0.0/​16''​가 자신의 네트워크환경과 충돌 할 경우 변경이 필요하다.
 +  * 이것 때문에 동일 대역대의 다른 장비에 접근이 안되는 경우가 발생한다.
 +  * ''/​etc/​docker/​daemon.json''​ 을 생성 혹은 편집하는 방법. 완료후 ''​sudo service docker restart''<​code json>
 +
 +{
 +  "​default-address-pools":​ [
 +    {
 +      "​scope":​ "​local",​
 +      "​base":​ "​192.168.0.0/​16",​
 +      "​size":​ 24
 +    }
 +  ]
 +}
 +</​code>​
 +  * [[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]]
 +
 +===== Localhost 접속 =====
 +  * 보통은 그냥 ''​192.168.x.x''​로 접속하면 될 듯.
 +  * [[https://​nickjanetakis.com/​blog/​docker-tip-35-connect-to-a-database-running-on-your-docker-host|Docker Tip #35: Connect to a Database Running on Your Docker Host — Nick Janetakis]]
 +
 +===== Gnome Shell Docker Integration =====
 +  * https://​github.com/​gpouilloux/​gnome-shell-extension-docker
 +  * https://​extensions.gnome.org/​extension/​1065/​docker-status/​
  
 ===== 참조 ===== ===== 참조 =====
docker.1543559038.txt.gz · 마지막으로 수정됨: 2018/11/30 15:23 저자 kwon37xi