You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
나는 정상적으로 MySQL을 설치하였지만, 팀원의 컴퓨터에서는 MySQL 설치 도중 에러가 발생하는 것이다. 둘은 설치 과정을 동일하게 진행했는데도 이런 경우가 발생한다.
이러한 이유는 다양한 이유가 있다. 버전이 다르다거나, 운영체제(Windows, Mac OS 등)가 다르다거나, 컴퓨터에 깔려있는 다른 프로그램과 충돌이 났거나 등등 다양한 이유로 정상적으로 설치가 진행되지 않는 것이다. 설치 과정이 복잡하다면 새 컴퓨터를 사서 MySQL 설치할 때 번거롭고 귀찮다고 느껴진다.
이러한 불편함을 해결하기 위해서 나온 도구가 Docker 인 것이다. Docker 명령어 한 줄로 어떤 컴퓨터에든 MySQL을 설치하고 실행할 수 있게 되는 것이다.
아래와 같은 장점도 있다!
매번 귀찮은 설치 과정을 일일히 거치지 않아도 된다.
항상 일관되게 프로그램을 설치할 수 있다. (버전, 환경 설정, 옵션, 운영 체제 등)
각 프로그램이 독립적인 환경에서 실행되기 때문에 프로그램 간 충돌이 발생하지 않는다.
2. Docker
Docker란 컨테이너를 사용하여 각각의 프로그램을 분리된 환경에서 실행 및 관리할 수 있는 도구이다.
3. 컨테이너
윈도우 환경에서 ‘하나’의 컴퓨터로 ‘여러’ 사용자를 나눠서 사용할 수 있다. 각 사용자의 환경에 따라 ‘독립적’으로 구성이 되어있기 때문에 A 사용자에게 깔려있는 프로그램을 B 사용자는 이용할 수 없다.
컨테이너도 이와 비슷한 개념이다. 하나의 컴퓨터 환경 내에서 ‘독립적인’ 컴퓨터 환경을 구성해서, 각 환경에 프로그램을 별도로 설치할 수 있게 만든 개념이다.
컨테이너에서 사용되지 않은 모든 이미지 삭제: docker image rm $(docker images -q)
위와 같이 -f 옵션을 붙여서 사용 가능
5-2. Docker Container
컨테이너 생성 → 이미지 기반으로 생성된다.
명령어: docker create ‘image’
컴퓨터를 만드는 과정
이미지가 없다면, Docker hub에서 이미지를 다운받는다.
생성된 컨테이너 확인
명령어: docker ps -a
컨테이너 실행
명령어: docker start ‘container-id'
container-id는 일부만 입력해도 실행된다.
컨테이너 중지
명령어: docker stop 'container-id'
안전하게 종료
명령어: docker kill 'container-id'
강제 종료하는 방식
container-id는 일부만 입력해도 실행된다.
컨테이너 삭제
명령어: docker rm 'container-id'
container-id는 일부만 입력해도 실행된다.
생성 및 실행
명령어: docker **run** 'image'
이미지 다운 → 컨테이너 생성 → 컨테이너 실행
default: fore-ground 환경으로 실행
-d : back-ground 환경 (docker run -d ‘image’ )
- 포그라운드(fore-ground): 내가 실행시킨 프로그램의 내용이 화면에서 실행되고 출력되는 상태
- 실시간으로 로그를 확인할 수 있다. / 다른 명령어를 입력할 수 없다.
- 백그라운드(back-ground): 내가 실행시킨 프로그램이 컴퓨터 내부적으로 실행되는 상태
- 다른 명령어를 입력할 수 있다. / 로그를 실시간으로 확인할 수 없다.
--name : docker container 이름 지정 (docker run -d —name web-server ‘image’ )
-p : 포트 포워딩 - 컨테이너 접속할 수 있도록 포트를 맞춰주는 과정
#docker run -d -p [호스트 포트]:[컨테이너 포트] 이미지명[:태그명]
$ docker run -d -p 4000:80 nginx
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
-
1. Docker를 왜 쓸까?
한 마디로 쉽게 하자면 “나는 되던데?” 문제를 해결하기 위한 도구이다.
팀원과 함께 MySQL을 설치한다고 가정을 해보자.
나는 정상적으로 MySQL을 설치하였지만, 팀원의 컴퓨터에서는 MySQL 설치 도중 에러가 발생하는 것이다. 둘은 설치 과정을 동일하게 진행했는데도 이런 경우가 발생한다.
이러한 이유는 다양한 이유가 있다. 버전이 다르다거나, 운영체제(Windows, Mac OS 등)가 다르다거나, 컴퓨터에 깔려있는 다른 프로그램과 충돌이 났거나 등등 다양한 이유로 정상적으로 설치가 진행되지 않는 것이다. 설치 과정이 복잡하다면 새 컴퓨터를 사서 MySQL 설치할 때 번거롭고 귀찮다고 느껴진다.
이러한 불편함을 해결하기 위해서 나온 도구가
Docker
인 것이다. Docker 명령어 한 줄로 어떤 컴퓨터에든 MySQL을 설치하고 실행할 수 있게 되는 것이다.아래와 같은 장점도 있다!
2. Docker
Docker란 컨테이너를 사용하여 각각의 프로그램을 분리된 환경에서 실행 및 관리할 수 있는 도구이다.
3. 컨테이너
윈도우 환경에서 ‘하나’의 컴퓨터로 ‘여러’ 사용자를 나눠서 사용할 수 있다. 각 사용자의 환경에 따라 ‘독립적’으로 구성이 되어있기 때문에 A 사용자에게 깔려있는 프로그램을 B 사용자는 이용할 수 없다.
컨테이너도 이와 비슷한 개념이다. 하나의 컴퓨터 환경 내에서 ‘독립적인’ 컴퓨터 환경을 구성해서, 각 환경에 프로그램을 별도로 설치할 수 있게 만든 개념이다.
출처: https://www.docker.com/resources/what-container
컨테이너(Container)의 독립성
컨테이너는 ‘독립적인 컴퓨터 환경’을 가지고 있다.
4. 이미지(Image)란
이미지 = 닌텐도 칩
MySQL 서버를 이미지로 만들었다면, 이 이미지를 Docker로 실행시키는 순간 MySQL 서버가 컨테이너(Container) 환경에서 실행된다. MySQL을 일일히 설치할 필요 없이 MySQL 데이터베이스를 사용할 수 있다.
다른 예로, 우리의 백엔드 서버를 빌드 후 jar 파일로 만들어 Docker 이미지로 빌드한 후, 이 이미지를 실행시키는 순간 컨테이너 환경에서 Spring Boot Application이 실행이 됩니다.
이미지(Image)는 프로그램을 실행하는데 필요한 설치 과정, 설정, 버전 정보 등을 포함하고 있습니다. 이 말은 즉, 프로그램을 실행하는데 필요한 모든 것을 포함하고 있다!
5. Docker 명령어
5-1. Docker Image
이미지 다운로드
docker pull ‘image-name’
TAG
로 관리된다.docker pull 'image-name':'tag-name'
다운받은 이미지 리스트
docker image ls
이미지 삭제
docker image rm 'image-id'
|docker image rm 'imgae-name'
docker image rm -f 'image-id'
docker image rm $(docker images -q)
5-2. Docker Container
컨테이너 생성 → 이미지 기반으로 생성된다.
docker create ‘image’
생성된 컨테이너 확인
docker ps -a
컨테이너 실행
docker start ‘container-id'
컨테이너 중지
docker stop 'container-id'
docker kill 'container-id'
컨테이너 삭제
docker rm 'container-id'
생성 및 실행
docker **run** 'image'
default: fore-ground 환경으로 실행
-d
: back-ground 환경 (docker run -d ‘image’
)--name
: docker container 이름 지정 (docker run -d —name web-server ‘image’
)-p
: 포트 포워딩 - 컨테이너 접속할 수 있도록 포트를 맞춰주는 과정컨테이너 조회
docker ps
docker ps -a
컨테이너 삭제
docker rm 'container-id'
docker rm -f 'container-id'
docker rm $(docker ps -qa)
컨테이너 로그 조회
docker logs 'container-id'
|docker logs 'container-name'
--tail '라인 수'
: 마지막 기준, 라인 수만큼 출력-f
: 실시간으로 로그를 확인할 때 사용Beta Was this translation helpful? Give feedback.
All reactions