스프링 개념 정리



도커 기초 사용법 잘나와 있는 링크 : https://www.reimaginer.me/entry/docker-hands-on-part1?category=958308


  1. wget 설치 sudo yum -y install wget

  2. tomcat 8.5 버전 다운로드 wget https://archive.apache.org/dist/tomcat/tomcat-8/v8.5.9/bin/apache-tomcat-8.5.9.tar.gz

  3. 압축풀기 tar xvfz apache-tomcat-8.5.9.tar.gz

  4. 새로 설치한 사람은 firewalld 깔려있는지 확인해야함.

    1. 없으면
       sudo yum install firewalld
       systemctl enable firewalld
       systemctl start firewalld
      
    2. 있으면
       firewall-cmd --zone=public --add-port=8080/tcp --permanent
       firewall-cmd --reload
      
  • AWS는 인바운드 열어준다.
  1. 도커 다운
    sudo yum -y install docker docker-registry
    
  2. root 권한으로 접속
    sudo su
    
  3. 도커 실행
    systemctl start docker
    
  4. 도커 이미지 받음 - 오피셜 이미지로 받는 것
    docker pull tomcat
    
  5. 도커 이미지 확인 명령어
    docker images
    
  6. 도커 컨테이너 세팅
    docker run -d -p 8888:8080 --name ${name} ${container id}
    
  7. 도커 컨테이너 보기
    1. 현재 실행되고 있는 컨테이너만 보여줌
      docker ps 
      
    2. 현재 실행 & 중지되어 있는 모든 컨테이너 보여줌
      docker ps -a
      
  8. 해당 8888포트로 들어가면 톰캣실행된걸 알 수 있음.
    http://192.168.137.129:8888/
    

  1. docker에 tomcat war2 파일 복사
    (ad는 도커 컨테이너 id 앞 두자리이다)
    docker cp ./war2.war ${container id}:/usr/local/tomcat/webapps/
    

  2. tomcat 컨테이너 안으로 들어가는 것 확인
    docker exec -it ${container id} /bin/bash
    
  3. 웹 상으로 접속 확인
    http://192.168.137.129:8888/war2/
    

  1. 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

로 만들어진것 확인.

  1. 도커 push
    docker push ${dockerhub id}/${repository name}:${version}
    
도커 이미지 받기
  1. 도커 pull
    docker pull ${dockerhub id}/${repository name}:${version}
    
  2. 도커 실행
    docker run -d -p ${external port}:${internal port} --name ${setting container name} ${image id}
    
  3. 접속하여 확인

[번외]

  • 남의 것 받기
    (남의 도커 주소 받으면 바로 서비스 할 수 있다. 아래 문구는 은우행님)
      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
      
    • 호스트 디렉토리가 없다면 자동으로 생성한다.
  • docker run docker pull, docker create, docker start, docker attach(-it 옵션을 사용했다면) 을 합친 명령어

  • 각 image의 포트 여는것들은 공홈에서 imageid를 클릭하고 Expose라 적혀있는 command 보면 된다.

  • 도커 log
    1. diff ${container id} a 추가 , c: 변경, d: 삭제
    2. docker logs -f ${container id}, docker logs -f ${container name}

    -f : tail-f 옵션처럼 프로그램이 종료되지 않고 기다리며 로그에 추가되는 내용을 계속 출력해주는 옵션

  • 도커 중지
    1. docker stop ${container id}
    2. docker stop ${container name}
  • 정지된 컨테이너 확인
    1. docker ps -a
    2. 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 서버를 자체적으로 구축해야 한다.




© 2019. by mintheon

Powered by mintheon