본문으로 바로가기

[docker] 설치 사용

category [ 서버 & DB 관련 ]/Docker 2019. 8. 20. 11:15

yum 업데이트

# yum -y update

 

종속성 설치

# yum install -y yum-utils device-mapper-persistent-data lvm2

 

CentOS에 Docker 저장소 추가

# yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

 

docker 설치

# yum -y install docker-ce 

 

Community Edition (CE)

Docker를 시작하고 컨테이너 기반 앱을 실험하려는 개발자 및 소규모 팀에 이상적 (무료)

두 가지 업데이트 채널을 가짐

  • Stable : 분기마다 안정적인 업데이트 제공

  • Edge : 매월 새 기능 제공

Enterprise Edition (EE)

업무용 응용 프로그램 제작, 배송 및 실행하는 엔터프라이즈 개발 및 IT팀을 위한 설계 (유료)

Docker CE와 EE 간 비교 이미지 (출처: Docker Docs, https://docs.docker.com/install/)

 

 

특정 버전의 docker 설치

사용 가능한 버전 조회

# yum list docker-ce --showduplicates | sort 

<VERSION STRING> 은 가운데 열에 있으며 하이픈 앞의 영숫자 코드의 첫 번째 부분입니다.

 

특정 버전 설치

yum install docker-ce-[특정버전]

 

참조 

https://phoenixnap.com/kb/how-to-install-docker-centos-7

 

 

 

docker 활성화 (부팅시 실행)

# systemctl enable docker

 

 

docker 실행

# systemctl start docker

 

 

docker 재시작

# service docker restart

 

 

docker 상태 확인

# systemctl status docker

 

 

이미지 검색 (docker hub, https://hub.docker.com/

# docker search php

이미지의 태그 정보는 docker 명령행에서는 확인할 수 없고 직접 dockerhub 웹사이트의 이미지 저장소에서 확인

 

docker 이미지 다운로드

# docker pull [이미지 이름]

docker pull <image name>:<tag>

 

 

받은 이미지 목록 출력

# docker images

 

 

이미지 세부정보 확인

docker inspect [옵션] <컨테이너 또는 이미지의 이름, ID>

 

 

이미지 삭제

# docker rmi ubuntu:latest

docker rmi <이미지 이름>:<태그> 형식입니다. 이미지 이름 대신 이미지 ID를 사용

 

 

컨테이너 실행

# docker run -i -t --name hello ubuntu

docker run -i -t --name <container name> <image name>

*이미지가 없을 경우 이미지를 다운로드 함

 

옵션정보

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

 

 

컨테이너 목록을 출력

# docker ps -a

-a 옵션을 사용하면 정지된 컨테이너까지 모두 출력하고, 옵션을 사용하지 않으면 실행되고 있는 컨테이너만 출력

 

 

컨테이너 시작

# docker start hello

docker start <컨테이너 이름>

 

 

컨테이너 재시작

# docker restart hello

docker restart  <컨테이너 이름>

 

 

컨테이너에 접속

# docker attach hello

docker attach <컨테이너 이름> 형식입니다. 컨테이너 이름 대신 컨테이너 ID

 

 

컨테이너 정지

# docker stop hello

 

 

컨테이너 삭제

# docker rm hello

 

 

 

docker 삭제

# yum list installed docker    //패키지명 확인

# yum remove docker.x86_64  //패키지 삭제

# docker-common \
# docker-selinux \
# docker-engine

 

# rm -rf  /var/lib/docker 전체 이미지 제거

 

 

 

 

 

proxy 사용

# /etc/systemd/system/docker.service.d/http-proxy.conf
[Service]
Environment=”HTTP_PROXY=http://85.254.112.20:8080/”

 

 

 

참조

http://pyrasis.com/Docker/Docker-HOWTO

https://gracefullight.dev/2017/07/23/Install-docker-docker-compose-to-centos/

 

 

 

 

 

 

예)

mysql 5.6 사용하기

# docker pull mysql:5.6

 

# docker images

 

# docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=password --name test-mysql mysql:5.6

빈패스워드로 설정시 -e MYSQL_ALLOW_EMPTY_PASSWORD

 

옵션정보

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

 

 

오류 1

 Error starting userland proxy: listen tcp 0.0.0.0:3306: bind: address already in use

 

로컬에 운영중인 mysql이 있을 때 발생

 

해당 포트의 프로세스 조회

netstat -ntlp | grep 3306

 

운영 체제별 명령어
  우분투 CentOS6 CentOS7
시작 service mysql start service mysqld start systemctl start mysqld
정지 service mysql stop service mysqld stop systemctl stop mysqld
재시작 service mysql restart service mysqld restart systemctl restart mysqld
상태확인 service mysql status service mysqld status systemctl status mysqld

 

 

 

오류 2

Error response from daemon: oci runtime errorError response from daemon: oci runtime error: container_linux.goError response from daemon: oci runtime error: container_linux.go:235: starting container process caused "process_linux.go:258: applying cgroup configuration for process caused \"Cannot set property TasksAccounting, or unknown property.\"".

 

=> docker 버전이 낮을경우 발생할 수 있음