docker run hello-world
docker search [검색어]
docker pull [image-name]:[tag]
: 이미지의 tag
버전을 다운로드함. latest
는 최신버전.docker images
: 이미지 목록보기docker rmi [image-name]:[tag]
: 이미지 삭제. tag
생략시 버전 상관없이 모두 삭제.run
명령으로 컨테이너 생성docker run [option] [image-name] {[실행명령]}
-i -t
or -it
: interactive, pseudo-tty : 실행된 명령에서 인터랙티브하게 입력/출력 가능--name [container-name]
컨테이너 이름지정-d
: detached 상태로(background로) 실행--rm
: 기존에 이미 도커 컨텐이너가 존재하면 삭제하고 다시 실행-v $HOSTDIR:$DOCKERDIR
: HOST의 디렉토리를 컨테이너의 디렉토리에 마운트-p 127.0.0.1:$HOSTPORT:$CONTAINERPORT
: HOST의 특정포트로 들어오는 요청을 Container의 특정포트로 보내기.# 11211 port로 실행되는 memcached docker 이미지가 있다고 할 때 아래 명령으로 컨테이너 생성하면 docker run -d -p 127.0.0.1:11211:11211 --name memcachedtest memcached # 앞의 "127.0.0.1:" 생략 가능.
--restart=[option]
: no
,on-failure[:max-retries]
,always
,unless-stopped
등을 지정하면 해당 컨테이너 자동 리스타트를 옵션으로 지정할 수 있다. 개발환경에서는 unless-stopped
(명시적 중지가 아니면 자동 재시작) 정도이면 될 듯.docker ps -a
: 모든 컨테이너 목록 출력. -a
는 전체 목록, -a
없으면 현재 실행중인 것들만.--no-trunc
명령줄 줄이지 않고 보여주기docker start [container-name|id]
: 컨테이너 시작docker restart [container-name]
: 재시작docker attach [container-name]
: 컨테이너에 접속exit
혹은 Ctrl-D
사용시 컨테이너 정지Ctrl-P, Ctrl-Q
를 차례로 누르면 실행상태로 그냥 빠져나옴.docker exec [container-name] [명령] …
: 외부에서 컨테이너 안의 명령 실행하기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 rm [container-name]
# 이름없는 모든 이미지 삭제 docker image prune # 중지된 모든 컨테이너 삭제 docker container prune # 사용하지 않는 모든 도커 볼륨 삭제 docker volume prune -f # 사용하지 않는 모든 도커 네트워크 삭제 docker network prune # 위 모든 명령을 합친 것. 이것에 의해 삭제되지 않는 다는 것은 사용중인 컨테이너, 이미지, 기타 등등이라는 의미 docker system prune -a
/bin/sh
말고 알고 있다면 해당 shell 을 지정.docker run --rm -it --entrypoint /bin/sh <image-name-or-id>
<image-name-or-id>
뒤의 내용을 인자로 전달함.docker run --rm --entrypoint /bin/cat <image-name-or-id> "/etc/redhat-release"
run -v /volume/dir
: /volume/dir
을 컨테이너에 생성, 실제 저장될 위치는 inspect
로 확인docker run -d -P --name web -v /webapp training/webapp python app.py
docker inspect [container-name]
으로 마운팅 상황 확인 가능-v /host/dir:/container/dir
로 host 디렉토리를 container의 특정 디렉토리에 마운팅#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
docker daemon --userland-proxy=false
/etc/default/docker 파일에 DOCKER_OPTS 을 추가한 후 docker daemon 을 재시작하면 된다. $ cat /etc/default/docker DOCKER_OPTS="--userland-proxy=false"
docker run --add-host="some.example.com:127.17.0.1"
unable to remount sys readonly: unable to mount sys as readonly max retries reached
오류를 만나면
/etc/sysconfig/docker
파일에 --exec-driver=lxc
추가 후 docker 재시작.
other_args="--selinux-enabled --exec-driver=lxc"
jmap
으로 Heap Dump를 뜰 수 없다.--cap-add=SYS_PTRACE
옵션을 준다.# 설정 안했을 경우 관련 오류 Caused by: sun.jvm.hotspot.debugger.DebuggerException: Can't attach to the process: ptrace(PTRACE_ATTACH, ..) failed for 142: Operation not permitted
vmswitch.sys DRIVER_IRQL_NOT_LESS_OR_EQUAL 어쩌구 오류
/var/lib/docker/containers/*/*.log
에 STDOUT 이 모두 계속 출력되므로 log rotate가 필요하다.192.168.x.x
로 접속하면 될 듯./var/lib/docker/volumes/
에 볼륨 데이터 저장됨.