본문 바로가기

가상화/Kubernetes

[Docker] Container 생성

반응형

개요

구성환경

CentOS 7.6 / Docker-ce-19.03

 

Docker 컨테이너 생성

- docker에서 컨테이너는 이미지를 이용하여 컨테이너 생성

 

1. 이미지 다운로드 사이트에 접속후 다운로드 받고자 하는 이미지 선택

https://hub.docker.com/search?q=&type=image

2. 이미지 다운로드(여기서는 ubuntu를 예로 하겠다)

 - 우측 상단에 IMAGE 설치 명령어를 복사해서 사용, Tag를 사용하지 않으면 latest가 자동으로 적용됨

- Tag를 이용하고자 받고자 한다면 이미지이름:Tag명을 함께 붙여서 사용

* Tag는 일반적으로 버전명이 사용됨

   예) shell> docker pull ubuntu:14.04

 2.1 ubuntu 이미지 다운로드

shell> docker pull ubuntu
Using default tag: latest
latest: Pulling from library/ubuntu
2746a4a261c9: Pull complete
4c1d20cdee96: Pull complete
0d3160e1d0de: Pull complete
c8e37668deea: Pull complete
Digest: sha256:250cc6f3f3ffc5cdaa9d8f4946ac79821aafb4d3afc93928f0de9336eba21aa4
Status: Downloaded newer image for ubuntu:latest
docker.io/library/ubuntu:latest
shell>

2.2 다운받은 이미지 확인

shell> docker images 
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE 
ubuntu              latest              549b9b86cb8d        7 days ago          64.2MB 
postgres            latest              4a82a16ee75c        3 weeks ago         394MB 
httpd               2.4                 2ae34abc2ed0        3 weeks ago         165MB 
mysql               latest              d435eee2caa5        4 weeks ago         456MB 
nginx               latest              231d40e811cd        4 weeks ago         126MB 
shell> 

 2.3 단일 이미지 삭제

Usage : docker image rm <IMAGE ID>

 2.4 모든 이미지 삭제

 Usage : docker rmi $(docker images -q) -f

 ** docker image -q : 이미지 ID 출력 

 ** 해당 이미지가 컨테이너에서 사용중일 때는 삭제 할수 없음

 

3. 컨테이너 생성

 3.1 docker run command : 컨테이너 생성과 동시에 컨테이너 구동이 이루어짐

 SYNTAX) docker run <OPTIONS> --name <컨테이너이름:사용자지정> <이미지이름:Tag>

  옵션)

    -i  : ineractive

    -t : tty

    -d : background

shell> docker run -itd --name my_ubuntu_1 ubuntu:latest
cdfb9b9576cf343017acc40fdb1fba468fe2ad93e4ec6bc7c27fca3c5ef6d1f1
shell> docker ps => 현재 구동중인 컨테이너 확인
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
cdfb9b9576cf        ubuntu:latest       "/bin/bash"         2 minutes ago       Up 2 minutes                            my_ubuntu_1
shell> docker exec -it my_ubuntu_1 bash => 컨테이너 접속
root@cdfb9b9576cf:/# uname -a    => 컨테이너에서 명령어 실행
Linux cdfb9b9576cf 3.10.0-957.el7.x86_64 #1 SMP Thu Nov 8 23:39:32 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

root@cdfb9b9576cf:/# cat /etc/issue   => 컨테이너의 우분투 버전 확인
Ubuntu 18.04.3 LTS \n \l

root@cdfb9b9576cf:/#
root@cdfb9b9576cf:/# exit => 컨테이너 접속 끊기
exit
shell>

 3.2  docker create command : 컨테이너만 생성

SYNTAX) docker create [OPTIONS] IMAGE [COMMAND] [ARG...]

  옵션)

   --rm : 만약 동일 이름의 컨테이너가 존재한다면 기존 컨테이너 삭제후 생성

shell> docker create -it --rm --name my_ubuntu_2 ubuntu:latest
68374efce6bf55985a45bdde689c60880ae4ff40141972124c1abc01d43d4b55
shell> docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                      PORTS               NAMES
68374efce6bf        ubuntu:latest       "/bin/bash"              6 seconds ago       Created                                         my_ubuntu_2
9e253b30fe11        ubuntu:latest       "/bin/bash"              10 hours ago        Up 10 hours                                     my_ubuntu_1
d4b9a115eb3f        nginx:latest        "nginx -g 'daemon of…"   12 hours ago        Exited (0) 18 minutes ago                       my_nginx_1
shell> docker start my_ubuntu_2  => 컨테이너 구동
my_ubuntu_2
shell> docker ps 
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                      PORTS               NAMES
68374efce6bf        ubuntu:latest       "/bin/bash"              30 seconds ago      Up 3 seconds                                    my_ubuntu_2
9e253b30fe11        ubuntu:latest       "/bin/bash"              10 hours ago        Up 10 hours                                     my_ubuntu_1
d4b9a115eb3f        nginx:latest        "nginx -g 'daemon of…"   12 hours ago        Exited (0) 18 minutes ago                       my_nginx_1
shell>

 3.3 docker container 삭제

SYNTAX) docker rm <container id / container name>

shell> docker rm my_ubuntu_2
my_ubuntu_2

 3.4 컨테이너 기동/종료

 SYNTAX) docker [start | stop] <컨테이너이름 or 컨테이너 ID>

shell> docker stop my_ubuntu_1 
my_ubuntu_1 
shell> docker start my_ubuntu_1 
my_ubuntu_1 
shell>

 

4. docker image offline 설치

 단계)

   (1) 온라인에서 docker save 명령어로 이미지 저장(tar 아카이브)

   (2) 저장된 이미지를 CD,USB로 오프라인으로 이동

   (3) 오프라인에서 저장된 이미지 로드

1. 온라인 

shell> docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
ubuntu              latest              549b9b86cb8d        8 days ago          64.2MB
postgres            latest              4a82a16ee75c        3 weeks ago         394MB
httpd               2.4                 2ae34abc2ed0        4 weeks ago         165MB
httpd               latest              2ae34abc2ed0        4 weeks ago         165MB
mysql               latest              d435eee2caa5        4 weeks ago         456MB
nginx               latest              231d40e811cd        4 weeks ago         126MB
shell> docker save -o httpd_2.4.tar httpd:2.4  => tar 아카이브로 저장
shell> ls
httpd_latest.tar    => 저장된 파일을 USB, CD로 오프라인으로 이동


2. 오프라인

shell> docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
ubuntu              latest              549b9b86cb8d        8 days ago          64.2MB
postgres            latest              4a82a16ee75c        3 weeks ago         394MB
httpd               latest              2ae34abc2ed0        4 weeks ago         165MB
mysql               latest              d435eee2caa5        4 weeks ago         456MB
nginx               latest              231d40e811cd        4 weeks ago         126MB

shell> docker load -i httpd_2.4.tar  => 이미지 로드
Loaded image: httpd:2.4
shell> docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
ubuntu              latest              549b9b86cb8d        8 days ago          64.2MB
postgres            latest              4a82a16ee75c        3 weeks ago         394MB
httpd               2.4                 2ae34abc2ed0        4 weeks ago         165MB => 로드된 이미지
httpd               latest              2ae34abc2ed0        4 weeks ago         165MB
mysql               latest              d435eee2caa5        4 weeks ago         456MB
nginx               latest              231d40e811cd        4 weeks ago         126MB
shell>

** gzip을 사용하여 .tar.gz으로 저장

shell> docker save httpd:2.4 | gzip > httpd_2.4.tar.gz

 

반응형

'가상화 > Kubernetes' 카테고리의 다른 글

[Docker] swarm 모드에서 NFS 구성  (0) 2020.01.10
[Docker] Swarm 모드 구성  (0) 2020.01.09
[Docker] Docker Root 디렉토리 변경  (0) 2019.12.28
[Docker] Container 관리  (0) 2019.12.27
[Docker] Docker 설치/삭제 - Linux  (0) 2019.12.26