티스토리 뷰

1. Docker 사용법 (Linux에서)

 

  • Docker 다운받기

Centos 기준 

# yum install docker


Loaded plugins: fastestmirror, langpacks
Determining fastest mirrors
 * base: mirror.navercorp.com
 * extras: mirror.navercorp.com
 * updates: mirror.navercorp.com
base                                                                                          | 3.6 kB  00:00:00
extras                                                                                        | 2.9 kB  00:00:00
updates                                                                                     | 2.9 kB  00:00:00
(1/4): extras/7/x86_64/primary_db                                                    | 152 kB  00:00:00
(2/4): base/7/x86_64/group_gz                                                        | 165 kB  00:00:00
(3/4): updates/7/x86_64/primary_db                                                 | 1.1 MB  00:00:00

 

2. Docker 사용 권한 주기

  • docker 는 기본적으로 root 권한이 필요로 되어있다고 함.
  • sudo 명령어 없이 docker를 이요하고 싶다면 아래 커맨드로 사용자에게 권한을 줍시다.

      sudo usermod -aG docker your-user

  • 버전확인

    [root@gampol sys4u]# docker --version 
    Docker version 1.13.1, build 7f2769b/1.13.1 

 

3. sonarqube Docker 설치하기(소나큐브)

[root@gampol sys4u]# docker pull  sonarqube:7.7-community
Trying to pull repository docker.io/library/sonarqube ...
7.7-community: Pulling from docker.io/library/sonarqube
6f2f362378c5: Pull complete
494c27a8a6b8: Pull complete
7596bb83081b: Pull complete
372744b62d49: Pull complete
fb72767f9beb: Pull complete
3fe571af508a: Pull complete
3e6725074325: Pull complete
37684a10c7c5: Pull complete
05b7a0cb1eab: Pull complete
2b3959d41c49: Pull complete
5d1ba9e9abfd: Pull complete
Digest: sha256:15eb5cf8013f6b18049f32e2b6e5fcdd585c5c93766c7f4df393c6ba1937bfb4
Status: Downloaded newer image for docker.io/sonarqube:7.7-community

# 에러 조치 방법(Cannot connect to the Docker daemon)


4. Sonarqube 환경설정(DB 설정 부분)

 

#vi sonarqube-5.1.2/conf/sonar.properties 

 

sonar.jdbc.username=sonar

sonar.jdbc.password=패스

sonar.jdbc.url=jdbc:mysql://localhost:3306/SONAR

 

sonar.web.host=0.0.0.0

sonar.web.port=9000

 

sonar.web.context=

 

#docker DB 설정방법 (run 하면서 설정하면 가능)

 

docker run -d --name sonarqube \

    -p 9000:9000 -p 9092:9092 \

    -e SONARQUBE_JDBC_USERNAME=sonar \

    -e SONARQUBE_JDBC_PASSWORD=sonar \

    -e SONARQUBE_JDBC_URL=jdbc:mysql://192.168.0.32:3306/sonar \

    sonarqube

    -e SONARQUBE_JDBC_URL=jdbc:mysql://dev-rds-selvas-my-01.vcp.lotte.comdev-rds-vp-my-:3306/sonar \

 

 

 

5. sonarqube Docker 실행하기(run / 소나큐브 : 9000 port)

[root@gampol sys4u]# docker run -d --name sonarqube -p 9000:9000 sonarqube
Unable to find image 'sonarqube:latest' locally
Trying to pull repository docker.io/library/sonarqube ...
latest: Pulling from docker.io/library/sonarqube
b8f262c62ec6: Pull complete
377e264464dd: Pull complete
bde67c1ff89f: Pull complete
6ba84ddbf1b2: Pull complete
ee22adb378a6: Pull complete
41d339c20e4f: Pull complete
25c2c6b7a1f3: Pull complete
4b36ae3e85ab: Pull complete
1062305937e9: Pull complete

 

6.컨테이너사용(옵션)

-d detached mode 흔히 말하는 백그라운드 모드
-p 호스트와 컨테이너의 포트를 연결 (포워딩)
-v 호스트와 컨테이너의 디렉토리를 연결 (마운트)
-e 컨테이너 내에서 사용할 환경변수 설정
–name 컨테이너 이름 설정
–rm 프로세스 종료시 컨테이너 자동 제거
-it -i와 -t를 동시에 사용한 것으로 터미널 입력을 위한 옵션
–link 컨테이너 연결 [컨테이너명:별칭]

 

7. 이미지 조작

1) 현디렉토리의 Dockerfile로 이미지를 빌드

 

docker build  ./

docker build -t REPOSITORY[:TAG] ./

#여기 위에 tag 는 버전을 사용합니다.

 

2) 빌드를 처음부터 재실행

docker build --no-cache .

 

3) 컨테이너로부터 이미지 작성

docker commit CONTAINER[:TAG] IMAGE[:TAG]

// 컨테이너는 미리 종료시켜 둘 것

 

 

4) 이미지빌드시의 명령어를 확인(Dockerfile정보)

[root@gampol sys4u]# docker images
REPOSITORY            TAG                 IMAGE ID            CREATED             SIZE
docker.io/ubuntu      latest              2ca708c1c9cc        4 days ago          64.2 MB
docker.io/sonarqube   latest              d7558a6a8598        9 days ago          479 MB
docker.io/sonarqube   7.7-community       8f2020f3f67d        3 months ago        738 MB

docker history IMAGE 

예제}

[root@gampol sys4u]# docker history 8f2020f3f67d
IMAGE               CREATED             CREATED BY                                      SIZE                COMMENT
8f2020f3f67d        3 months ago        /bin/sh -c #(nop)  ENTRYPOINT ["./bin/run....   0 B
           3 months ago        /bin/sh -c #(nop)  USER sonarqube               0 B
           3 months ago        /bin/sh -c #(nop) COPY file:11ab5c1c06a392...   832 B
           3 months ago        /bin/sh -c #(nop) WORKDIR /opt/sonarqube        0 B
           3 months ago        /bin/sh -c #(nop)  VOLUME [/opt/sonarqube/...   0 B
           3 months ago        /bin/sh -c set -x     && (gpg --batch --ke...   248 MB
           3 months ago        /bin/sh -c set -x     && wget -O /usr/loca...   1.29 MB
           3 months ago        /bin/sh -c groupadd -r sonarqube && userad...   329 kB
           3 months ago        /bin/sh -c #(nop)  EXPOSE 9000                  0 B
           3 months ago        /bin/sh -c #(nop)  ENV SONAR_VERSION=7.7 S...   0 B
           3 months ago        /bin/sh -c set -eux;   dpkgArch="$(dpkg --...   205 MB
           3 months ago        /bin/sh -c #(nop)  ENV JAVA_URL_VERSION=8u...   0 B
           3 months ago        /bin/sh -c #(nop)  ENV JAVA_BASE_URL=https...   0 B
           3 months ago        /bin/sh -c #(nop)  ENV JAVA_VERSION=8u212-b04   0 B
           3 months ago        /bin/sh -c { echo '#/bin/sh'; echo 'echo "...   27 B
           3 months ago        /bin/sh -c #(nop)  ENV PATH=/usr/local/ope...   0 B
           3 months ago        /bin/sh -c #(nop)  ENV JAVA_HOME=/usr/loca...   0 B
           3 months ago        /bin/sh -c #(nop)  ENV LANG=C.UTF-8             0 B
           3 months ago        /bin/sh -c set -eux;  apt-get update;  apt...   9.67 MB
           3 months ago        /bin/sh -c apt-get update && apt-get insta...   142 MB
           3 months ago        /bin/sh -c set -ex;  if ! command -v gpg >...   7.81 MB
           3 months ago        /bin/sh -c apt-get update && apt-get insta...   23.2 MB
           3 months ago        /bin/sh -c #(nop)  CMD ["bash"]                 0 B
           3 months ago        /bin/sh -c #(nop) ADD file:6e8620824300ccf...   101 MB

 

 

 

5) 다운로드한 이미지 리스트 출력

[root@gampol sys4u]# docker images
REPOSITORY            TAG                 IMAGE ID            CREATED             SIZE
docker.io/ubuntu      latest              2ca708c1c9cc        4 days ago          64.2 MB
docker.io/sonarqube   latest              d7558a6a8598        9 days ago          479 MB
docker.io/sonarqube   7.7-community       8f2020f3f67d        3 months ago        738 MB
[root@gampol sys4u]#

 

 

6) URL로 부터 이미지를 읽어들이기

docker import url REPOSITORY[:TAG]

 

 

7) URL의 파일을 이미지 내의 PATH에 생성

docker insert IMAGE URL PATH

 

 

8) 파일을 이미지로 읽어들이기

 

docker load < image_filename.tar

9) 이미지 다운로드

 

docker pull IMAGE_NAME

docker pull IMAGE_NAME:TAG

 

예) 소나큐브 이미지 다운받기 (7.7-커뮤니티버전)

[root@gampol sys4u]# docker pull  sonarqube:7.7-community 
Trying to pull repository docker.io/library/sonarqube ... 
7.7-community: Pulling from docker.io/library/sonarqube 
6f2f362378c5: Pull complete 
494c27a8a6b8: Pull complete 

 

10) 이미지 삭제

docker rmi IMAGE // 삭제할 이미지 이름을 열거

docker rmi $(docker images | grep '<none>' | awk '{print$3}')

// 태그가 없는 이미지를 모두 삭제한다

 

예) 우분투 이미지 삭제해보기 

[root@gampol sys4u]# docker images
REPOSITORY            TAG                 IMAGE ID            CREATED             SIZE
docker.io/ubuntu      latest              2ca708c1c9cc        4 days ago          64.2 MB
docker.io/sonarqube   latest              d7558a6a8598        9 days ago          479 MB
docker.io/sonarqube   7.7-community       8f2020f3f67d        3 months ago        738 MB

 


[root@gampol sys4u]# docker rmi 2ca708c1c9cc
Untagged: docker.io/ubuntu:latest
Untagged: docker.io/ubuntu@sha256:b88f8848e9a1a4e4558ba7cfc4acc5879e1d0e7ac06401409062ad2627e6fb58
Deleted: sha256:2ca708c1c9ccc509b070f226d6e4712604e0c48b55d7d8f5adc9be4a4d36029a
Deleted: sha256:bd416bed302bc2f061a2f6848a565483a5f265932d2d4fa287ef511b7d1151c8
Deleted: sha256:5308e2e4a70bd4344383b8de54f8a52b62c41afb5caa16310326debd1499b748
Deleted: sha256:dab02287e04c8b8207210b90b4056bd865fcfab91469f39a1654075f550c5592
Deleted: sha256:a1aa3da2a80a775df55e880b094a1a8de19b919435ad0c71c29a0983d64e65db
[root@gampol sys4u]# docker images
REPOSITORY            TAG                 IMAGE ID            CREATED             SIZE
docker.io/sonarqube   latest              d7558a6a8598        9 days ago          479 MB
docker.io/sonarqube   7.7-community       8f2020f3f67d        3 months ago        738 MB
[root@gampol sys4u]#

 

 

 

11) 이미지를 파일로 출력

docker save IMAGE > image_filename.tar

예제)

[root@gampol sys4u]# docker save d7558a6a8598  > image_filename.tar

[root@gampol sys4u]#
[root@gampol sys4u]# ll
합계 473764
-rw-r--r--. 1 root  root  485097984  9월 24 07:02 image_filename.tar
drwxr-xr-x. 2 sys4u sys4u      4096  9월 10 09:22 공개
drwxr-xr-x. 2 sys4u sys4u      4096  9월 10 09:22 다운로드
drwxr-xr-x. 2 sys4u sys4u      4096  9월 10 09:22 문서
drwxr-xr-x. 2 sys4u sys4u      4096  9월 10 09:22 바탕화면
drwxr-xr-x. 2 sys4u sys4u      4096  9월 10 09:22 비디오
drwxr-xr-x. 2 sys4u sys4u      4096  9월 10 09:22 사진
drwxr-xr-x. 2 sys4u sys4u      4096  9월 10 09:22 서식
drwxr-xr-x. 2 sys4u sys4u      4096  9월 10 09:22 음악
[root@gampol sys4u]#

 

 

 

12)이미지 검색

docker search TERM

예제)

root@gampol sys4u]# docker search TERM
INDEX       NAME                                                       DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
docker.io   docker.io/termux/package-builder                           Image for building termux packages              7                 
docker.io   docker.io/terminus7/deep-learning                          Collection of CUDA enabled containers for ...   4                    [OK]

 

13)이미지에 태그 생성

docker tag IMAGE[:TAG] NEWIMAGE[:TAG]

8. 컨테이너 조작

 

1) 기동중인 컨테이너에 접속

docker attach CONTAINER               // exit로 종료하면 컨테이너도 중지

docker exec -it CONTAINER /bin/bash   // exit로 종료해도 컨테이너는 실행

 

2) 컨테이너 내의 파일을 로컬에 복사

docker cp CONTAINER:/remote/path/remote_filename /local/path/local_filename

 

3) 이미지로부터 컨테이너 작성

 docker create IMAGE

 docker create --name NAME IMAGE

 

4) 컨테이너 작성후 이미지로부터 변경된 파일 확인

 docker diff CONTAINER

 

5) 컨테이너 내의 이벤트를 감시(기동/정지/작성 등)

docker events

 

 

6) 컨테이너 내의 COMMAND 실행

docker exec CONTAINER COMMAND

 

7)컨테이너 내의 COMMAND를 대화식으로 실행

 docker exec -it CONTAINER COMMAND

 

8)컨테이너를 파일로 출력 (컨테이너의 상세정보 확인)

 docker inspect CONTAINER

 docker inspect  --format="{{.NetworkSettings.IPAddress}}" CONTAINER

 

 

9) format옵션을 이용하면 출력정보를 제어할 수 있다. 컨테이너 stdout을 확인

docker logs CONTAINER

 

10) 컨테이너와의 포트 전송 설정을 확인

docker port CONTAINER

docker port CONTAINER PRIVATE_PORT

 

11) 컨테이너 리스트 확인

docker ps       // 실행중인 컨테이너만 출력

docker ps -a    // 정지중인 컨테이너를 포함

docker ps -aq   // 컨테이너의 해쉬 리스트만 출력

 

12)컨테이너 삭제

docker rm CONTAINER [CONTAINER...] // 삭제할 컨테이너 이름을 열거

docker rm $(docker ps -aq)         // 모든 컨테이너 삭제

 

 

13)이미지로부터 컨테이너 기동

docker run -itd IMAGE                        // 컨테이너를 만들어 띄우기만 할 뿐

docker run -it IMAGE /bin/bash               // 이름이 없으면 자동으로 부여됨

docker run -it --name NAME IMAGE /bin/bash   // 이름을 붙이고 bash 접속

 

14)로컬 디렉토리에 컨테이너 디렉토리를 mount 시키기

docker run -it -v /var/www:/var/html IMAGE /bin/bash  

// 로컬 디렉토리 /var/www를 컨테이너의 /var/html에 mount

 

15)로컬 포트 통신을 컨테이너 포트에 전송시키기

docker run -it -p 9000:9000 IMAGE bash

// 로컬 포트 9000을 컨테이너 포트 9000에 전송시킨다.

// httpd 컨테이너를 띄우면 기본 9000포트로 listening을 하고 있으므로

// 접속할 때에는 브라우저에서 http://xx.xx.xx.xx:9000으로 접속한다.

 

[root@gampol sys4u]# docker run -d --name sonarqube -p 9000:9000 sonarqube
Unable to find image 'sonarqube:latest' locally
Trying to pull repository docker.io/library/sonarqube ...
latest: Pulling from docker.io/library/sonarqube
b8f262c62ec6: Pull complete
377e264464dd: Pull complete
bde67c1ff89f: Pull complete

 

 

 

 

 

16)컨테이너 기동/정지/재시작

docker start CONTAINER

docker stop CONTAINER

docker restart CONTAINER

 

17)컨테이너에서 실행 중인 프로세스 확인

docker top CONTAINER

 

댓글