도커 기본 - Docker

설치

도커 공식 사이트 : https://www.docker.com CentOS 설치 메뉴얼 : https://docs.docker.com/install/linux/docker-ce/centos/

이전 버전 삭제

$ sudo yum remove docker \
                docker-client \
                docker-client-latest \
                docker-common \
                docker-latest \
                docker-latest-logrotate \
                docker-logrotate \
                docker-selinux \
                docker-engine-selinux \
                docker-engine

YUM 저장소 설정

$ sudo yum install -y yum-utils \
device-mapper-persistent-data \
lvm2
 
$ sudo yum-config-manager \
   --add-repo \
  https://download.docker.com/linux/centos/docker-ce.repo

도커 CE 버전 설치

$ sudo yum install docker-ce

public.gpg.key 관련 해결하기

You have enabled checking of packages via GPG keys. This is a good thing.
However, you do not have any GPG public keys installed. You need to download
the keys for packages you wish to install and install them.
You can do that by running the command:
  rpm --import public.gpg.key

위와 같은 메세지 출력될 경우 rpm --import public.gpg.key 명령을 실행해도 안될 경우 다음과 같이 진행한다.

// 파일을 찾는 다.
$ sudo find / -name "public.gpg.key" -print
// 찾은 경로를 등록한다.
$ sudo rpm --import /../../public.gpg.key

// 파일을 찾지 못하면 아래의 경로에 있을 수 있다. (https://www.centos.org/keys/)
$ sudo rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

그래도 안될 경우

$ sudo rm /etc/yum.repos.d/docker-ce.repo
// 아래의 파일이 있으면...
$ sudo rm /etc/yum.repos.d/download.docker.com_linux_centos_docker-ce.reposudo.repo

하고 다시 처음부터 설치한다.

운영체제가 실행되면 자동으로 실행될 수 있게 도커를 추가한다.

$ sudo systemctl start docker

# docker 실행 권한 주기 : 설정 후 터미널을 종료하거나 재접속해야 한다.
$ sudo usermod -aG docker $USER

docker-compose 설치 (옵션)

설치 후 터미널을 종료하거나 재접속해야 한다.

$ sudo curl -L https://github.com/docker/compose/releases/download/1.21.2/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose

기본 명령어

이미지 목록

$ docker images

원격저장소에서 이미지 검색

$ docker search 이미지명

이미지 받기

# 마지막 버전은 latest 버전 생략하면 마지막 버전 받음
$ docker pull 이미지명:버전

이미지를 컨테이너로 생성

$ docker run --name 생성할컨테이너명 이미지명

-d 백그라운드 실행
-p 호스트포트:컨테이너포트 > 포트설정
--network 네트워크명 > 네트워크 그룹을 만들어 컨테이너들끼리 쉽게 연결할 수 있음 --link 대신 사용됨.
-it 입력과 출력을 할 수 있음 i(interactive), t(Pseudo-tty) 실행된 Bash 셸에 입력 및 출력
-v 호스트경로:컨테이너경로 > 호스트 경로를 컨테이너 경로의 폴더나 파일을 대처할 수 있음.

생성된 컨테이너 목록

$ docker ps
$ docker ps -f "name=컨테이너명"
$ docker ps -a

컨테이너 세부정보

$ docker inspect 컨테이너명
$ docker inspect 컨테이너명 | grep "검색어"

컨테이너 상태 변경

$ docker start 컨테이너명
$ docker stop 컨테이너명
$ docker restart 컨테이너명

컨테이너 실행 -i 옵션으로 입력할 수 있다.

실행중인 컨테이너 창에서 나오기
ctrl + c 컨테이너 종료됨.
ctrl + p + q 컨테이너 종료 안됨. (맥에서안됨;;)

컨테이너 내부 명령 실행하기

$ docker exec -it 컨테이너명 echo "good"

컨테이너 내부 접근 - 셸

$ docker exec -it 컨테이너명 bash

컨테이너 삭제

$ docker rm 컨테이너명

내려받은 이미지 삭제

$ docker rmi 이미지명:버전

임시로 생성된 none 이미지 검색 및 삭제

$ docker images -f "dangling=true" -q
# none 이미지 일괄 삭제
$ docker rmi $(docker images -f "dangling=true" -q)

컨테이너 내부 파일이나 폴더 복사

$ docker cp 컨테이너이름:경로 호스트경로

컨테이너 로그보기

# -f 로그유지 --tail=5 최근 5라인 로그부터 출력
$ docker logs 컨테이너이름
$ docker logs -f --tail=5 컨테이너이름

컨테이너 네트워크 구성

$ docker network create hello-network
$ docker run --name db -d --network hello-network mongo
$ docker run --name web -d -p 80:80 --network hello-network nginx

그외 명령어

컨테이너 접속

$ docker attach 컨테이너명

컨테이너 이미지 만들기 - 이미지명은 이미 존재하는 이미지명이 있으면 덮어쓴다.

$ docker commit 컨테이너명 이미지명

컨테이너 변경사항

$ docker diff 컨테이너명 혹은 이미지명

컨테이너 내보내기 (tar 압축한다)

$ docker export -o 압축파일명.tar 컨테이너명

컨테이너 가져오기

$ docker import 압축파일명.tar

이미지 내보내기 (tar 압축한다)

$ docker save -o 압축파일명.tar 이미지명...

이미지 가져오기

$ docker load -i 압축파일명.tar

docker-compose 사용법

docker 이미지 만들기


◀ PREV 1234···302 NEXT ▶