docker image
docker images (=docker image ls)
- 다운로드된 이미지 표시
- --no-trunc : docker image ID 를 긴 원본값 그대로 볼 수 있음
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest d1165f221234 4 hours ago 13.3kB
- 주의!!!!
docker images ls
-> 'ls' 라는 도커 이미지를 보여주라는 뜻.
- 에러는 안나지만 의도와는 잘못된 출력이 됨
docker image inspect
docker image pull
- docker 이미지 다운로드
- 버전 명시하지 않는다면 최신 버전으로 다운로드
- image 를 생략하요 docker pull 로도 사용 가능
docker image rm
docker image inspect
- 메타데이터 상세정보 출력 (JSON 포맷)
docker image inspect {image_name}
- ex)
docker image inspect --format="{{.Config.Image}}" alpine
* Config 안의 Image 의 value 값을 보여줌
docker image prune
docker 이미지 저장 경로
[root@localhost ~]# find /var/lib/docker -name d1165f221234*
/var/lib/docker/image/overlay2/imagedb/content/sha256/d1165f2212346b2bab48cb01c1e39ee8ad1be46b87873d9ca7a4e434980a7726
docker container
docker container ps -a
- 실행중인 컨테이너 목록 나열
- 컨테이너는 아무 행동도 하지 않으면 종료됨
docker container search
- docker hub 에 있는 컨테이너 이미지를 검색
docker search {이미지명}
- ex)
docker search httpd
- 'container' 생략하고
docker search
로도 사용 가능
docker container run
- docker 컨테이너 실행
docker run -d --dns 192.168.1.1 --name myapache httpd:2.4
- -d : 백그라운드 실행. 옵션 안주면 포그라운드로 실행
(ctrl + c 하면 컨테이너 꺼짐. 쉘 닫는건 상관없는듯)
- 컨테이너 이름을 주지 않으면 랜덤으로 지어져서 실행
- --dns : DNS IP 지정
- --net : 컨테이너 네트워크 지정
- 컨테이너는 아무 행동도 하지 않으면 종료됨
- httpd 컨테이너의 경우, apache 데몬이 계속 실행중이므로 종료되지 않음
docker container start/stop/restart
docker container pause/unpause
- pause : 컨테이너에서 실행중인 프로세스를 모두 중단
- unpause : pause 된 컨테이너 시작, 중지, 재시작
docker container rm
- 컨테이너 삭제
docker container rm {컨테이너명}
- -f : 강제 삭제
- 컨테이너 삭제하려면 정지해야함
- ※ 컨테이너 이름은 이미지 이름과 다름
docker exec
-it {container_name} /bin/bash
- 쉘 접근시 -it 옵션 필요
- -i : interactive (대화형으로 실행하라)
- -t : terminal
- ※ 일반 운영체제가 아니니 ps 같은 것도 없음
docker container stats
docker constainer top
docker network
docker network ls
[devops@localhost ~]$ docker network ls
NETWORK ID NAME DRIVER SCOPE
2812687ed0e7 bridge bridge local
e83a3272bbf3 host host local
52b79843d96c none null local
- ex)
docker network inspect bridge
- bridge 네트워크를 쓰고 있는 모든 컨테이너 정보를 볼 수 있음.
brctl show
- 브릿지 네트워크 봄 (bridge-utils 패키지 설치 따로 해줘야함)
yum provides brctl
* 참고) yum provides 하면 해당 명령어가 포함된 패키지를 찾을 수 있음.
docker network create
- 컨테이너를 위한 네트워크 생성
docker network create -d bridge --subnet 172.30.0.0/16 --ip-range 172.30.0.0/24 --gateway 172.30.0.1 newbridge
- 이런 식으로 옵션 자세하게 줘서 생성하는 것도 가능.
컨테이너 실행시 네트워크 지정
- 컨테이너를 올릴 때 아예 --network 옵션을 줘서 네트워크를 지정할 수 있음.
docker run -d --name=centos-7 --network mybridge centos:7 /bin/sleep 60s
- 이미 한 네트워크 연결된 컨테이너에 다른 네트워크를 connect 하면 2개가 연결이 되게 됨
docker network connect/disconnect
- 컨테이너 네트워크 연결하거나 끊음
docker network connect {network_name} {container_name}
docker network disconnect {network_name} {container_name}
- ex. myapache 컨테이너를 bridge 네트워크 끊고 mybridge 네트워크로 연결
[devops@localhost ~]$ docker network disconnect bridge myapache
[devops@localhost ~]$ docker network connect mybridge myapache
docker network rm
- 네트워크 삭제
docker network rm {network_name}
- 단, bridge 같은 원래부터 있는 네트워크는 삭제 불가.
네트워크 관련해서.
- 컨테이너간에도 네트워크 접속이 가능함.
- host 전용 : 외부네트워크 안되고 호스트-게스트간 네트워크만 가능
- NAT(network address translation) : 외부네트워크 연결. host-guest간 네트워크 안됨
기타 명령어
docker version
- docker 의 버전, Go 언어 버전, OS, 아키텍처 표시
docker system info
docker system df
- docker 가 사용하는 디스크 이용 상황 표시
docker logs [컨테이너 이름]
- 해당 컨테이너에 대한 docker log 를 볼 수 있음
네이밍규칙
컨테이너 네이밍 규칙
- 아래 조건을 만족하는 이름으로만 지을 수 있음
[a-zA-Z0-9][a-zA-Z0-9_.-]