728x90

강사님 정리노트

$docker container ls -a

CONTAINER ID   IMAGE       COMMAND                  CREATED      STATUS                    PORTS                                NAMES

63f2fcd79969   mysql:5.7   "docker-entrypoint.s…"   2 days ago   Exited (255) 2 days ago   0.0.0.0:3306->3306/tcp, 33060/tcp    mysql_moon

a6f8afb1b108   mysql:5.7   "docker-entrypoint.s…"   2 days ago   Exited (255) 2 days ago   33060/tcp, 0.0.0.0:23306->3306/tcp   mysql_client

7bc67a5f15b4   mysql:5.7   "docker-entrypoint.s…"   2 days ago   Exited (255) 2 days ago   33060/tcp, 0.0.0.0:13306->3306/tcp   mysql

 

$docker container start 7bc67a5f15b4 a6f8afb1b108

 

$docker container ls

CONTAINER ID   IMAGE       COMMAND                  CREATED      STATUS          PORTS                                NAMES

a6f8afb1b108   mysql:5.7   "docker-entrypoint.s…"   2 days ago   Up 5 seconds    33060/tcp, 0.0.0.0:23306->3306/tcp   mysql_client

7bc67a5f15b4   mysql:5.7   "docker-entrypoint.s…"   2 days ago   Up 27 seconds   33060/tcp, 0.0.0.0:13306->3306/tcp   mysql

172.17.0.1(gateway) -> 자동 numbering됨

0~65535 범위 내에서 43306 -> 8080(host->container tomcat), 33306 -> 3306(host -> container mysql)

 

**container tomcat에서 container mysql 접속하기

mysql -h 172.17.0.2(자기자신) -u root -p

 

**password 확인

$docker container logs [id]

 

$docker run(pull + create + start)

$docker inspect [id]

 

 

  • splunk (log파일을 분석해주고 적재해줌) 500GB까지 무료

 

$docker stop 7bc67a5f15b4 a6f8afb1b108

$docker container exec -it 7bc6 /bin/bash

mysql -h127.0.01 -uroot -p

exit

 

$docker container start 7bc67a5f15b4

$docker container exec -it 7bc6 /bin/bash -c mysql -h127.0.01 -uroot -p

mysql>use databases;

mysql>drop database mydb;

mysql>create database mydb;

mysql>use mydb;

mysql>create table member (id varchar(20), name varchar(20));

mysql>insert into member(id, name) values('admin', 'Administrator');

mysql>select id, name from member;

 

$docker container exec -it 7bc6 /bin/bash

root@7bc67a5f15b4:/# ls /var/lib/mysql

root@7bc67a5f15b4:/# ls -l /var/lib/mysql

total 188480

-rw-r----- 1 mysql mysql       56 Feb  5 07:38 auto.cnf

-rw------- 1 mysql mysql     1680 Feb  5 07:38 ca-key.pem

-rw-r--r-- 1 mysql mysql     1112 Feb  5 07:38 ca.pem

-rw-r--r-- 1 mysql mysql     1112 Feb  5 07:38 client-cert.pem

-rw------- 1 mysql mysql     1680 Feb  5 07:38 client-key.pem

-rw-r----- 1 mysql mysql      474 Feb  8 00:38 ib_buffer_pool

-rw-r----- 1 mysql mysql 50331648 Feb  8 00:45 ib_logfile0

-rw-r----- 1 mysql mysql 50331648 Feb  5 07:38 ib_logfile1

-rw-r----- 1 mysql mysql 79691776 Feb  8 00:45 ibdata1

-rw-r----- 1 mysql mysql 12582912 Feb  8 00:45 ibtmp1

drwxr-x--- 2 mysql mysql     4096 Feb  5 07:39 mydb

drwxr-x--- 2 mysql mysql     4096 Feb  5 07:38 mysql

drwxr-x--- 2 mysql mysql     4096 Feb  5 07:38 performance_schema

-rw------- 1 mysql mysql     1676 Feb  5 07:38 private_key.pem

-rw-r--r-- 1 mysql mysql      452 Feb  5 07:38 public_key.pem

-rw-r--r-- 1 mysql mysql     1112 Feb  5 07:38 server-cert.pem

-rw------- 1 mysql mysql     1676 Feb  5 07:38 server-key.pem

drwxr-x--- 2 mysql mysql    12288 Feb  5 07:38 sys

 

root@7bc67a5f15b4:/#cd /var/lib/mysql/mydb

root@7bc67a5f15b4:/#ls -l

total 112

-rw-r----- 1 mysql mysql    65 Feb  5 07:39 db.opt

-rw-r----- 1 mysql mysql  8586 Feb  5 07:39 member.frm

-rw-r----- 1 mysql mysql 98304 Feb  5 07:39 member.ibd

 

$docker container run -d -p 13306:3306 -e MYSQL_ALLOW_EMPTY_PASSWORD=true --name mysql mysql:5.7

 

 

---------------hostPC와 mounting하기------------------

** -v "host위치":"container위치"(/var/lib/mysql) - 절대경로 써주기

$docker container run -d -p 13306:3306 -e MYSQL_ALLOW_EMPTY_PASSWORD=true -v "":"" --name mysql mysql:5.7

 

$docker container run -d -p 13306:3306 -e MYSQL_ALLOW_EMPTY_PASSWORD=true --volume "":"" --name mysql mysql:5.7

 

$docker volume ls

$docker system prune

$docker volume prune

 

$mkdir docker_volume

$cd docker_volume

$docker container run --volume /Users/mhee4/docker_volume:/var/lib/mysql -d -p 13306:3306 -e MYSQL_ALLOW_EMPTY_PASSWORD=true --name mysql mysql:5.7

$docker container exec -it mysql /bin/bash -c mysql -h127.0.0.1 -uroot -p

 

mysql>create database mydb;

mysql>use mydb;

mysql>create table member(id varchar(20), name varchar(20));

mysql>insert into member(id, name) values('admin', 'Administrator');

mysql>select id, name from member;

 

$cd mydb

$docker container stop 7394

$docker container rm 7394(지워도 hostPC에 있는 데이터베이스는 남아 있음)

 

 

$docker container run --volume /Users/mhee4/docker_volume:/var/lib/mysql -d -p 13306:3306 -e MYSQL_ALLOW_EMPTY_PASSWORD=true --name mysql mysql:5.7

$docker container exec -it mysql /bin/bash -c mysql -h127.0.0.1 -uroot -p

mysql>select id, name from member;

=> 동일 데이터 출력됨

 

-i : interactive

-t : terminal

    -it=> container의 terminal에 접속

 

  1. image가 존재하는가?

  2. 없으면 hub에서 가져옴

$docker rmi(이미지 삭제) = docker image rm

$docker image pull

$⭐️⭐️docker logs

$docker ⭐️container exec

(image, network, volume, container)

$docker exec -it mysql /bin/bash

$docker container prune

 

 

 

  • Docker 이미지 생성

    • 컨테이너의 상태를 그대로 이미지로 저장

    => 설치+설정+시작

 

    • Application file + Dockerfile

    • Dockerfile(DSL -> domain specific language) : image 정의

      • 이미지 빌드용 DSL(Domain Specific Language)

 

  • Dockerfile 작성

    • 1) Dockerfile 생성

      • $touch Docker file

    • 2) FROM

      • $gedit Dockerfile

    • 3) 빌드

      • $docker build -t fromtest:0.0.

      • $docker images

 

 

$mkdir docker_file

$cd docker_file

$code Dockerfile

$docker images

$docker docker image pull ubuntu

REPOSITORY               TAG       IMAGE ID       CREATED        SIZE

python                   latest    e32be9a6f71f   6 days ago     885MB

ubuntu                   16.04     8185511cd5ad   2 weeks ago    132MB

ubuntu                   latest    f63181f19b2f   2 weeks ago    72.9MB

mysql                    5.7       a70d36bc331a   2 weeks ago    449MB

docker/getting-started   latest    021a1b85e641   2 months ago   27.6MB

 

**vs code extensions에서 docker, vscode-docker-syntax 다운받기

 

#docker_file/Dockerfile

FROM ubuntu:latest

 

$docker image build --tag fromtest:1.0 . (. = 현재 디렉토리에 있는 도커 파일 명시, -f 파일명 명시해도 됨)

    =>image build

 

$docker image ls (docker images)

REPOSITORY               TAG       IMAGE ID       CREATED        SIZE

python                   latest    e32be9a6f71f   6 days ago     885MB

ubuntu                   16.04     8185511cd5ad   2 weeks ago    132MB

ubuntu                   latest    f63181f19b2f   2 weeks ago    72.9MB

fromtest                 1.0       def6b0094ed7   2 weeks ago    72.9MB

mysql                    5.7       a70d36bc331a   2 weeks ago    449MB

docker/getting-started   latest    021a1b85e641   2 months ago   27.6MB

 

$docker container run fromtest:1.0

$docker container ls -a

 

$docker images

REPOSITORY               TAG       IMAGE ID       CREATED        SIZE

python                   latest    e32be9a6f71f   6 days ago     885MB

ubuntu                   16.04     8185511cd5ad   2 weeks ago    132MB

fromtest                 1.0       def6b0094ed7   2 weeks ago    72.9MB

ubuntu                   latest    f63181f19b2f   2 weeks ago    72.9MB

mysql                    5.7       a70d36bc331a   2 weeks ago    449MB

docker/getting-started   latest    021a1b85e641   2 months ago   27.6MB

 

$cp ./Dockerfile ./Dockerfile_fromtest (windows => copy)

 

#docker_file/Dockerfile

FROM ubuntu:latest

RUN mkdir /mydata
RUN echo "Hello, Docker!"

mhee4@Moonhees-MacBook-Pro docker_file % docker image build --tag runtest:1.0 .

 

$docker images

REPOSITORY               TAG       IMAGE ID       CREATED          SIZE

runtest                  1.0       b5acf655dab3   39 seconds ago   72.9MB

python                   latest    e32be9a6f71f   6 days ago       885MB

ubuntu                   16.04     8185511cd5ad   2 weeks ago      132MB

ubuntu                   latest    f63181f19b2f   2 weeks ago      72.9MB

fromtest                 1.0       def6b0094ed7   2 weeks ago      72.9MB

mysql                    5.7       a70d36bc331a   2 weeks ago      449MB

docker/getting-started   latest    021a1b85e641   2 months ago     27.6MB

 

$docker run runtest:1.0 (별게없어서 기동과 동시에 종료됨)

$docker ps -a(all process)

 

$docker run -it runtest:1.0 (terminal 환경을 사용하겠다.)

root@301ccf91a731:/# 

 

 

$cp ./Dockerfile ./Dockerfile_runtest  

 

 

#docker_file/Dockerfile(오류 발생)

FROM ubuntu:latest

ADD test.txt /mydata
RUN mkdir /mydata

 

$docker image build --tag addtest:1.0 .

 => ERROR [2/3] ADD test.txt /mydata  

 

$code test.txt

 

#docker_file/test.txt

Hello, Docker!
Hi, there!

 

$docker image build --tag addtest:1.0 .

 => ERROR [3/3] RUN mkdir /mydata  

 

#docker_file/Dockerfile

FROM ubuntu:latest

RUN mkdir /mydata
ADD test.txt /mydata

 

 

$docker image build --tag addtest:1.0 .

$docker run -it addtest:1.0

root@bb83d5c4048e:/# ls -al /mydata

total 12

drwxr-xr-x 1 root root 4096 Feb  8 02:45 .

drwxr-xr-x 1 root root 4096 Feb  8 02:47 ..

-rw-r--r-- 1 root root   25 Feb  8 02:43 test.txt

 

root@bb83d5c4048e:/# cat /mydata/test.txt

Hello, Docker!

Hi, there!root@bb83d5c4048e:/# 

 

**앞에 했던 명령어를 반복해야 할 때

$docker image build --no-cache=true --tag addtest:1.0 .

 

 

#docker_file/Dockerfile

FROM ubuntu:latest

RUN mkdir /mydata
COPY test.txt /mydata/new_test.txt

 

$docker rmi 7335

$docker system prune(사용안하는 이미지 다 지움)

 

$docker build -t addtest:1.1 .

$docker images

REPOSITORY               TAG       IMAGE ID       CREATED             SIZE

addtest                  1.1       46fe5772be74   10 seconds ago      72.9MB

addtest                  1.0       16341914ff80   About an hour ago   72.9MB

 

$docker run -it addtest:1.1

$docker ps(~ing process 확인가능)

root@4465ac059a13:/# ls -al /mydata

total 12

drwxr-xr-x 1 root root 4096 Feb  8 04:21 .

drwxr-xr-x 1 root root 4096 Feb  8 04:22 ..

-rw-r--r-- 1 root root   25 Feb  8 02:43 new_test.txt

 

 

**ENTRYPOINT

# df -h -ps -s

$df -f (메모리 용량 확인)

 

 

#docker_file/Dockerfile

FROM ubuntu:latest

RUN mkdir /mydata
COPY test.txt /mydata/new_test.txt

CMD ["df", "-h"]

 

$docker build -t cmdtest:1.0 .

$docker run -it --name cmdtest cmdtest:1.0

Filesystem      Size  Used Avail Use% Mounted on

overlay          59G  3.1G   53G   6% /

tmpfs            64M     0   64M   0% /dev

tmpfs           996M     0  996M   0% /sys/fs/cgroup

shm              64M     0   64M   0% /dev/shm

/dev/vda1        59G  3.1G   53G   6% /etc/hosts

tmpfs           996M     0  996M   0% /proc/acpi

tmpfs           996M     0  996M   0% /sys/firmware

 

$docker ps -a(끝난 process list도 같이 볼 수 있다.)

 

$docker run -it cmdtest:1.0 

root@38deb3959746:/# df -h

root@38deb3959746:/# ps -aux

root@38deb3959746:/# ps -aef

 

root@38deb3959746:/# apt-get update

root@38deb3959746:/# apt-get install iputils-ping

root@38deb3959746:/# ping 127.0.0.1(자기 자신에게 전달)

 

**another terminal에서 접속해보기

$docker exec -it 38deb3959746 /bin/bash

root@38deb3959746:/# ps -aef

UID        PID  PPID  C STIME TTY          TIME CMD

root         1     0  0 04:38 pts/0    00:00:00 /bin/bash

root       310     1  0 04:43 pts/0    00:00:00 ping 127.0.0.1

root       311     0  0 04:43 pts/1    00:00:00 /bin/bash

root       320   311  0 04:44 pts/1    00:00:00 ps -aef

 

$docker ps -a

$docker inspect 8164d06eef56

 

 "Mounts": [],

        "Config": {

            "Hostname": "8164d06eef56",

            "Domainname": "",

            "User": "",

            "AttachStdin": true,

            "AttachStdout": true,

            "AttachStderr": true,

            "Tty": true,

            "OpenStdin": true,

            "StdinOnce": true,

            "Env": [

                "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"

            ],

            "Cmd": [

                "df",

                "-h"

            ],

            "Image": "cmdtest:1.0",

            "Volumes": null,

            "WorkingDir": "",

            "Entrypoint": null,

            "OnBuild": null,

            "Labels": {}

        },

 

 

$docker container prune

$docker ps -a

 

#docker_file/Dockerfile 고정적인 값

FROM ubuntu:latest

RUN mkdir /mydata
COPY test.txt /mydata/new_test.txt

ENTRYPOINT ["df", "-h"]

 

$docker build -t entrypointtest:1.0 .

$docker build --no-cache=true -t entrypointtest:1.0 .

$docker run -it entrypointtest:1.0

 

$docker ps -a

$docker inspect 577c

 

  "Cmd": null,

            "Image": "entrypointtest:1.0",

            "Volumes": null,

            "WorkingDir": "",

            "Entrypoint": [

                "df",

                "-h"

            ],

 

파라미터로 인해 값이 변경 될 수 있다 => CMD

고정적인 값 => ENTRYPOINT

두개는 같은 역할을 한다

 

$docker run -it cmdtest:1.0 ps -aef(가변데이터 추가)

$docker ps -a

$docker inspect e6ea

 

 "Cmd": [

                "ps",

                "-aef"

            ],

            "Image": "cmdtest:1.0",

            "Volumes": null,

            "WorkingDir": "",

            "Entrypoint": null,

            "OnBuild": null,

            "Labels": {}

        },

 

 

⭐️문제풀기

  1. test.sh  스크립트 파일 생성

    1. 파일 내용 <test.sh>

      1. ls

      2. echo "Hello, Docker"

  2. DOCKER IMAGE에 test.sh 파일을 /mydata 디렉토리에 복사

  3. 컨테이너 실행시, test.sh 파일을 실행하여 결과를 화면 출력

 

 

#docker_file/test.sh

#! /bin/bash

ls
echo "HEllo, Docker"

 

#docker_file/Dockerfile

FROM ubuntu:latest

RUN mkdir /mydata
COPY test.sh /mydata/test.sh

 

$docker build -t shelltest:1.0 .

$docker run -it shelltest:1.0

root@0bbdf84b3a03:/# ls -al /mydata

total 12

drwxr-xr-x 1 root root 4096 Feb  8 05:32 .

drwxr-xr-x 1 root root 4096 Feb  8 05:33 ..

-rw-r--r-- 1 root root   38 Feb  8 05:30 test.sh(x:실행권한이 없음)

 

root@0bbdf84b3a03:/# /mydata/test.sh

bash: /mydata/test.sh: Permission denied

 

#docker_file/Dockerfile

FROM ubuntu:latest

RUN mkdir /mydata
COPY test.sh /mydata/test.sh

ENTRYPOINT [ "/mydata/test.sh" ]

 

#docker_file/Dockerfile

FROM ubuntu:latest

RUN mkdir /mydata
COPY test.sh /mydata/test.sh

WORKDIR /mydata
ENTRYPOINT [ "./test.sh" ]

 

 

$docker build --no-cache=true -t shelltest:1.0 .

$docker run -it shelltest:1.0

 

->Permission denied 해결

 

#docker_file/Dockerfile

FROM ubuntu:latest

RUN mkdir /mydata
COPY test.sh /mydata/test.sh
RUN chmod +x /mydata/test.sh(읽기권한 주기)

WORKDIR /mydata
ENTRYPOINT [ "./test.sh" ]

 

 

 

--✏️Node.js를 실행하는 Dockerfile 작성

  • hostPC에서 먼저 실행 -> Dockerfile 생성

 

  1. node-project 폴더 생성

  2. package.json과 index.js 파일 작성

  3. Local 테스트

  4. 왼쪽 command 실행

  5. 웹 브라우저 http://127.0.0.1:8080

 

(base) mhee4@Moonhees-MacBook-Pro docker_file % mkdir node_project

$cd node_project

$code .

 

#node_project/index.js

const express = require('express');
const app = express();
app.get('/', (req, res) => {
    res.send('Hi, there!')
});
app.listen(8080, () => {
    console.log('Listening on port 8080');
})

 

#node_project/package.json

{
    "scripts": {
        "start": "node index.js"
    },
    "dependencies": {
        "express": "*"
    }
}

$npm install

$npm start

 

=> 🌟도커 이미지로 만들기(단계별)

  1. base image 결정(linux) ->base image - node:alpine

  2. nodejs 설치(npm 설치)

    1. apt-get install nodejs

    2. yum install nodejs

  3. index.js, package.json 파일 복사

  4. npm install 명령어로 모듈 설치

  5. npm start 명령어로 프로세스 실행

 

**알파인 리눅스(Alpine Linux)

CentOS 나 Ubuntu 처럼 Main OS 로 사용하지 않고 도커 컨테이너의 OS로 많이 사용한다.

https://www.lesstif.com/docker/alpine-linux-35356819.html

https://alpinelinux.org

 

index | Alpine Linux

Small. Simple. Secure. Alpine Linux is a security-oriented, lightweight Linux distribution based on musl libc and busybox.

alpinelinux.org

 

 

#node_project/Dockerfile

FROM node:alpine

CMD ["node", "--version"]

$docker build -t mynodejs .

$docker run -it mynodejs

v15.8.0

 

#node_project/Dockerfile

FROM node:alpine

# 현재 디렉토리 바꾸기
WORKDIR /mydata

COPY ./package.json ./package.json
COPY ./index.js ./index.js

RUN npm install

# CMD ["echo", "installed modules"]

 

$docker build --no-cache=true -t mynodejs . (본래 있던 캐시파일을 지우겠다)

$docker run mynodejs

installed modules

 

$docker run -it mynodejs (nodejs prompt 시작됨)

$docker run -it mynodejs /bin/bash (terminal 접속하기 위함)

    -> 오류 alpinelinux 에는 /bin/bash가 없다

 

$docker run -it mynodejs /bin/sh (terminal 접속하기 위함)

/mydata # pwd

/mydata # ls -al

/mydata # npm start

 

**docker run/exec 차이점

    run : 새로 container를 만들어서 실행

    exec : 실행 중인 container에 명령어 전달

 

#node_project/Dockerfile

ENTRYPOINT ["npm", "start"]

 

$docker build -t mynodejs .

$docker system prune

 

$docker image rm -f (강제삭제)

 

$docker run mynodejs

> start

> node index.js

 

Listening on port 8080

    =>port forwarding을 시켜야 정상적으로 웹사이트 가동이 된다.

 

nodejs container의 firewall -> inbound open해놔야 함.

 

#node_project/Dockerfile

FROM node:alpine

WORKDIR /mydata

COPY ./package.json ./package.json
COPY ./index.js ./index.js

EXPOSE 8080
RUN npm install

ENTRYPOINT ["npm", "start"]

 

$docker exec -it 177c8155355d

 

**mysql -> nodejs 접근할때

ubuntu -> root@djfkldfd /# hostname -i

root@djfkldfd /# curl -X GET http://172.17.0.2:8080/

$docker build -t mynodejs .

$docker run -d mynodejs

$docker ps

$docker inspect f61e8

"IPAddress": "172.17.0.2",

 

 

**Host PC에서 nodejs 접근할때

-p localhost ip : container ip

$docker run -p 8080:8080 -d mynodejs

 

**EXPOSE 8080

$docker run -d mynodejs

$docker ps

CONTAINER ID   IMAGE      COMMAND       CREATED         STATUS         PORTS      NAMES

61377e20c828   mynodejs   "npm start"   3 seconds ago   Up 2 seconds   8080/tcp   quizzical_pascal

$docker run -d -p 8080:8080 mynodejs(원래) -> 명확히 기술해주는 것이 좋다.

$docker run -d -P mynodejs (-P : 자동으로 8080과 매칭)

-> 장점 :알아서 포트번호를 지정해줘서 개발자는 운영에 신경쓰지 않아도 된다.

-> 단점 : 재빌드 해야하는 번거로움이 있다. (후에 MSA에서 배움)

$docker ps

CONTAINER ID   IMAGE      COMMAND       CREATED              STATUS              PORTS                     NAMES

8b3b3237a290   mynodejs   "npm start"   3 seconds ago        Up 2 seconds        0.0.0.0:55000->8080/tcp   sleepy_yonath

61377e20c828   mynodejs   "npm start"   About a minute ago   Up About a minute   8080/tcp                  quizzical_pascal

 

 

 

**✏️image -> 내 docker hub에 업로드하기

-우선 컨테이너 다 지우고 image prune

$docker ps -a(아무것도 없어야 함)

$docker images

 

$docker image tag  mynodejs:latest mynodejs:1.0

$docker image tag mynodejs:latest mhee4321/mynodejs:1.0

REPOSITORY               TAG       IMAGE ID       CREATED        SIZE

mynodejs                 1.0       394f8d8bae45   2 hours ago    224MB

mynodejs                 latest    394f8d8bae45   2 hours ago    224MB

mhee4321/mynodejs        1.0       394f8d8bae45   2 hours ago    224MB

shelltest                1.0       3f513926794b   3 hours ago    72.9MB

entrypointtest           1.0       266e66594bc1   4 hours ago    72.9MB

addtest                  1.1       cf9609dcf140   4 hours ago    72.9MB

cmdtest                  1.0       86aeec3a829e   4 hours ago    72.9MB

addtest                  1.0       16341914ff80   5 hours ago    72.9MB

runtest                  1.0       b5acf655dab3   6 hours ago    72.9MB

python                   latest    e32be9a6f71f   6 days ago     885MB

ubuntu                   16.04     8185511cd5ad   2 weeks ago    132MB

ubuntu                   latest    f63181f19b2f   2 weeks ago    72.9MB

fromtest                 1.0       def6b0094ed7   2 weeks ago    72.9MB

mysql                    5.7       a70d36bc331a   2 weeks ago    449MB

docker/getting-started   latest    021a1b85e641   2 months ago   27.6MB

 

$docker login

$docker image push mhee4321/mynodejs:1.0

$docker image rm -f 394f8d8bae45

 

$docker image pull mhee4321/mynodejs:1.0

$docker run -d -p 8080:8080 mhee4321/mynodejs:1.0

$docker ps

CONTAINER ID   IMAGE                   COMMAND       CREATED         STATUS         PORTS                    NAMES

9701325e2c38   mhee4321/mynodejs:1.0   "npm start"   8 seconds ago   Up 7 seconds   0.0.0.0:8080->8080/tcp   lucid_panini

    ->website 8080 포트에서 확인

 

 

 

**✏️지난번에 만들었던 django project -> image file로 만들기

 

  1. base image 결정(linux) ->base image

python : python:alpine

django :

scrapy :

 

#python_project/Dockerfile

FROM python:alpine

CMD ["python", "-V"]

 

$docker build -t mypython .

$docker run -it mypython

Python 3.9.1

 

#python_project/test.py

print("Hello, Python!")

 

#python_project/test.py

import numpy as np
a = np.zeros((2,2))
print(a)

#python_project/Dockerfile

FROM python:alpine

COPY ./test.py /mydata/test.py

CMD ["python", "/mydata/test.py"]

$python test.py

[[0. 0.]

 [0. 0.]]

 

$docker build -t mypython .

$docker run -it mypython

ModuleNotFoundError: No module named 'numpy'

 

($pip install numpy

$docker run -it mypython /bin/sh

/ # pip install numpy)

 

$docker system prune

 

#python_project/Dockerfile

FROM python:alpine

RUN pip install numpy
COPY ./test.py /mydata/test.py

CMD ["python", "/mydata/test.py"]

 

$docker build -t mypython . =>에러뜸 runtime over

$docker run -it mypython

 

 

 

 

 

 

 

 

728x90

+ Recent posts