스프링 개념 정리
도커 기초 사용법 잘나와 있는 링크 : https://www.reimaginer.me/entry/docker-hands-on-part1?category=958308
wget 설치
sudo yum -y install wget
tomcat 8.5 버전 다운로드
wget https://archive.apache.org/dist/tomcat/tomcat-8/v8.5.9/bin/apache-tomcat-8.5.9.tar.gz
압축풀기
tar xvfz apache-tomcat-8.5.9.tar.gz
새로 설치한 사람은 firewalld 깔려있는지 확인해야함.
- 없으면
sudo yum install firewalld systemctl enable firewalld systemctl start firewalld
- 있으면
firewall-cmd --zone=public --add-port=8080/tcp --permanent firewall-cmd --reload
- 없으면
- AWS는 인바운드 열어준다.
- 도커 다운
sudo yum -y install docker docker-registry
- root 권한으로 접속
sudo su
- 도커 실행
systemctl start docker
- 도커 이미지 받음 - 오피셜 이미지로 받는 것
docker pull tomcat
- 도커 이미지 확인 명령어
docker images
- 도커 컨테이너 세팅
docker run -d -p 8888:8080 --name ${name} ${container id}
- 도커 컨테이너 보기
- 현재 실행되고 있는 컨테이너만 보여줌
docker ps
- 현재 실행 & 중지되어 있는 모든 컨테이너 보여줌
docker ps -a
- 현재 실행되고 있는 컨테이너만 보여줌
- 해당 8888포트로 들어가면 톰캣실행된걸 알 수 있음.
http://192.168.137.129:8888/
- docker에 tomcat war2 파일 복사
(ad
는 도커 컨테이너 id 앞 두자리이다)docker cp ./war2.war ${container id}:/usr/local/tomcat/webapps/
- tomcat 컨테이너 안으로 들어가는 것 확인
docker exec -it ${container id} /bin/bash
- 웹 상으로 접속 확인
http://192.168.137.129:8888/war2/
- docker hub 로그인 하기
docker login
17-1. docker hub에 업로드 하기위한 이미지화
(-a 는 author의 약자)
docker commit -a "${docker writer}" -m "${commit message}" ${container id} ${dockerhub id}/${repository name}:${version}
밑에 sha256 뜨면 완료.
17-2.
docker images
로 만들어진것 확인.
- 도커 push
docker push ${dockerhub id}/${repository name}:${version}
도커 이미지 받기
- 도커 pull
docker pull ${dockerhub id}/${repository name}:${version}
- 도커 실행
docker run -d -p ${external port}:${internal port} --name ${setting container name} ${image id}
- 접속하여 확인
[번외]
- 남의 것 받기
(남의 도커 주소 받으면 바로 서비스 할 수 있다. 아래 문구는 은우행님)docker pull sadb0101/wartest:0.1
- 특정 버전을 pull 받고싶으면
docker pull tomcat : ${공홈 프로그램 tag에 있는 이미지 이름}
- 옵션
-d
: background 실행-p
: 호스트의 포트와 컨테이너의 포트 바인딩--name
: 컨테이너에 이름을 부여하는 옵션docker rename
: 컨테이너 이름 바꿀 수 있다.--rm
: 종료되면 자동으로 컨테이너를 삭제-e
: 환경변수를 입력하는 옵션
[예시]docker run -d --name wp-db \ -e MYSQL_ROOT_PASSWORD=password1 \ -e MYSQL_DATABASE=wp \ mysql:5.7
--link
: 다른 컨테이너와 연결 - 연결할 컨테이너 이름(wp-db)을 오른쪽에 두고 왼쪽에는 연결할 호스트 이름(mysql)을 입력하여 컨테이너간 연결한다. [예시]docker run -d --name wp \ -e WORDPRESS_DB_PASSWORD=password1 \ --link wp-db:mysql \ -p 8080:80 \ wordpress
- 추천하는 방식은 상요자가 bridge network를 만들고 만들어진 네트워크에 연결시키는 것
docker network create wp-network docker network ls docker network connect wp-network wp-db docker run -d --name wp \ -e WORDPRESS_DB_PASSWORD=password1 \ -e WORDPRESS_DB_HOST=wp-db \ --network wp-network \ -p 8080:80 \ wordpress
-v
: 볼륨 공유 --v {호스트 디렉토리 또는 파일} : {컨테이너 디렉토리 또는 파일}
로 설정docker run -d --name wp-db \ --network wp-network \ -e MYSQL_ROOT_PASSWORD=password1 \ -e MYSQL_DATABASE=wp \ -v `pwd`/wp_db:/var/lib/mysql \ mysql:5.7
- 호스트 디렉토리가 없다면 자동으로 생성한다.
- 추천하는 방식은 상요자가 bridge network를 만들고 만들어진 네트워크에 연결시키는 것
docker run
docker pull
,docker create
,docker start
,docker attach(-it 옵션을 사용했다면)
을 합친 명령어각 image의 포트 여는것들은 공홈에서 imageid를 클릭하고
Expose
라 적혀있는 command 보면 된다.- 도커 log
- diff ${container id} a 추가 , c: 변경, d: 삭제
docker logs -f ${container id}
,docker logs -f ${container name}
-f
:tail
의-f
옵션처럼 프로그램이 종료되지 않고 기다리며 로그에 추가되는 내용을 계속 출력해주는 옵션 - 도커 중지
docker stop ${container id}
docker stop ${container name}
- 정지된 컨테이너 확인
docker ps -a
docker container ls -a
정지된 모든 컨테이너 삭제
docker rm $(docker ps -a -q)
모든 삭제
docker system prune -a
docker history
해당 이미지의 레이어(이미지 구성) 확인docker image prune
이미지를 강제로 지울 수는 있지만 이미 실행되는 컨테이너가 있으므로 Untag 하게 되고 이미지의 이름이인 댕글링 이미지가 생성된다. 이런 댕글링 이미지는 도커 이미지를 가지고 이런 저런일을 하다 보면 많이 생기는데, 해당 명령어로 한번에 삭제할 수 있다. - docker container 를 이용하여 apache 를 지속적으로 실행하고 서비스 하고 싶다면 apache 를 foreground 로 docker container 를 background 로 실행하고 exec 를 통하여 container 에 접속하면 된다. (https://bestna.wordpress.com/2014/11/10/docker-container-run-%EC%9D%B4%EC%95%BC%EA%B8%B0/)
도커 이미지를 비공개로 저장하려면 Docker Cloud를 유료로 사용하거나 Registry 서버를 자체적으로 구축해야 한다.