CI/CI__Docker

docker 설치 및 설정하기

말하는감자 2019. 6. 5. 14:49

설치 및 설정
sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo yum makecache fast
sudo yum install -y docker-ce
sudo systemctl start docker
sudo systemctl enable docker
sudo gpasswd -a root docker


centos 6과 7은 설치 방법이 다르다
7 명령어로 6에서 설치하려고 해봤자 실패



설치가 정상적으로 되었다면 버전 확인
docker version



도커 기본 명령어
도커 컨테이너 확인

docker ps

도커 이미지 확인

docker images

도커 컨테이너 삭제

docker rm 컨테이너이름

도커 이미지 삭제

docker rmi 이미지이름



가장 빨리 만나는 Docker
http://pyrasis.com/docker.html

docker-compose 설치

설치
curl -L "https://github.com/docker/compose/releases/download/1.9.0/docker-compose-$(uname -s)-$(uname -m)" -o 
chmod +x /usr/local/bin/docker-compose



설치가 잘 되었는지 확인
docker-compose version


virtual box 설치

docker-machine을 사용하려면 virtualbox가 미리 설치되어 있어야 하므로 먼저 설치해준다



wget 설치
yum install wget

cd /etc/yum.repos.d

wget http://download.virtualbox.org/virtualbox/rpm/rhel/virtualbox.repo

cd

yum repolist

yum list VirtualBox*

yum install VirtualBox-5.0

virtualbox -v



virtualbox 가상화 관련 오류 해결
yum groupinstall "Development tools"

yum install https://centos7.iuscommunity.org/ius-release.rpm

yum install dkms

yum install kernel-devel

reboot

docker-machine 설치

설치
curl -L https://github.com/docker/machine/releases/download/v0.13.0/docker-machine-`uname -s`-`uname -m` >/tmp/docker-machine && chmod +x /tmp/docker-machine && sudo cp /tmp/docker-machine /usr/local/bin/docker-machine



설치 확인
docker-machine -version



노드 리스트 확인
docker-machine ls



노드 생성
docker-machine create 이름
편의상 node00부터 3개를 생성

만약 create 하다가 vb 관련 오류가 난다면 
cmos로 진입해서 advanced-virtual~~ 항목을 enabled로 수정
sudo /sbin/rcvboxdrv setup



만약 노드 확인 했을때 쿼리에러가 나있다면
docker-machine regenerate-certs 노드이름



노드 시작
docker-machine start 노드이름



노드 중지
docker-machine stop 노드이름

swarm

클러스터 초기화
docker swarm init --advertise-addr 서버아이피



워커 노드 토큰 확인
docker swarm join-token worker



매니저 노드 토큰 확인
docker swarm join-token manager



노드 접속
docker-machine ssh 노드이름
접속이 되면 귀여운 고래가 나온다


접속한 노드에서 매니저 토큰을 입력하면 매니저로 조인된다
접속한 노드에서 워커 토큰을 입력하면 워커로 조인된다



매니저가 날아갔을 때 복원 방법

docker swarm init --force-new-cluster --advertise-addr 아이피:2377

Docker war 배포

톰캣 경로 확인
/usr/local/server/apache-tomcat-8.5.33/



톰캣 webapps 안에 war 파일 업로드


tomcat pull
docker pull tomcat:8



war파일과 함께 데몬 형태로 듸우고 외부에서 접근 가능하도록 port forwarding 설정
docker run -d -i -t --name="tomcat8-test" -p 8081:8080 -v /mypath/test.war:/usr/local/server/apache-tomcat-8.5.33/webapps/파일이름.war tomcat:8



Dockerfile에 서버가 항상 떠있도록 설정
FROM openjdk:8-jre-alpine ENV CATALINA_HOME /usr/local/tomcat ENV PATH $CATALINA_HOME/bin:$PATH ... EXPOSE 8080 CMD ["catalina.sh", "run"]

 

 

 

search 명령으로 이미지 검색하기
docker는 docker hub를 통해 이미지를 공유하는 생태계가 구축되어 있다

 명령어로 docker hub에서 이미지를 검색할 수 있다



이미지 받기
pull 명령으로 이미지를 받을 수 있다





이미지 목록 출력하기
모든 이미지 목록 출력하기



특정 이미지 출력하기



>>이미지 태그는 다르지만 이름이 같은 이미지들은 모두 출력된다



컨테이너 생성하기


--name 옵션으로 컨테이너 이름을 지정할 수 있다

이름을 지정하지 않으면 docker가 자동으로 이미지를 생성하여 지정한다



컨테이너 목록 확인하기


-a 옵션을 사용하면 정지된 컨테이너까지 출력된다

옵션을 사용하지 않으면 실행되고 있는 컨테이너만 출력된다



컨테이너 시작하기


컨테이너 이름 대신  ID를 사용해도 동일하게 동작한다



컨테이너 재시작하기


컨테이너 이름 대신  ID를 사용해도 동일하게 동작한다



컨테이너 접속하기


DB나 서버 애플리케이션은 입력은 불가능하고 출력만 볼 수 있다



컨테이너 정지하기


컨테이너 이름 대신  ID를 사용해도 동일하게 동작한다



컨테이너 삭제하기


컨테이너 이름 대신  ID를 사용해도 동일하게 동작한다



이미지 삭제하기


이미지 이름 대신 ID를 사용해도 동일하게 동작한다



컨테이너의 변경 사항을 이미지로 생성하기


컨테이너의 변경 사항을 이미지 파일로 생성할 수 있다

sudo docker commit -a "Foo Bar <foo@bar.com>" -m "add hello.txt" hello-nginx hello:0.2



컨테이너에서 변경된 파일 확인하기


컨테이너가 실행되면서 변경된 파일 목록을 출력한다

출력되는 내용에서  A옵션은 추가된 파일, C옵션은 변경된 파일, D는 삭제된 파일



세부 정보 확인하기




컨테이너 연결하기