-
docker클라우드 교육/docker 2022. 12. 8. 10:50
Docker
리눅스의 컨테이너 기술을 이용해 만든 컨테이너 기술이다 .
아래와같이 Docker에서 사용하는 고래등에 블록이 올라가 있는 구조가 아주 정확하게 표현하고 있는것 같다.
인터넷에 도커를 치면 컨테이너와 함께 위 그림이 많이 튀어나오는데, 전공자들이 아니면 이해하기 힘들다
pc 내에 가상pc를 설치해 기존 pc로 낭비되는 자원으로 더많은 pc를 사용한다는것인데
장점으로는 설치가 빠르고, 독립적이라는것이다.
컨테이너란 애플리케이션을 실행할 수 있는 환경이다.
설치는 이해가 가겠지만, 독립적이라는 것이 어떤장점인지 알아보자 .
완성된 프로그램을 가동시키기 위해 여러가지 프로그램들이 필요한데, 각 프로그램들도 version마다 조금씩 상이하기에 최신버전이라고 프로그램에 더 적합한 것은 아니다. 그러므로 그 프로그램에 맞게 환경을 설정해줘야하는데,
이런 프로그램들이 여러개가 생기면 각 프로그램마다 맞는 버전들을 설치해주고 설치될때에도 같은 프로그램간에 간섭되지않게 해줘야한다.
이럴때 도커의 독립적인 환경이 굉장히 효율적이다
다시 위의 그림을 보면 위처럼 이해할 수 있을것이다. Docker는 컨테이너들을 컨트롤하는 프로그램이다.
컨테이너는 프로세스 하나만 돌리라고 만들어진거다 .
Docke에 컨테이너를 만들고 가동시키는 것을 알기위해 docker images라는것을 이해해야하는데
docker image란 컨테이너를 만들기 위한 프로그램들을 가동
기본적으로 Docker내의 컨테이너를 만들기위해서는 이미지를 먼저 가져와 도커 내의 컨테이너에 이미지를 형상화 한다.
docker를 다운받고, 이미지를 받고, 가동만 시키면 되는 간단한 구조이기에 리눅스환경에서 아주 쉽게 동작시킬 수 있다.
도커는 모든것을 프로세스화 해서 실행시킴
Docker 명령어
받을 이미지의 버전을 확인하는 명령어
docker search [이미지]
검색하는 이미지에 조건문들 넣을때
추천수가 100개 이상인 이미지들을 확인
docker search -f stars=100 [이미지]
공식적인 이미지를 확인
docker search -f is-official=true [이미지]
10개만 출력하고 뒤쪽 설명이 풀로 나옴
docker search --limit 10 --no-trunc [이미지]
이미지를 다운받는 명령어
docker pull [이미지]
현재 pc내의 이미지를 확인하는 명령어
docker images
docker를 실행할때 사용하는
docker run
-d : 백그라운드로 실행
-it : 포그라운드로 실행
-itd : 서비스를 실행하는지 쉘을 실행하는지 모를때 그냥 이렇게 실행하면 잘 된다.
실행할때 실행할 파일의 태그안주면 무조건 최신버전으로 찾음
아래처럼 실행하면 파일내부로 바로 접속된다. 그리고 태그를 주지않아서 최신버전으로 설치가 되었다.
아래처럼 실행되었다.
컨테이너 삭제할때 ( stop나 exit할때는 그냥 삭제가능 )
지울때 태그 넣어서 원하는 버전 지우는것
이미지를 가져올 때도 태그넣어서 원하는 버전가져옴
잘가져옴
이름을 입력하고 실행시킴, 그리고
실행된것을 확인함
실행된 컨테이너의 상태를 볼 수 있는 명령어
docker inspect [컨테이너 이름]
끝에보면 순차적으로 ip가 할당된것을 확인할 수 있다
실행된 컨테이너를 퍼즈시키는 명령어
docker pause [컨테이너 이름]
퍼즈를 푸는 명령어
docker unpause [컨테이너 이름]
컨테이너를 스톱시키는 명령어
docker stop [컨테이너 이름]
스탑시키면 ip정보들 다 빠져나감
실행되고잇는거는 -f옵션줘서 죽임
docker rm [컨테이너 이름]
docker rm -f [컨테이너 이름]
포트 지정해주기
잘 확인됨
docker inspect h1으로 ip확인하고
curl 로 확인하면 먼지 볼수있다
컨테이너 내부로 진입하는 명령어
docker exec -it [컨테이너 이름] /bin/bash
docker exec -it [컨테이너 이름] /bin/sh
네트워크 구조
컨테이너 진입에서 빠져나오는 명령어
ctrl + pq
한꺼번에 지울땐
태그 로그인
hub.docker.com
으로 가면 로그인하면 자신의 태그가 나온다.
이미지 업로드
파일하나 만들고 실행되는지 확인
이미지를 복사하는거 <none>
이름과 태그를 넣어서 복사
push로 업로드
아래처럼 업로드가 되어있다.
컨테이너 이름 바꾸기
httpd를 컨테이너로 실행시켜 웹사이트 접속시 본인 이니셜 + 도커 웹 서버가 출력되도록 이미지만드시요
제작한 이미지를 실행시켜 해당내용이 출력되는지 확인하시요 단 짝꿍들 컨테이너 에 접속해보쇼.포트포워딩
런하고 실행잘되는지 확인
안으로 접속
이렇게 파일넣을수도 있다
파일넣은거 확인
이번에 h3 만들고 vmware환경에서 같은네트워크의 사용자가 접속하게 하는법
62000번을 사용해서
vmware에서 이렇게 올려준다.
실제pc에서도 62000번 포트를 열어주고
10.0.0.22:62000/ 로 접속하면
잘뜸
nginx 하는거
컨테이너에서 밖으로 뺴오는거도 됨
컨테이너끼리 직접적으로 공유하진못함
파일변경된 기록을 보여주는명령어
지우고 기록확인해보면 추가된게 보임
도커 이미지 지우기
실습2
httpd로 h1컨테이너
nginx로 n1컨테이너
haproxy로
가상머신의 60000포트로 접속 후 새로고침햇을때 h1,n1이 번갈아 나타나기
테스트는 짝꿍이
host port는 61000번
cp를 이용해 h1은 webserver1, n1은 webserver2
로 나타나게 함
실행되는지 확인하고
ip 확인
docker inspect h1 docker inspect n1
h1
n1
프록시 설치
yum install -y haproxy vi /etc/haproxy/haproxy.cfg
h1의 ip 확인
방화벽 오픈
도커 이미지 파일 가져오기
이미지를 내보내서 이미지로 가져오기
컨테이너를 내보내서 이미지로 가져오기
먼저 이미지 압축해서 저장
압축한 파일 이미지에 풀기
머하고잇냐
실행되고있는 컨테이너 이미지로 압축해서 가져오면 생기는 문제점
압축된 컨테이너 이미지로 풀ㄹ기
근데 이렇게 가져오면 실행이 안됨
docker inspect alpine:1로 확인하면 대충 아래처럼 null이 많음
환경변수가 다 초기화되어버려서 실행이 안됨.
그래서 아래처럼 --change를 추가해서
복사한 파일도 가져왔단걸 볼수있다.
싹다 지우기
다른시스템으로 alpinen, centos 이미지를 저장
이번엔 httpd 컨테이너를 export해서 import시켜보기
실행되는 컨테이너 가져왔으니 문제가 있다. 그래서 먼저 잘 실행되고있는 컨테이너의 command부분 복사해서
아래처럼 해서 이미지에 등록해준다
docker import --change 'CMD ["httpd-foreground"]' httpd1.tar httpd:2
해주고 inspect로 정상적인 h1 확인하고
docker inspect h1
그럼 이부분이 나오는데, 이걸 긁어온다
그리고 아래처럼 입력하면 된다 .
docker run -itd -e "PATH=/usr/local/apache2/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" -p 61000:80 --name h2 httpd:2
잘 등록됨
'클라우드 교육 > docker' 카테고리의 다른 글
Dockerfile (0) 2022.12.09 프론트엔드 백엔드 연결 (0) 2022.12.09 docker network / link (0) 2022.12.09 mysql / httpd 컨테이너 연동 (1) 2022.12.09