반응형

 

 

 

 

 

Docker

Ubuntu 환경에서 Docker 명령어 사용하기


 

Ubuntu 20.04.4 LTS 환경으로 테스트 진행

 

 

 

 

 

 

 

 

Docker history 명령으로 이미지 history 확인하기

 

history 명령은 동작중인 컨테이너에 입력된 명령어 history를 확인하는 명령어입니다.

이전 글에서 dockerfile로 만든 nginx 컨테이너입니다. 만들면서 사용된 RUN 커맨드가 history에 기록됩니다.

$ sudo docker ps -a
CONTAINER ID   IMAGE           COMMAND   CREATED          STATUS          PORTS                                        NAMES
61edbce54f41   nginxtest:0.1   "nginx"   18 minutes ago   Up 18 minutes   0.0.0.0:80->80/tcp, :::80->80/tcp, 443/tcp   jinsu-nginx
$ 

$sudo docker history [NAMES]:[TAG]

EX)
$ sudo docker history nginxtest:0.1
IMAGE          CREATED          CREATED BY                                      SIZE      COMMENT
740379f9b11b   29 minutes ago   /bin/sh -c #(nop)  EXPOSE 443                   0B        
929f903e2540   29 minutes ago   /bin/sh -c #(nop)  EXPOSE 80                    0B        
ed64817830f8   29 minutes ago   /bin/sh -c #(nop)  CMD ["nginx"]                0B        
2282172fd290   29 minutes ago   /bin/sh -c #(nop) WORKDIR /etc/nginx            0B        
de12d0c872bc   29 minutes ago   /bin/sh -c #(nop)  VOLUME [/data /etc/nginx/…   0B        
3da13963d2b2   29 minutes ago   /bin/sh -c chown -R www-data:www-data /var/l…   0B        
94c41b3f9ed3   29 minutes ago   /bin/sh -c echo "\n daemon off;" >> /etc/ngi…   1.61kB    
d6e387a15b8b   29 minutes ago   /bin/sh -c apt-get install -y nginx             21.1MB    
2f20874facdc   29 minutes ago   /bin/sh -c apt-get update                       14.1MB    
abbb27fabc8c   29 minutes ago   /bin/sh -c #(nop)  MAINTAINER jinsu <djwlstn…   0B        
13b66b487594   14 months ago    /bin/sh -c #(nop)  CMD ["/bin/bash"]            0B        
<missing>      14 months ago    /bin/sh -c mkdir -p /run/systemd && echo 'do…   7B        
<missing>      14 months ago    /bin/sh -c [ -z "$(apt-get indextargets)" ]     0B        
<missing>      14 months ago    /bin/sh -c set -xe   && echo '#!/bin/sh' > /…   195kB     
<missing>      14 months ago    /bin/sh -c #(nop) ADD file:276b5d943a4d284f8…   196MB     
$

 

 

 

 

Docker cp 명령으로 복사하기

 

cp 명령은 컨테이너에서 있는 파일을 복사하는 명령입니다.

명령어 입력 전
$ ls -al
total 12
drwxrwxr-x 2 djwlstn123 djwlstn123 4096 Jun  2 09:42 .
drwxr-xr-x 5 djwlstn123 djwlstn123 4096 Jun  2 08:54 ..
-rw-rw-r-- 1 djwlstn123 djwlstn123  325 Jun  2 08:54 Dockerfile
$ 

동작중인 컨테이너 확인
$ sudo docker ps -a
CONTAINER ID   IMAGE           COMMAND   CREATED          STATUS          PORTS                                        NAMES
61edbce54f41   nginxtest:0.1   "nginx"   30 minutes ago   Up 30 minutes   0.0.0.0:80->80/tcp, :::80->80/tcp, 443/tcp   jinsu-nginx
$ 

$ sudo docker cp [NAMES]:[경로] [저장경로]

EX)
$ sudo docker cp jinsu-nginx:/etc/nginx/nginx.conf ./            

명령어 입력 후
$ ls -al
total 16
drwxrwxr-x 2 djwlstn123 djwlstn123 4096 Jun  2 09:44 .
drwxr-xr-x 5 djwlstn123 djwlstn123 4096 Jun  2 08:54 ..
-rw-rw-r-- 1 djwlstn123 djwlstn123  325 Jun  2 08:54 Dockerfile
-rw-r--r-- 1 root       root       1615 Jun  2 09:05 nginx.conf
$

 

 

 

 

Docker commit 명령으로 컨테이너 변경된 내용 이미지로 생성하기

 

commit 명령은 컨테이너의 추가로 변경된 사항을 이미지 파일로 생성하는 명령입니다.

명령어 입력 전
$ sudo docker images
REPOSITORY   TAG       IMAGE ID       CREATED          SIZE
nginxtest    0.1       740379f9b11b   43 minutes ago   232MB
ubuntu       14.04     13b66b487594   14 months ago    197MB
$

$ sudo docker commit [옵션] [컨테이너 이름] [이미지 이름]:[태그]

EX)
$ sudo docker commit jinsu-nginx nginxtest:0.2
sha256:45fe3bfa31b6a7b9eb73603decb26779e348acd6e41ecd176cbeaf0c54c0c967
$ 

명령어 입력 후
$ sudo docker images
REPOSITORY   TAG       IMAGE ID       CREATED          SIZE
nginxtest    0.2       45fe3bfa31b6   11 seconds ago   232MB
nginxtest    0.1       740379f9b11b   46 minutes ago   232MB
ubuntu       14.04     13b66b487594   14 months ago    197MB
$

 

 

 

 

Docker diff 명령으로 컨테이너 변경된 파일 확인하기

 

diff 명령은 컨테이너가 실행되면서 변경된 파일 목록을 출력하여 보여줍니다.

비교 기준은 컨테이너 생성한 이미지입니다.

  • A : 추가된 파일
  • C : 변경된 파일
  • D : 삭제된 파일
$ sudo docker diff [컨테이너 이름]

EX)
$ sudo docker diff jinsu-nginx
A /data
C /etc
C /etc/nginx
A /etc/nginx/site-enabled
C /var
C /var/lib
C /var/lib/nginx
A /var/lib/nginx/body
A /var/lib/nginx/fastcgi
A /var/lib/nginx/proxy
A /var/lib/nginx/scgi
A /var/lib/nginx/uwsgi
C /run
A /run/nginx.pid
$

 

 

 

 

 

 

Docker inspect 명령으로 이미지와 컨테이너 세부 정보 확인하기

 

inspect 명령은 이미지와 컨테이너의 세부 정보를 출력하는 명령입니다.

$ sudo docker inspect [이미지] or [컨테이너 이름]

EX)
$ sudo docker inspect jinsu-nginx
[
    {
        "Id": "61edbce54f412f5445422515247b95af982c6c99ad24d758c855056c8d69ab28",
        "Created": "2022-06-02T09:08:38.839283565Z",
        "Path": "nginx",
        "Args": [],
        "State": {
            "Status": "running",
            "Running": true,
            "Paused": false,
            "Restarting": false,
            "OOMKilled": false,
            "Dead": false,
            "Pid": 94810,
            "ExitCode": 0,
            "Error": "",
            "StartedAt": "2022-06-02T09:08:39.140534723Z",
            "FinishedAt": "0001-01-01T00:00:00Z"
...
..
.
내용이 길게 출력중

 

 

 

 

반응형
반응형

 

 

 

 

Docker

Ubuntu 환경에서 Docker 명령어 사용하기


Ubuntu 20.04.4 LTS 환경으로 테스트 진행

 

 

 

 

 

 

 

Dockerfile 

Dockerfile은 Docker 이미지 설정 파일이며, Dockerfile에 설정된 내용으로 이미지를 생성할 수 있습니다.

  • Dockerfile은 대소문자를 구분하지 않습니다.
  • Dockerfile 명령은 순서대로 실행됩니다.
  • Dockerfile은 FROM 명령으로 시작해야 합니다.
  • #은 주석으로 사용합니다.
  • 각 명령들은 독입적으로 실행됩니다. 

 

 

 

Dockerfile 에서 사용하는 환경 변수 목록

 

  • FROM

FROM 명령은 기본 베이스 이미지를 설정하는 명령입니다.

이미지 이름만 설정하면 latest를 사용하여 생성됩니다. 

이미지 이름은 생략할 수 없습니다.

Dockerfile 하나에 FROM을 여러개 생성할 수 있으나 --tag 옵션으로 이미지 이름을 설정했다면 마지막 FROM에 적용됩니다.

FROM [이미지이름]:[태그]

EX)
FROM ubuntu:14.04

 

 

  • MAINTAINER

MAINTAINER 명령은 이미지 생성하는 관리자의 정보를 설정하는 명령입니다.

빌드에 영향을 주지 않기 때문에 생략하는 경우도 있습니다.

MAINTAINER [NAME] [Email]

EX)
MAINTAINER JinSu <djwlstn123@naver.com>

 

 

  • RUN

RUN 명령은 현재 생성되는 과정의 이미지 위에 스크립트 또는 명령을 실행해주는 명령입니다.

실행한 결과는 새 이미지로 생성되며, 실행 내역은 이미지 히스토리에 기록됩니다.

RUN [명령어]
RUN ["실행파일", "매개변수1", "매개변수2"]

EX)
RUN apt-get -y update
RUN /bin/bash -c

 

 

  • CMD

CMD 명령은 컨테이너가 시작될 때 실행할 실행 파일 또는 쉘 스크립트 명령입니다.

Dockerfile에는 하나의 CMD 명령만 있을 수 있습니다. (둘 이상의 CMD를 나열하면 마지막 CMD만 적용됩니다.)

여러 명령어를 사용하려면 따로 스크립트를 생성하여 설정해주어야합니다.

CMD ["executable","param1","param2"] (exec form, this is the preferred form)
CMD ["param1","param2"] (as default parameters to ENTRYPOINT)
CMD command param1 param2 (shell form)
CMD [명령]


EX)
CMD ["nginx"]

 

 

  • ENTRYPOINT

ENTRYPOINT 명령은 컨테이너가 시작될 떄 스크립트 또는 명령을 실행합니다.

docker run, start 명령으로 정지된 컨테이너를 시작할 때 실행됩니다. 

ENTRYPOINT는 Dockerfile에 단 한번만 사용할 수 있습니다.

ENTRYPOINT [명령]
ENTRYPOINT ["실행파일", "매개변수1", "매개변수2"]

EX)
셸(/bin/sh)로 명령 실행
ENTRYPOINT cat /home/study/test.text
셸없이 바로 실행
ENTRYPOINT ["cat", "/home/study/test.text"]

 

 

  • ADD

ADD 명령은 새로운 파일이나 또는 디렉토리를 이미지로 복사하는 명령입니다.

절대경로를 사용할 수 없으며,  디렉토리를 지정하면 디렉토리 모든 파일을 복사합니다.

인터넷에 있는 URL을 설정할 수 있습니다.

ADD [복사할 파일 경로] [이미지에 파일이 위치할 경로]

EX)
ADD *.txt /root/

 

 

  • COPY

COPY 명령은 새로운 파일이나 또는 디렉토리를 이미지로 복사하는 명령입니다.

ADD 명령과 달리 URL을 사용할 수 없으며 압축 파일 그대로 복사됩니다. 절대경로 방식으로 설정해야 합니다.

COPY [복사할 파일 경로] [파일이 위치할 경로]

EX)
COPY test.txt relativeDir/

 

 

  • ENV

ENV 명령은 환경 변수를 설정하는 명령입니다.

ENV로 설정한 변수는 RUN, CMD, ENTRYPOINT에 적용됩니다.

ENV [환경변수] [값]

EX)
ENV PATH /go/bin:$PATH

 

 

  • EXPOSE

EXPOSE 명령은 호스트와 연결할 포트 번호를 설정하는 명령입니다.

docker run --expose 옵션과 같은 설정입니다.

EXPOSE [포트번호]

EX)
EXPOSE 80
EXPOSE 443

 

 

  • USER

USER 명령은 실행할 사용자 계정을 설정하는 명령입니다.

RUN, CMD, ENTRYPOINT에 적용됩니다.

USER [계정 사용자명]

EX)
USER nobody

 

 

  • VOLUME

VOLUME 명령은 디렉토리의 내용을 컨테이너에 저장하지 않고 외부 호스트(파일시스템)에 저장하도록 설정하는 명령입니다.

VOLUME [컨테이너 디렉토리]
VOLUME ["컨테이너 디렉토리1", "컨테이너 디렉토리2"]

EX)
VOLUME /data
VOLUME ["/data", "/var/log/hello"]

 

 

  • WORKDIR

WORKDIR 명령은 RUN, CMD, ENTRYPOINT 명령이 실행될 디렉토리를 설정하는 명령입니다.

절대경로 대신 상대경로도 사용 할 수 있습니다.

WORKDIR [경로]

EX)
WORKDIR /var/www

 

 

  • ONBUILD

ONBUILD 명령은 생성한 이미지를 기반으로 다른 이미지가 생성될 떄 명령을 실행하는 명령입니다.

최초에 ONBUILD 사용한 상태에서는 아무 명령도 실행하지 않으며, 다음 이미지가 FROM으로 사용될 때 실행할 명령을 예약하는 기능입니다.

ONBUILD [Dockerfile 명령] [Dockerfile 명령의 매개변수]

EX)
ONBUILD RUN touch /test.txt
ONBUILD ADD test.txt /test.txt

 

 

 

 

 

 

Dockerfile 예제 작성하기

 

컨테이너 이미지를 만들기 위해 Dockerfile를 설정합니다.

$ vi Dockerfile

FROM ubuntu:14.04
MAINTAINER jinsu <djwlstn123@Naver.com>

RUN apt-get update
RUN apt-get install -y nginx
RUN echo "\n daemon off;" >> /etc/nginx/nginx.conf
RUN chown -R www-data:www-data /var/lib/nginx

VOLUME ["/data", "/etc/nginx/site-enabled", "/var/log/nginx"]

WORKDIR /etc/nginx

CMD ["nginx"]

EXPOSE 80
EXPOSE 443
  • FROM : 베이스 이미지 선택 [이미지] [태그] 
  • MAINTAINER : 제작자 정보
  • RUN : nginx를 설치하기 위해 필요한 셸 스크립트 또는 명령을 입력
  • VOLUME : /data 경로를 이미지를 외부 저장소랑 공유하는 디렉토리 목록
  • CMD : 컨테이너가 동작하게 됐을 때 실행할 실행 파일이나 셸 스크립트
  • WORKDIR : CMD에서 설정한 실행파일이 실행될 디렉토리
  • EXPOSE : 외부와 연결할 포트 번호

 

 

 

Docker build 명령으로 이미지 생성하기

 

Docker build 명령은 Dockerfile에 설정된 이미지를 생성하는 명령입니다.

$ sudo docker build -t nginxtest:0.1 .

Sending build context to Docker daemon  2.048kB
Step 1/11 : FROM ubuntu:14.04
 ---> 13b66b487594
Step 2/11 : MAINTAINER jinsu <djwlstn123@Naver.com>
 ---> Running in 9d3596a43146
Removing intermediate container 9d3596a43146
 ---> abbb27fabc8c
Step 3/11 : RUN apt-get update
 ---> Running in 620216d05c75
Ign http://archive.ubuntu.com trusty InRelease
Get:1 http://security.ubuntu.com trusty-security InRelease [65.9 kB]
Get:2 http://archive.ubuntu.com trusty-updates InRelease [65.9 kB]
Get:3 http://archive.ubuntu.com trusty-backports InRelease [65.9 kB]
Get:4 http://security.ubuntu.com trusty-security/main amd64 Packages [1032 kB]
Get:5 https://esm.ubuntu.com trusty-infra-security InReleas
...
..
.
계속 설치중

$ sudo docker images
REPOSITORY   TAG       IMAGE ID       CREATED              SIZE
nginxtest    0.1       740379f9b11b   About a minute ago   232MB
ubuntu       14.04     13b66b487594   14 months ago        197MB
$
  • 아까 지정한 nginxtest 이름과 tag 0.1이 생성되었습니다.

 

 

 

Docker run 명령으로 컨테이너 생성하기

 

Dockerfile로 nginx를 설치하는 이미지를 설정하고 build하여 생성된 이미지를 run 명령을 통해 컨테이너를 생성하여 실행시키는 명령입니다.

$ sudo docker run --name jinsu-nginx -d -p 80:80 -v /root/data:/data nginxtest:0.1
61edbce54f412f5445422515247b95af982c6c99ad24d758c855056c8d69ab28
$ 

$ sudo docker ps -a
CONTAINER ID   IMAGE           COMMAND   CREATED          STATUS         PORTS                                        NAMES
61edbce54f41   nginxtest:0.1   "nginx"   10 seconds ago   Up 9 seconds   0.0.0.0:80->80/tcp, :::80->80/tcp, 443/tcp   jinsu-nginx
$
  • docker run -d 옵션은 컨테이너를 백그라운드 상태로 실행하는 옵션입니다.
  • docker run -p 80:80 옵션은 제 ubuntu 80번 포트와 생성하는 컨테이너 80번 포트를 연결하는 옵션입니다.
  • docker run -v 옵션은 제 ubuntu /root/data 디렉토리를 생성하는 컨테이너 /data 디렉토리에 연결하는 명령으로 제 /root/data 디렉토리에 파일을 넣으면 생성된 컨테이너에서 해당 파일을 읽을 수 있습니다.

 

 

http://[ubuntu server IP]:80 으로 접속하면 nginx가 정상적으로 동작하는 모습을 볼 수 있습니다.

 

 

 

 

 

 

 

 

 

 

 

 

반응형
반응형

 

 

 

Linux

Ubuntu 환경에서 Bash 문법 사용하기


 

Ubuntu 20.04.4 LTS 환경으로 테스트 진행

 

 

 

 

 

문법 설명
> ## 출력 리다이렉션
명령 실행의 표준 출력을 파일로 저장합니다. 명령어 실행 결과를 특정 장치로 보낼 수도 있습니다.
EX)
sudo echo "Good day" > ./Good.txt
-rw-rw-r-- 1 guest guest     9 Jun  1 08:00 Good.txt
< ## 입력 리다이렉션
파일의 내용을 읽어 명령의 표준 입력을 사용
EX)
cat < ./Good.txt 
Good day
>> ## 명령 실행의 표준 출력을 파일에 추가
>는 이미 파일에 내용을 덮어 쓰지만 >>는 파일 뒷부분에 내용을 추가
EX)
$ sudo echo "Today" >> ./Good.txt 
Good day
Today
2> ## 명령 실행의 표준 에러를 파일로 저장
2>> ## 명령 실행의 표준 에러를 파일에 추가
&> ## 표준 출력과 표준 에러를 모두 파일로 저장
1>&2 ## 표준 출력을 표준 에러로 보내기
2>&1 ## 표준에어를 표준 출력으로 보냅니다. 
| ## 파이프
명령 실행의 표준 출력을 다른 명령의 표준 입력으로 보내줍니다. 첫번째 명령의 출력 값을 두번째 명령에서 처리합니다.
EX)
$ ls -al | grep Good
-rw-rw-r-- 1 djwlstn123 djwlstn123    15 Jun  1 08:04 Good.txt

 

 

추후 계속 업데이트 예정

2022.06.01

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

반응형
반응형

 

 

Docker

Ubuntu 환경에서 Docker 명령어 사용하기


 

Ubuntu 20.04.4 LTS 환경으로 테스트 진행

 

 

 

 

 

Docker start 명령으로 컨테이너 동작하기

 

start 명령어는 정지된 hello 컨테이너를 동작하게 만듭니다.

명령어 사용 전 
$ sudo docker ps -a
CONTAINER ID   IMAGE     COMMAND       CREATED      STATUS                    PORTS     NAMES
750026f56674   ubuntu    "bash"        3 days ago   Exited (0) 3 days ago               jinsu
68bf744c5a56   ubuntu    "/bin/bash"   3 days ago   Exited (127) 3 days ago             hello
$
$ sudo docker start [NAMES] or [CONTAINER ID]

EX)
$ sudo docker start hello
hello
$ 

명령어 사용 후
$ sudo docker ps -a
CONTAINER ID   IMAGE     COMMAND       CREATED      STATUS                  PORTS     NAMES
750026f56674   ubuntu    "bash"        3 days ago   Exited (0) 3 days ago             jinsu
68bf744c5a56   ubuntu    "/bin/bash"   3 days ago   Up 5 seconds                      hello
$
  • 사용 전 Exited 3 days ago 상태였는데 start 명령어를 사용하여 Up 5 seconds 상태가 되었습니다.

 

 

Docker restart 명령으로 컨테이너 재시작하기

 

restart 명령어는 PC를 재부팅하는 것처럼 컨테이너를 재시작하게 만들어 줍니다.

명령어 사용 전
$ sudo docker ps -a
CONTAINER ID   IMAGE     COMMAND       CREATED      STATUS                  PORTS     NAMES
750026f56674   ubuntu    "bash"        3 days ago   Exited (0) 3 days ago             jinsu
68bf744c5a56   ubuntu    "/bin/bash"   3 days ago   Up 8 minutes                      hello
$ 

$ sudo docker restart [NAMES] or [CONTAINER ID]
EX)
$ sudo docker restart hello
hello
$ 

명령어 사용 후
$ sudo docker ps -a        
CONTAINER ID   IMAGE     COMMAND       CREATED      STATUS                  PORTS     NAMES
750026f56674   ubuntu    "bash"        3 days ago   Exited (0) 3 days ago             jinsu
68bf744c5a56   ubuntu    "/bin/bash"   3 days ago   Up 2 seconds                      hello
$
  • 사용 전 Up 8 minutes 상태였는데 restart 재시작 후 Up 2 seconds 상태가 되었습니다.

 

 

 

 

Docker attach 명령으로 컨테이너에 접속하기

 

attach 명령어는 생성하여 동작 상태인 컨테이너에 접속하는 명령입니다.

$ sudo docker ps -a        
CONTAINER ID   IMAGE     COMMAND       CREATED      STATUS                  PORTS     NAMES
750026f56674   ubuntu    "bash"        3 days ago   Exited (0) 3 days ago             jinsu
68bf744c5a56   ubuntu    "/bin/bash"   3 days ago   Up 2 seconds                      hello
$

$ sudo docker attach [NAMES] or [CONTAINER ID]

EX)
$ sudo docker attach hello
root@68bf744c5a56:/#

컨테이너를 생성할때 /bin/bash 설정은 안해줬을때 아래 옵션으로 접속
$ sudo docker exec -it [이미지 이름] /bin/bash
root@0ebf237f91f0:/#
  • 사전에 컨테이너를 생성할 때 /bin/bash를 실행하여 컨테이너에 접속핵서 자유롭게 입력 출력이 가능합니다.
  • Bash 셸에서 exit 또는 Ctrl + D를 입력하면 컨테이너가 정지되면서 접속이 끊어지게 됩니다.
  • Ctrl + P, Ctrl + Q를 순서대로 입력하면 컨테이너를 정지하지 않고 컨테이너에서 나오게 됩니다.

 

 

 

Docker exec 명령으로 외부에서 컨테이너 안의 명령 실행하기

 

exec 명령어는 컨테이너의 /bin/bash를 통해 접속하여 입출력하는 것이 아닌 외부에서 컨테이너 안의 명령을 실행하는 명령입니다.

명령어를 실행하려면 컨테이너가 Up 상태에서만 가능합니다.
$ sudo docker ps -a
CONTAINER ID   IMAGE     COMMAND       CREATED      STATUS                    PORTS     NAMES
750026f56674   ubuntu    "bash"        3 days ago   Exited (0) 16 hours ago             jinsu
68bf744c5a56   ubuntu    "/bin/bash"   4 days ago   Up 16 hours                         hello
$ 

$ sudo docker exec [NAMES] [명령] [매개 변수]

EX)
$ sudo docker exec hello echo "Good day"
Good day
$

EX)
$ sudo docker exec hello apt-get update
Get:1 http://archive.ubuntu.com/ubuntu jammy InRelease [270 kB]
Get:2 http://security.ubuntu.com/ubuntu jammy-security InRelease [110 kB]
Get:3 http://security.ubuntu.com/ubuntu jammy-security/multiverse amd64 Packages [4653 B]
Get:4 http://archive.ubuntu.com/ubuntu jammy-updates InRelease [109 kB]
Get:5 http://security.ubuntu.com/ubuntu jammy-security/restricted amd64 Packages [156 kB]
Get:6 http://archive.ubuntu.com/ubuntu jammy-backports InRelease [99.8 kB]
Get:7 http://security.ubuntu.com/ubuntu jammy-security/main amd64 Packages [159 kB]
Get:8 http://security.ubuntu.com/ubuntu jammy-security/universe amd64 Packages [71.8 kB]
Get:9 http://archive.ubuntu.com/ubuntu jammy/multiverse amd64 Packages [266 kB]
Get:10 http://archive.ubuntu.com/ubuntu jammy/main amd64 Packages [1792 kB]
Get:11 http://archive.ubuntu.com/ubuntu jammy/universe amd64 Packages [17.5 MB]
Get:12 http://archive.ubuntu.com/ubuntu jammy/restricted amd64 Packages [164 kB]
Get:13 http://archive.ubuntu.com/ubuntu jammy-updates/multiverse amd64 Packages [4653 B]
Get:14 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 Packages [277 kB]
Get:15 http://archive.ubuntu.com/ubuntu jammy-updates/restricted amd64 Packages [157 kB]
Get:16 http://archive.ubuntu.com/ubuntu jammy-updates/universe amd64 Packages [126 kB]
Get:17 http://archive.ubuntu.com/ubuntu jammy-backports/universe amd64 Packages [1202 B]
Fetched 21.2 MB in 5s (4319 kB/s)
Reading package lists...
$

 

 

 

 

 

Docker stop 명령으로 컨테이너 정지시키기

 

stop 명령어는 Up상태, 동작중인 상태의 컨테이너를 정지시키는 명령입니다.

명령어 사용 전
$ sudo docker ps
CONTAINER ID   IMAGE     COMMAND       CREATED      STATUS        PORTS     NAMES
68bf744c5a56   ubuntu    "/bin/bash"   4 days ago   Up 16 hours             hello
$ 

$ sudo docker stop [NAMES]

EX)
$ sudo docker stop hello
hello
$ 

명령어 입력 후
$ sudo docker ps -a
CONTAINER ID   IMAGE     COMMAND       CREATED      STATUS                        PORTS     NAMES
750026f56674   ubuntu    "bash"        4 days ago   Exited (0) 16 hours ago                 jinsu
68bf744c5a56   ubuntu    "/bin/bash"   4 days ago   Exited (137) 47 seconds ago             hello
$

 

 

 

 

반응형
반응형

 

 

 

Docker

Ubuntu 환경에서  Docker 명령어 사용하기


 

Ubuntu 20.04.4 LTS 환경으로 테스트 진행

 

 

 

 

Docker search 명령으로 이미지 검색하기

 

search 명령어는 Docker Hub 및 여러 사람들이 올린 이미지를 검색하는 명령입니다.

$ sudo docker search [image name]

EX)
$ sudo docker search ubuntu
 
 

 

 

 

Docker pull 명령으로 이미지 받기

 

pull 명령어는 Docker Hub 및 여러 사람들이 올린 이미지를 다운 받는 명령입니다.

$ sudo docker pull [image name]:[tag] 형식으로 입력됩니다.

$ sudo docker pull ubuntu:14.04
14.04: Pulling from library/ubuntu
2e6e20c8e2e6: Pull complete
0551a797c01d: Pull complete
512123a864da: Pull complete
Digest: sha256:96a36dd3bcd8f149fa9874c4e28c35c01f715b3e5f8f1a8e06b45887619bf43b
Status: Downloaded newer image for ubuntu:14.04
docker.io/library/ubuntu:14.04

$ sudo docker pull ubuntu:latest
latest: Pulling from library/ubuntu 125a6e411906: Pull complete Digest: sha256:26c68657ccce2cb0a31b330cb0be2b5e108d467f641c62e13ab40cbec258c68d
Status: Downloaded newer image for ubuntu:latest
docker.io/library/ubuntu:latest

이미지 이름에 jinsu/ubuntu 처럼 /앞에 사용자명을 입력하면 Docker Hub에서 해당 사용자가 올린 이미지를 다운받습니다.

$ sudo docker pull jinsu/ubuntu:latest

 

 

 

 

 

Docker images 명령으로 설치된 이미지 목록 확인

 

images 명령어는 다운받거나 설치된 이미지 목록을 출력해주는 명령입니다.

$ sudo docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu latest d2e4e1f51132 4 weeks ago 77.8MB
ubuntu 14.04 13b66b487594 14 months ago 197MB

EX)
$ sudo docker images ubuntu
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu latest d2e4e1f51132 4 weeks ago 77.8MB
ubuntu 14.04 13b66b487594 14 months ago 197MB

 

 

 

 

 

Docker run 명령으로 컨테이너 실행하기

 

run 명령어는 이미지를 컨테이너로 생성하는 명령입니다.

$ Docker run [option] [image name] [file name]

EX)
$ sudo docker run -i -t --name hello ubuntu /bin/bash

-i, -t 옵션을 사용하여 생성할 컨테이너안에 Bash를 사용하여 나중에 접속하여 입력 및 출력이 가능합니다.
--name 옵션으로 컨테이너 이름을 지정 할 수 있습니다.

 

 

 

 

Docker ps 명령으로 컨테이너 목록 확인하기

 

ps 명령어는 모든 컨테이너 목록을 출력하는 명령입니다.

$ sudo docker ps -a
CONTAINER ID   IMAGE     COMMAND       CREATED      STATUS                    PORTS     NAMES
750026f56674   ubuntu    "bash"        3 days ago   Exited (0) 3 days ago               jinsu
68bf744c5a56   ubuntu    "/bin/bash"   3 days ago   Exited (127) 3 days ago             hello
  • ps -a 옵션을 사용하면 정지된 컨테이너까지 모두 출력하는 명령입니다.
  • 옵션없이 ps만 사용하면 Up 상태인 컨테이너만 출력됩니다.

 

 

 

 

 

Docker rm 명령으로 컨테이너 삭제하기

 

run 명령어는 생성된 컨테이너를 삭제하는 명령입니다.

명령어 입력 전
$ sudo docker ps -a
CONTAINER ID   IMAGE     COMMAND       CREATED      STATUS                        PORTS     NAMES
750026f56674   ubuntu    "bash"        4 days ago   Exited (0) 17 hours ago                 jinsu
68bf744c5a56   ubuntu    "/bin/bash"   4 days ago   Exited (137) 54 minutes ago             hello
$ 

$ sudo docker rm [NAMES] or [CONTAINER ID}

EX)
$ sudo docker rm jinsu
jinsu
$ 

명령어 입력 후
$ sudo docker ps -a
CONTAINER ID   IMAGE     COMMAND       CREATED      STATUS                        PORTS     NAMES
68bf744c5a56   ubuntu    "/bin/bash"   4 days ago   Exited (137) 55 minutes ago             hello
$

 

 

 

 

Docker rmi 명령으로 이미지 삭제하기

 

rmi 명령어는 다운받은 이미지를 삭제하는 명령입니다.

명령어 입력 전
$ sudo docker images
REPOSITORY   TAG       IMAGE ID       CREATED         SIZE
ubuntu       latest    d2e4e1f51132   4 weeks ago     77.8MB
ubuntu       14.04     13b66b487594   14 months ago   197MB
$

$ sudo docker rmi [NAMES]:[TAG]

EX)
$ sudo docker rmi ubuntu:latest
Error response from daemon: conflict: unable to remove repository reference "ubuntu:latest" (must force) - container 68bf744c5a56 is using its referenced image d2e4e1f51132
$ 
지우려는 이미지가 컨테이너로 사용중이라면 위와같이 제거 할 수 없다는 에러 로그가 나옵니다.

컨테이너 확인 해보면 해당 이미지로 생성된 컨테이너가 존재합니다.
$ sudo docker ps -a
CONTAINER ID   IMAGE     COMMAND       CREATED      STATUS                        PORTS     NAMES
68bf744c5a56   ubuntu    "/bin/bash"   4 days ago   Exited (137) 59 minutes ago             hello
$ 

생성된 컨테이너 제거
$ sudo docker rm hello
hello
$ 

이미지 삭제 명령
$ sudo docker rmi ubuntu:latest
Untagged: ubuntu:latest
Untagged: ubuntu@sha256:26c68657ccce2cb0a31b330cb0be2b5e108d467f641c62e13ab40cbec258c68d
Deleted: sha256:d2e4e1f511320dfb2d0baff2468fcf0526998b73fe10c8890b4684bb7ef8290f
Deleted: sha256:e59fc94956120a6c7629f085027578e6357b48061d45714107e79f04a81a6f0c
$ 

명령어 입력 후
$ sudo docker images
REPOSITORY   TAG       IMAGE ID       CREATED         SIZE
ubuntu       14.04     13b66b487594   14 months ago   197MB
$

 

 

 

반응형

+ Recent posts