docker
$ whoami
$ sudo usermod -aG docker [username]
$ id
$ id [username]
id
: runtime 상태id [username]
: 현재 설정 의미id
에서 docker 확인 가능~/.bash_aliase
에 자주 사용하는 docker ps 명령은 alias에 등록하여 사용하면 편하다$ docker ps
$ docker ps -a
docker는 기본적으로 작동중인 container를 보여준다
exited (0) : 성공
$ docker run hello-world
$ docker ps -a
$ docker rm f693e0e1fabc
$ docker ps -a
$ docker run --name hello-world_01 hello-world
$ docker ps -a
$ docker rm hello-world_01
$ for ii in {1..10}; do docker run --name hello-world_${ii} hello-world; done
docker CLI의 option에는 filter 기능 제공 (모든 명령어에 제공되는 것은 아니다)
-f
, --filter
로 사용
name에 hello가 들어간 container 검색
$ docker ps -a -f 'name=hello'
$ docker ps -af 'name=hello-world_[1-3]'
$ docker ps -af 'name=hello-world_[1|4|6]'
$ docker ps -af 'name=hel' --format "{{.ID}} {{.Image}} {{.Status}} {{.Names}}"
$ docker ps -af 'name=hello' --format "{{.Names}}"
$ docker rm hello-world_10
$ docker ps -af 'name=hello' --format "{{.Names}}" | xargs docker r
$ docker rmi hello-world
$ docker ps -af 'ancestor=hello-world' --format {{.Names}} | xargs docker rm
$ docker rmi hello-world
$ docker image ls
$ docker image pull nginx
$ docker image ls
$ docker image inspect nginx
$ docker image inspect -f '{{.Config.Env}}' nginx
$ docker image inspect -f '{{json .Config.Env}}' nginx
$ docker image save nginx > docker_nginx_1.25.3.tar
$ file docker_nginx_1.25.3.tar
$ docker image ls
$ docker image rm nginx
$ docker image ls
$ docker image load < docker_nginx_1.25.3.tar
새롭게 container를 실행하는 명령
$ docker ps -a --format '{{.ID}}' | xargs docker rm
$ docker run -it --name ubuntu_top ubuntu "top" "-d 1"
-it
ubuntu_top
이름의 container 생성ubuntu
top
-d 1
$ docker run -it --name ubuntu_top2 ubuntu "top" "-d 1"
기존에 존재하는 container에서 실행하는 명령
$ docker exec -it ubuntu_top "-d 0.2"
$ docker exec -it ubuntu_top bash
# ps -ef
$ docker inspect nginx
$ docker run --rm -p 8080:80/tcp --name nginx_8080 nginx
-rm
: container가 종료되면 자동으로 삭제 -p
: port binding8080:80
host port 번호 : container port 번호 $ ss -nlt 'sport = :8080'
-n
: numeric-l
: listen-t
: tcp$ curl 127.0.0.1:8080
-d
: detach$ docker run -d --rm -p 8080:80/tcp --name nginx_8080 nginx
$ docker logs nginx_8080
$ docker logs -f nginx_8080
-f
옵션을 사용$ docker run --rm -itd --name ubuntu_bash ubuntu bash
$ docker attach ubuntu_bash
-v
, --volume
을 사용--mount
이를 사용하는 경우가 많다 $ docker run --rm -it nginx bash
# alias ls='ls --color' //ls를 설정하여 색상이 이쁘게 나오도록
# ls
# cd conf.d/
# ls
.conf
: 메인 설정파일.d
: additional 파일들이 있다# more default.conf
location /
: root를 의미/usr/share/nginx/html
가 web document root이다. 여기를 외부 host에서 mount로 binding 해본다$ mkdir ~/nginx_doc_root
$ readlink -f ~/nginx_doc_root
$ echo "Hello Document rook dir" > ~/nginx_doc_root/hello.txt
$ ls ~/nginx_doc_root/
$ docker run --rm -d -p 8080:80/tcp -v /home/nahye/nginx_doc_root:/usr/share/nginx/html --name nginx_8080 nginx
--v host_file:container_file
: host_file을 container_file에 binding
$ curl 127.0.0.1:8080
$ curl http://127.0.0.1:8080/hello.txt
$ echo "Hello world" >> ~/nginx_doc_root/hello.txt
$ curl http://127.0.0.1:8080/hello.txt
$ docker stop nginx_8080
--rm
옵션이 있었기 때문에 stop하면 자동으로 container가 삭제된다$ docker run --rm -d -p 8080:80/tcp --mount type=bind,src=/home/nahye/nginx_doc_root,dst=/usr/share/nginx/html --name nginx_8080 nginx
-e
, --env
사용$ docker run --rm -it --name ubuntu_bash ubuntu bash
# echo $LANG
# exit
$ docker run --rm -it -e LANG=en_US.utf8 --name ubuntu_bash ubuntu bash
# echo $LANG
# exit
$ docker run -d -p 8080:80/tcp --mount type=bind,src=/home/nahye/nginx_doc_root,dst=/usr/share/nginx/html --name nginx_8080 nginx
$ docker ps
$ docker stop nginx_8080 && docker ps -a
$ docker start nginx_8080 && docker ps
내용 | option | 설명 |
---|---|---|
detach mode | -d | |
stdio 사용 | -it | 이 경우에만 ^P^Q을 통해 잠시 밖으로 나갈 수 있다 |
종료시 제거 | --rm | |
binding(port) | -p host_port:container_port | |
binding(file) | --mount ... or -v .... | |
binding(env.) | -e KEY=value or --env-file ... | file로 KEY=value를 만들어놓고 그 file을 불러온다(--env-file) |