1. docker 서비스를 시작하고 시스템 부팅 시에 시작하도록 구성
systemctl enable docker
systemctl start docker
2. docker 호스트 인스턴스에 대한 버전 정보
docker version
3. info서브 명령을 사용하여 현재 구성 정보 살펴보기
docker info
4. dockerd가 시작할 때 생성한 디렉터리 계층구조를 살펴보기
ls -R /var/lib/docker
5. docker가 설치되어 있는 리눅스 환경 특징:
ip a
#명령어 실행 시 docker0로 사설 ip가 할당됨
#외부로 나갈 수는 있지만 패킷이 다시 돌아오지 못함
/var/lib/docker라는 폴더가 있는지 여부(있으면 docker가 설치되어 있는거임)

 


IP1       IP2       IP3

con1    con2    con3


docker 172.17.0.1/16



192.168.10.81



사설 IP가 할당되기 때문에 Container에서 나갈 때는 나갈 수 있지만

다시 돌아올 때는 패킷을 받을 수 없다(IP를 변경해준다)

Source NAT를 사용한다

컨테이너가 나갈 때만 역할 IP...Source IP를 변경해준다

- (Linux Bridge)L2, DHCP, 그리고 나갈 때만 SNAT 역할로 내보내준다.

 




1. docker 서비스를 시작하고 시스템 부팅 시에 시작하도록 구성
systemctl enable docker
systemctl start docker
2. docker 호스트 인스턴스에 대한 버전 정보
docker version
3. info서브 명령을 사용하여 현재 구성 정보 살펴보기
docker info
4. dockerd가 시작할 때 생성한 디렉터리 계층구조를 살펴보기
ls -R /var/lib/docker
5. docker가 설치되어 있는 리눅스 환경 특징:
ip a
#명령어 실행 시 docker0로 사설 ip가 할당됨
#외부로 나갈 수는 있지만 패킷이 다시 돌아오지 못함
/var/lib/docker라는 폴더가 있는지 여부(있으면 docker가 설치되어 있는거임)
6. /etc/docker/daemon.json 파일 생성하면 warning을 제거할 수 있다(SSL접속)
(
"insecure-registries" :["10.10.12.0/24"]
)
7. docker 재시작
systemctl restart docker
8. ubuntu 이미지 생성(이미지 저장소 레지스토리 - 일종의 파일서버에서 가져오기)
docker pull reg.cloud.com/ubuntu
docker images
로 이미지 확인
docker run -it reg.cloud.com/ubuntu
로 이미지 생성
9. apt명령어 실행으로 Ubuntu인지 여부 확인
apt
cat /etc/os-release
로 release 정보 확인


*레지스토리(registry) : 이미지를 저장하는 원격 저장소

docker에서 공식적으로 제공하는 저장소가 존재한다 :


docker hub : https://hub.docker.com/explore/


1
2
3
1. docker 저장소에서 이미지 가져오기(여기서는 busybox)
 
docker pull busybox
cs


*Repository : 여러 docker 이미지들의 콜렉션 네임스페이스


public과 private으로 구분된다.


- 버전을 public repository에서 가져오기 

#ubuntu:16.04


- 버전 입력안 할 시에는 자동으로 latest를 가져온다

#ubuntu


- docker images 명령어로 image tag를 확인 할 수 있다.


접근 repository가 private일 경우 로그인이 필요 : 


1
2
3
4
5
6
1. docker hub 로그인
docker login
docker logout
 
2. 로그인 정보 확인
cat ~/.docker/config.json
cs





*Docker Pull 받기 :

1
2
3
4
5
6
7
8
1. pull 받기
docker pull {registryAddress}/{namespace}/{repositoryName}:{tag}
docker pull {이미지}
 
#사내망에 저장 예시
docker pull {계정 or URL}/{이미지}
docker pull reg.cloud.com/busybox
 
cs


*Docker 이미지/프로세스 지우기 : 

1
2
3
4
5
6
7
8
9
1. docker process 및 이미지 지우기
docker rm -f {프로세스 명}
docker ps -
#로 조회
docker rm -f 0e60b5e39d5c
 
#docker 이미지 지우기
docker rmi <저장소 이름>/<이미지 이름, ID>:<태그>
 
cs


*이미지 수정(Commit & Push)

뒤에서 따로 설명하겠지만, Docker에서 Commit 및 Push를 할 경우,

이미지에서는 Layer를 (revision별?) 서로 공유 하며 Layer는 1개만 가지고 있다. 전체 이미지가 아니라 수정된 부분만 업로드 된 상태로 남는다. 

=> 이미지 전체를 또 받을 필요가 없다...빠르다...분산환경

(버전 컨트롤이 가능!!)


*이미지 레이어 구조 확인 :


1
2
3
4
5
1. 이미지 레이어 확인하기
ls /var/lib/docker/overlay2/ -l
#여러개가 출력되는데 이것을 조립해서 하나의 이미지로 보여준다.
ls -/var/lib/docker/overlay2/{이미지레이어 ID}
#diff link lower 
cs





*Docker 포트 매핑 및 실행: 


1
2
3
4
5
6
7
- 포트 매핑
 
docker run -d(백그라운드 실행) -p {HOST PORT}:{Container PORT} --restart=always --name registry registry:2.5
docker run --5000:5000 --restart=always --name registry registry:2.5
 
 
docker run --5000:5000 --restart=always --name hkregistry registry:2.5
cs


*Docker image명 변경 :


1
2
3
4
5
docker tag reg.cloud.com/ubuntu localhost/ubuntu
 
#Push 한 후에 localhost/ubuntu를 다운받을 수 
docker push localhost/ubuntu
docker pull localhost/ubuntu
cs


*Docker image tar파일로 백업/삭제/업로드

1
2
3
4
5
6
7
8
9
10
*Docker image를 아웃풋 tar 파일로 백업 받기
docker save -/tmp/ubuntu.tar reg.cloud.com/ubuntu
 
*기존 Docker 이미지 삭제
docker ps -a
docker rm -r {Container ID}
docker rmi {image name}
 
*백업받은 tar 이미지 파일 다시 업로드
docker load -i ubuntu.tar
cs


Container에 들어가서 ps -ef로 조회해보면

PID 1번은 컨테이너에 이미지를 띄워주는 프로세스임~

컨테이너 run 시 이미지에 내장된 명령어가 자동으로 실행됨!


*Docker Process 관리 


1
2
3
4
5
6
7
8
9
10
11
*Docker 컨테이너 프로세스 실행
docker container run {image} cat /etc/os-release 
 
*Docker 컨테이너 프로세스 
[root@host01-2 tmp]# docker ps
CONTAINER ID        IMAGE                  COMMAND             CREATED              STATUS              PORTS               NAMES
c02b501f1151        reg.cloud.com/ubuntu   "/bin/bash"         About a minute ago   Up About a minute                       compassionate_euler
 
- Ctrl+p+q 를 누르면 bash shell을 프로세스를 죽이지 않은 상태에서 빠져나올 수 있음
- 다시 bash shell 프로세스로 돌아갈려면  docker attach {container ID} 
 
cs

+ Recent posts