SK Networks Family AI bootcamp 강의노트

64일차 [ docker & nginx , network ]

HyunJung_Jo 2025. 4. 17. 17:41

docker 로 이미지 다운

nginx image 다운

   7 docker login
   9 docker search nginx
  10 docker pull nginx

다수의 레이어로 된 이미지를 병렬로 다운받는다.

nginx 컨테이너 만들어서 확인

PS C:\dev\docker> docker images
REPOSITORY          TAG       IMAGE ID       CREATED        SIZE
nginx               latest    5ed8fcc66f4e   10 hours ago   279MB
ubuntu/apache2      latest    16698e95077b   7 days ago     270MB
pgvector/pgvector   pg17      5982c00a2cdf   5 weeks ago    634MB
mysql               latest    0596fa224cdf   2 months ago   1.09GB
PS C:\dev\docker> docker run --name nginx-container -d -p 80:80 nginx:latest
c0b5f05fb0ada27bdc91082998769170a979503c5de1320ceb8f97a07be5f6f0

docker stop , rm 

PS C:\dev\docker> docker ps
CONTAINER ID   IMAGE                    COMMAND                   CREATED         STATUS          PORTS                               NAMES
03126be3e72d   mysql                    "docker-entrypoint.s…"   6 days ago      Up 12 minutes   33060/tcp, 0.0.0.0:3307->3306/tcp   mysql_server-db-1
f495840a5237   pgvector/pgvector:pg17   "docker-entrypoint.s…"   2 weeks ago     Up 12 minutes   0.0.0.0:5432->5432/tcp              my-postgresql
PS C:\dev\docker> docker stop c0b5f05fb0ad
c0b5f05fb0ad
PS C:\dev\docker> docker ps
CONTAINER ID   IMAGE                    COMMAND                   CREATED       STATUS          PORTS                               NAMES
03126be3e72d   mysql                    "docker-entrypoint.s…"   6 days ago    Up 12 minutes   33060/tcp, 0.0.0.0:3307->3306/tcp   mysql_server-db-1
f495840a5237   pgvector/pgvector:pg17   "docker-entrypoint.s…"   2 weeks ago   Up 12 minutes   0.0.0.0:5432->5432/tcp              my-postgresql
PS C:\dev\docker> docker ps -a
CONTAINER ID   IMAGE                    COMMAND                   CREATED         STATUS                        PORTS                               NAMES
c0b5f05fb0ad   nginx:latest             "/docker-entrypoint.…"   4 minutes ago   Exited (0) 7 seconds ago                                          nginx-container
1f59a612508c   ubuntu/apache2           "apache2-foreground"      17 hours ago    Exited (255) 12 minutes ago   0.0.0.0:80->80/tcp                  apache-container
03126be3e72d   mysql                    "docker-entrypoint.s…"   6 days ago      Up 12 minutes                 33060/tcp, 0.0.0.0:3307->3306/tcp   mysql_server-db-1
  • docker container 아이디로 stop, 확인.
  • docker ps -a 로 전체 확인 가능, exited로 해당 컨테이너 stop 된 것 확인
PS C:\dev\docker> docker rm c0b5f05fb0ad
c0b5f05fb0ad
PS C:\dev\docker> docker rm 1f59a612508c
1f59a612508c
PS C:\dev\docker> docker ps -a
CONTAINER ID   IMAGE                    COMMAND                   CREATED       STATUS          PORTS                               NAMES
03126be3e72d   mysql                    "docker-entrypoint.s…"   6 days ago    Up 14 minutes   33060/tcp, 0.0.0.0:3307->3306/tcp   mysql_server-db-1
f495840a5237   pgvector/pgvector:pg17   "docker-entrypoint.s…"   2 weeks ago   Up 14 minutes   0.0.0.0:5432->5432/tcp              my-postgresql

rmi

PS C:\dev\docker> docker images
REPOSITORY          TAG       IMAGE ID       CREATED        SIZE
nginx               latest    5ed8fcc66f4e   10 hours ago   279MB
ubuntu/apache2      latest    16698e95077b   7 days ago     270MB
pgvector/pgvector   pg17      5982c00a2cdf   5 weeks ago    634MB
mysql               latest    0596fa224cdf   2 months ago   1.09GB
PS C:\dev\docker> docker rmi nginx:latest
Untagged: nginx:latest
Deleted: sha256:5ed8fcc66f4ed123c1b2560ed708dc148755b6e4cbd8b943fab094f2c6bfa91e
PS C:\dev\docker> docker rmi 16698e95077b
Untagged: ubuntu/apache2:latest
Deleted: sha256:16698e95077b9f1fa47fd3e133d41b8116614c19d5ce16e14ef898406d8145fd
PS C:\dev\docker> docker images
REPOSITORY          TAG       IMAGE ID       CREATED        SIZE
pgvector/pgvector   pg17      5982c00a2cdf   5 weeks ago    634MB
mysql               latest    0596fa224cdf   2 months ago   1.09GB
  • 이미지 아이디로 삭제
  • 삭제후 꼭 검증할 것

이미지 구축

# base image
FROM node:12

# maintainer info
LABEL maintainer="My email is hseon.jo59@gmail.com"
LABEL version="1.0"
LABEL description="This is a simple test server"

# copy hello.js file to root directory
COPY hello.js /

CMD ["node", "hello.js"]
  • 위 도커 파일을 구축
PS C:\dev\docker> docker build -t hellojs:latest . 
# 현재 위치의 도커파일로 hellojs 이미지를 만든다.

docker run

PS C:\dev\docker> docker run --name hellojs-web -d -p 8080:8080 hellojs
  • detach mode(terminal detached)
  • port 8080 to 8080

docker tag (hub upload)

PS C:\dev\docker> docker login
Authenticating with existing credentials...
Login Succeeded
PS C:\dev\docker> docker images
REPOSITORY          TAG       IMAGE ID       CREATED         SIZE
hellojs             latest    e02db203d45d   8 minutes ago   1.36GB
pgvector/pgvector   pg17      5982c00a2cdf   5 weeks ago     634MB
mysql               latest    0596fa224cdf   2 months ago    1.09GB
PS C:\dev\docker> docker tag hellojs:latest hseonjo59/hellojs:latest
PS C:\dev\docker> docker images
REPOSITORY          TAG       IMAGE ID       CREATED          SIZE
hseonjo59/hellojs   latest    e02db203d45d   10 minutes ago   1.36GB
hellojs             latest    e02db203d45d   10 minutes ago   1.36GB
pgvector/pgvector   pg17      5982c00a2cdf   5 weeks ago      634MB
mysql               latest    0596fa224cdf   2 months ago     1.09GB
  • docker login
  • 계정 정보 확인후 로컬에 있는 이미지를 계정의 허브에 올린다

Nginx 1.14 컨테이너로 정적 웹 서버 띄우기

PS C:\dev\docker> docker run -d -p 80:80 --name web -v C:\dev\docker\web:/usr/share/nginx/html nginx:1.14
Unable to find image 'nginx:1.14' locally
1.14: Pulling from library/nginx
8ca774778e85: Download complete
27833a3ba0a5: Download complete
0f23e58bd0b7: Download complete
Digest: sha256:f7988fb6c02e0ce69257d9bd9cf37ae20a60f1df7563c3a2a6abe24160306b8d
Status: Downloaded newer image for nginx:1.14
addf247e63fa431b5674d22102dfcb0138f52f35538f9ad7735826a8be11c030
PS C:\dev\docker> docker ps
CONTAINER ID   IMAGE        COMMAND                   CREATED         STATUS         PORTS                NAMES
addf247e63fa   nginx:1.14   "nginx -g 'daemon of…"   8 seconds ago   Up 7 seconds   0.0.0.0:80->80/tcp   web
PS C:\dev\docker>

read-only로 볼륨 마운트 해서 컨테이너 생성, 테스트

PS C:\dev\docker> docker run -d -p 80:80 --name web -v C:\dev\docker\web:/usr/share/nginx/html:ro nginx
Unable to find image 'nginx:latest' locally
latest: Pulling from library/nginx
32ef64864ec3: Download complete
e6557c42ebea: Download complete
6c95adab80c5: Download complete
8a628cdd7ccc: Download complete
b0c073cda91f: Download complete
ad8a0171f43e: Download complete 
ec74683520b9: Download complete
Digest: sha256:5ed8fcc66f4ed123c1b2560ed708dc148755b6e4cbd8b943fab094f2c6bfa91e
Status: Downloaded newer image for nginx:latest
fd9a74c0ecbab5ce7ad6e1d71422ff774629ce5542cb3c05d6201327ad66c279
PS C:\dev\docker> docker exec -it web /bin/bash
root@fd9a74c0ecba:/# cat index.html
cat: index.html: No such file or directory
root@fd9a74c0ecba:/# ls
bin   dev                  docker-entrypoint.sh  home  lib64  mnt  proc  run   srv  tmp  var
boot  docker-entrypoint.d  etc                   lib   media  opt  root  sbin  sys  usr
root@fd9a74c0ecba:/# cd usr/share/nginx/html/
root@fd9a74c0ecba:/usr/share/nginx/html# echo \
> "<h1> good job </h1>" > index.html 
bash: index.html: Read-only file system