Docker Container 생성(nginx, mongo, mysql, httpd) 및 실행 & Docker 명령어

지수토리·2022년 1월 4일
2
post-thumbnail

✅ docker 클라이언트와 서버(엔진) 버전 확인

1) 설치가 되어있지 않다면 도커 설치하기
➡️ https://www.docker.com/products/docker-desktop

2) 버전 확인

➜ docker version 

client 와 server(엔진) 버전 및 정보가 출력된다.
서버에서 반환된 정보를 받았다는 것을 통해 실제로 도커가 내 컴퓨터 서버와 통신하고 있다는 것을 알 수 있다.

3) 세부 정보

➜ docker info

엔진 구성 및 설정에 대한 많은 세부 정보들이 나온다.

📦 Nginx(웹 서버) image의 컨테이너 생성

📌 docker container run

➜ docker container run --publish 80:80 nginx

🔧 실행 원리 🔧

  1. Docker Hub로 부터 도커 엔진이 실제로 nginx라는 "이미지"를 찾았고, 최신 이미지를 다운로드 함.
  2. 그 이미지로부터의 새로운 "컨테이너"를 시작한 것.
  3. 명령줄 80은 내 컴퓨터의 로컬 "포트 80"을 열고,
  4. 해당 컨테이너 내부에서 실행되는 "실행 파일"로 이동

    Docker Hub = 기본 원격 이미지 저장소

📌 --detach를 사용하면?

➜ docker container run --publish 80:80 --detach nginx
a197507b5162a1fc20e060a2a03668833878e0a907b2b99d54b50fb43710a3e1

컨테이너의 고유 ID를 반환하고,
(이 ID 는 새로운 컨테이너를 실행할 때 마다 새롭게 반환 될 것)
Docker에게 백그라운드에서 실행하도록 지시하기 때문에 여전히 브라우저는 실행하는 것을 확인 할 수 있다.

📦 Mongo image의 컨테이너 생성

📌 docker container run

> docker run --name mongo -d mongo
>  docker ps
CONTAINER ID   IMAGE     COMMAND                  CREATED         STATUS         PORTS                NAMES
429ea03286f4   mongo     "docker-entrypoint.s…"   2 minutes ago   Up 2 minutes   27017/tcp            mongo
c7b9e658e268   nginx     "/docker-entrypoint.…"   3 hours ago     Up 3 hours     0.0.0.0:80->80/tcp   webhost

📦 Mysql 이미지의 컨테이너 생성

📌 docker container run

> docker container run -d -p 3306:3306 mysql

환경 변수와 컨테이너 이름 추가

> docker container run -d -p 3306:3306 --name mysql_db -e MYSQL_RANDOM_ROOT_PASSWORD=yes mysql

아래 링크를 통해 더 자세히 알아보세요
docker compose 로 mysql 설치하는 두가지 방법

📦 httpd 이미지의 컨테이너 생성

> docker container run -d --name webserver -p 8080:80 httpd

> curl localhost:8080
<html><body><h1>It works!</h1></body></html>

⚙️ docker 명령어 및 컨테이너 작업

📌 컨테이너 나열 ls

docker ps , docker container ls 같음

➜ docker ps
➜ docker container ls
CONTAINER ID   IMAGE       COMMAND                  CREATED         STATUS          PORTS                               NAMES
a197507b5162   nginx       "/docker-entrypoint.…"   3 minutes ago   Up 3 minutes    0.0.0.0:80->80/tcp                  sad_cerf
be1155ad97fc   mysql:5.7   "docker-entrypoint.s…"   2 days ago      Up 12 minutes   0.0.0.0:3306->3306/tcp, 33060/tcp   db_mysql

a19로 시작하는 이미지 nginx의 컨테이너가 실행되고 있음을 확인 할 수 있다.

📌 컨테이너 실행 stop

다시 컨테이너를 나열해보면 nginx의 컨테이너 실행이 중지됨을 확인 할 수 있다.

➜ docker container stop a19
a19
➜ docker container ls
CONTAINER ID   IMAGE       COMMAND                  CREATED      STATUS          PORTS                               NAMES
be1155ad97fc   mysql:5.7   "docker-entrypoint.s…"   2 days ago   Up 17 minutes   0.0.0.0:3306->3306/tcp, 33060/tcp   db_mysql

컨테이너 "이름"을 추가한 후 ls -a를 해보면 Name이 webhost 인 컨테이너 확인 가능

➜  docker container run --publish 80:80 --detach --name webhost nginx
c7b9e658e268f97903d1c49c5366cbf6aaca024c58a6e628fd3d485eba58094d
➜  docker container ls -a
CONTAINER ID   IMAGE       COMMAND                  CREATED          STATUS                      PORTS                               NAMES
c7b9e658e268   nginx       "/docker-entrypoint.…"   46 seconds ago   Up 45 seconds               0.0.0.0:80->80/tcp                  webhost
a197507b5162   nginx       "/docker-entrypoint.…"   12 minutes ago   Exited (0) 6 minutes ago                                        sad_cerf
2a8840fadde4   nginx       "/docker-entrypoint.…"   21 minutes ago   Exited (0) 12 minutes ago                                       eager_bardeen
be1155ad97fc   mysql:5.7   "docker-entrypoint.s…"   2 days ago       Up 21 minutes               0.0.0.0:3306->3306/tcp, 33060/tcp   db_mysql

📌 최신 로그들을 반환 logs

➜  docker container logs webhost

📌 컨테이너 내부의 프로세스들 확인

  1. 특정 컨테이너 내에 실행되고 있는 프로세스들 나열 top
    > docker top
    > docker container top webhost
  1. 실행되고 있는 모든 프로세스들 보기 ps aux
	> ps aux
    
   	grep 이라는 필터링 툴을 이용하여 보기
	> ps aux | grep mongo

📌 컨테이너 삭제 rm

➜   docker container ls -a
CONTAINER ID   IMAGE       COMMAND                  CREATED          STATUS                      PORTS                               NAMES
c7b9e658e268   nginx       "/docker-entrypoint.…"   6 minutes ago    Up 6 minutes                0.0.0.0:80->80/tcp                  webhost
a197507b5162   nginx       "/docker-entrypoint.…"   18 minutes ago   Exited (0) 12 minutes ago                                       sad_cerf
2a8840fadde4   nginx       "/docker-entrypoint.…"   27 minutes ago   Exited (0) 18 minutes ago                                       eager_bardeen
be1155ad97fc   mysql:5.7   "docker-entrypoint.s…"   2 days ago       Up 27 minutes               0.0.0.0:3306->3306/tcp, 33060/tcp   db_mysql
➜   docker container rm a19 2a8 be1
a19
2a8
Error response from daemon: You cannot remove a running container be1155ad97fc8be25f81083f82240c6e63698a6f2c0d25f0390f83f896423d2b. Stop the container before attempting removal or force remove

실행 중인 컨테이너를 삭제 할 때는 -f 를 붙여줄 것

➜  ~ docker container rm -f be1
be1
➜  ~ docker container ls -a
CONTAINER ID   IMAGE     COMMAND                  CREATED         STATUS         PORTS                NAMES
c7b9e658e268   nginx     "/docker-entrypoint.…"   8 minutes ago   Up 8 minutes   0.0.0.0:80->80/tcp   webhost

2개의 댓글

comment-user-thumbnail
2022년 1월 5일

-d, -p, --name, -e 옵션이 뭔지는 아나

docker container run \
-d \
-p 3306:3306 \
--name mysql_db \
-e MYSQL_RANDOM_ROOT_PASSWORD=yes \
mysql

1개의 답글