분류 전체보기 101

[Docker] 6-2. 컨테이너와 호스트 간에 파일 복사

아주 기본적인 도커 사용법을 익혔다. 지금부터는 도커 사용법의 응용편에 들어간다. 나는 서버 엔지니어로 일할 것이기 때문에 도커를 깊게 공부해야 한다. 지금까지 알아본 입문서의 내용 뿐만 아니라 더욱 깊은 내용을 다룬 책이나 공식 참조문서를 읽어야 한다. 파일 복사 이번 절에서는 컨테이너와 호스트 사이에 파일을 복사하는 방법을 배워보도록 하자. 시스템은 프로그램 뿐만 아니라 프로그래밍 언어의 런타임, 웹 서버, 데이터베이스 등이 함께 구성되어 있다. 이러한 구성 요소는 시스템이 동작하는데 필요하지만 그 외에도 화면을 구성하는 이미지, 입력받은 데이터 본체 등이 있을 수 있다. ex) Wordpress ⇒ HTML, CSS 파일 등등 이러한 파일들은 wordpress 상의 조작을 통해 서버에 저장되지만 때..

Docker 2023.05.23

[Docker] 5-1. 실습 (워드프레스 & MySQL)

여러 개의 컨테이너를 다루는 연습을 위해서 워드프레스 사이트를 구축해 볼 것이다. 워드프레스는 워드프레스 컨테이너와 MySQL 컨테이너로 구성된다. 과정 1) 네트워크 생성 2) MySQL 컨테이너 생성 3) 워드프레스 컨테이너 생성 4) 컨테이너 및 네트워크 확인 5) 마무리 1. 네트워크 생성 wordpress000net1이라는 이름의 네트워크를 생성 PS C:\Users\PC> docker network create wordpress000net1 92da64ddd7a99e2f7fe07029a9650c14c85f6f86577c2ee12ae876d5afe87971 PS C:\Users\PC> docker network ls NETWORK ID NAME DRIVER SCOPE e2567159a4d0 br..

Docker 2023.05.22

[Docker] 4-4. 컨테이너의 통신

컨테이너와 통신할 때 웹 브라우저를 통해서 컨테이너에 접근하려면 외부와 접속하기 위한 설정이 필요하다. 이를 위해서 포트(port)를 설정한다. ex) 아파치(Apahce) ⇒ 서버에서 정해둔 포트(80번 포트)에서 웹 사이트에 접근을 기다리고 접근해오면 요청에 따라 웹 사이트의 페이지를 제공 하지만, 컨테이너 내부에서 실행 중인 아파치는 외부와 직접 연결되지 않았기 때문에 외부에서 접근할 수 없다. 그래서 컨테이너를 실행 중인 물리적 컴퓨터가 외부의 접근을 대신 받아 전달할 수 있도록 설정한다. 예를 들어, -p 8080:80과 같이 설정했다면 컨테이너를 실행중인 물리적 컴퓨터의 8080번 포트와 컨테이너의 80번 포트를 연결한 것이다. (물론, 이때, 8080번 포트는 다른 SW가 사용하는 포트와 겹..

Docker 2023.05.20

[Docker] 4-2. 컨테이너 실행

docker container run : 컨테이너를 생성하고 실행하는 커맨드 docker image pull docker container create docker container start위 3가지 기능을 하나로 합친 것과 같다. 이미지를 pull 하지 않았다면 이미지를 pull하고 나서 이후의 작업을 진행한다. 주요 옵션 옵션 형식 내용 --name 컨테이너이름 컨테이너 이름 지정 -p 호스트port번호:컨테이너port번호 컨테이너의 port 번호를 호스트의 port 번호로 지정 -v 호스트저장위치:컨테이너저장위치 볼륨을 mount --net=네트워크이름 컨테이너를 정해놓은 네트워크에 연결 -e 환경변수이름=값 컨테이너에 필요한 환경변수의 값을 설정 -d 백그라운드로 실행하도록 설정 -i 표준 입력..

Docker 2023.05.20

[Docker] 4-1. 컨테이너 실행

도커에서 정의한 커맨드 라인 명령어들 명령어 큰 구조 docker 상위 커맨드 하위 커맨드 옵션 ex) docker container exec -it ~~ docker container run vs docker run의 차이점 도커 1.13부터 커맨트가 재편되면서 상위 커맨드와 하위 커맨드의 조합 형태로 일원화되었다. 이전에는 docker run이라고만 입력해야 했지만 상위 커맨드 + 하위 커맨드 형식으로 수정되면서 docker container run으로 입력해도 똑같은 기능을 수행한다. 즉, docker run이 이전 버전의 커맨드 이고 docker container run이 최신 버전의 커맨드이다. 물론, 이전 버전과의 호환성을 유지하기 위해서 이전 버전의 커맨드도 실행가능하지만 최신 버전의 커맨드..

Docker 2023.05.20

[Docker] 2-3. 도커 컨테이너의 생애주기와 데이터 저장

일회용품 도커 컨테이너 컨테이너는 쉽게 만들 수 있다. 그래서 컨테이너 하나를 업데이트하면서 계속 사용하는 것 보다는 업데이트된 SW가 들어있는 새로운 컨테이너를 사용하는 게 더 좋다. 즉, 새 버전이 나오면 새 컨테이너로 갈아타면 된다. 컨테이너는 일반적으로 여려 개가 동시에 동작하는 상황이 많이 나타난다. 이러한 여러 개의 컨테이너를 일일이 업데이트하고 유지보수 할 때 마다 많은 수고가 필요하다. 때문에 오래된 컨테이너를 버리고 새로운 이미지로 부터 새로운 컨테이너를 만들어 갈아타는 방식을 사용한다. 이와 같이 컨테이너를 만들고(create), 실행하고(run & start), 종료하고(stop), 폐기한(remove)한 다음 컨테이너를 다시 만드는 일련의 과정을 컨테이너의 생명 주기(LifeCycl..

Docker 2023.05.18

[Linux] 배포판, shell, 커널

OS는 shell을 통해서 명령을 통해서 kernel에 명령을 전달한다. 즉, Linux OS는 대표적으로 bash shell을 통해서 linux kernel에 명령을 전달한다. 그럼, ubuntu, debian 같은 건 뭐냐. 이런 것들은 리눅스 배포판이라고 하는데 Linux 커널을 기반으로 한 완전한 운영체제이다. Linux 커널은 운영 체제의 핵심이지만 단독으로 사용하기는 어렵다. 그래서, 배포판에서 Linux 커널과 함께 애플리케이션, 라이브러리, 도구, 설정 등을 포함해서 사용자에게 전달한다.

다양한 주제 2023.05.17

[Docker] 2-2. 도커 허브, 이미지, 컨테이너

이미지와 컨테이너 컨테이너를 생성하기 위해서는 이미지가 필요하다. 이미지: 컨테이너를 만들어내는 설계도 로봇을 원하는 아이에게 로봇을 만들어내는 틀은 아무 소용이 없다. 마찬가지로 이미지 역시 이미지 자체로는 쓸모가 없다. 이미지를 가지고 만들어낸 컨테이너가 중요하다. 때문에 실제로 사용하는 건 컨테이너이다. 이미지를 그대로 쓸 일은 없다. 그래서 하나의 이미지를 가지고 여러 개의 컨테이너를 만들어낼 수도 있다. 컨테이너로 이미지 만드는 것도 가능 컨테이너로 이미지를 만들 경우 어떤 장점이 있을까. 컨테이너로 이미지를 만든다는 건 이미 만들어낸 컨테이너를 수정해서 새로운 이미지를 만드는 과정이다. 그렇게 새로운 이미지를 만들어내면 수정된 컨테이너를 여러 개 만들 수 있다. 도커 엔진 간에 이동 가능 여기..

Docker 2023.05.17

[Docker] 2-1. 도커의 동작 원리

도커의 구조에 대해 좀 더 자세히 살펴보자. 일반적으로 도커와 컨테이너는 서버에서 사용된다. 간단하게 말하면 서버 컴퓨터의 OS가 Linux일 때 Linux 위에 도커 엔진을 설치하고 도커 엔진 위에 컨테이너를 위치시키는 구조로 이뤄져 있다. 컨테이너 안에는 OS 비슷한 것이 들어있음 컨테이너는 어떤 구조를 갖고 있을까 모든 컨테이너에는 Linux 운영체제 비슷한 무언가가 들어있다. 비슷한 무언가라고 말하는 이유는 진짜 OS가 아니기 때문이다. 아예 비어있는 컨테이너를 만들어서 원하는 구성을 할 수도 있지만 이는 좀 더 숙련된 다음에 진행하도록 하자. 도커 엔진 아래 & 컨테이너 내부에 Linux 운영체제 비슷한 것이 있다. 이 점이 도커의 가장 큰 특징 중 하나다. 원래 OS는 커널(kernel)과 커..

Docker 2023.05.17

[Docker] 1-2. 서버와 도커

도커와 연관되는 부분을 중심으로 서버가 무엇인지 알아보자. 서버의 두 가지 의미 도커는 서버에서 사용하는 것이 주 목적인 SW이다. 때문에 서버에 대한 기본적인 지식은 알고 있어야 한다. 서버란 무엇인가? 단어 그대로 해석하면 어떤 서비스(service)를 제공(serve)하는 것을 말한다. 개발 현장에서는 서버라는 용어를 1) 기능적 의미의 서버 2) 물리적 컴퓨터로서의 서버 이 두 가지를 의미한다. 기능적 의미의 서버 흔히 얘기하는 '웹 서버에 올려줘', '메일 서버가 죽었어'에서 말하는 서버는 기능적 의미의 서버를 가리킨다. 웹 서버는 웹 기능을 제공하는 서버이고 메일 서버는 메일 기능을 제공하는 서버이다. 물리적 컴퓨터로서의 서버 = 어딘가에 실제로 존재하는 컴퓨터 서..

Docker 2023.05.16