Fly ai 4기 4주차 day 17 : Azure, Docker

이성원·2024년 1월 11일
0
post-thumbnail

1. Azure에서 가상서버 생성

skt에서 임시로 빌려준 azure 계정으로 portal azure 에서 가상환경 생성

생성 했다면 cmd에 들어가서 아래 명령어 입력 하면 정상적으로 서버에 연결이 된다.

C:\Users\2022-PC(T)-21>ssh swon2@ [ 가상환경 ip ]

2.docker 컨테이너 생성

우리는 ubuntu환경에서 설치할 것이기 때문에

https://docs.docker.com/desktop/install/ubuntu/

이 링크에 있는 명령어를 그대로 입력했다.

sudo apt-get update
sudo apt-get install ca-certificates curl gnupg
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg

echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update


sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

명령어를 다 입력해서 docker 설치까지 했다면 hello-world를 출력해보자

제대로 pull해와서 출력이 되는 모습이다.

아래는 ubuntu 18.04 버전을 pull 받아와서 실행하는 코드이다.

#demo1 이라는 이름으로 ubuntu18.04버전을 bin/bash에서 실행
swon2@labuser75ubuntu:~$ sudo docker pull ubuntu:18.04
swon2@labuser75ubuntu:~$ sudo docker run -it --name demo1 ubuntu:18.04 /bin/bash

이 전의 hello-world를 pull 했을 때는 바로 빠져나왔지만 위 명령어는 -it 옵션을 추가해서 계속 유지 된다.

하지만 exit 해서 빠져 나와서 sudo docker ps 명령어를 사용해서 실행 상황을 보면 아무것도 없다.

그렇기때문에 -d 옵션을 또 추가해서 demon으로 계속 진행되게 한다.

아래 사진은 위의 과정을 보여주는 코드이다.

다시 demo2를 실행한 후에 exit로 나와도 그대로 실행된다.

busybox 실행 (docker 테스트 이미지) 및 로그 보기

$ sudo docker run --name demo7 -d busybox sh -c "while true;do
$(echo date);sleep 1; done"

a3083ce2f910269d1e2fdcf718c6cf6e055fb9485c9b22d05240918b1894c799

로그 확인

$ sudo docker logs demo5

Thu Jan 11 03:27:26 UTC 2024
Thu Jan 11 03:27:28 UTC 2024
Thu Jan 11 03:27:29 UTC 2024
Thu Jan 11 03:27:30 UTC 2024
Thu Jan 11 03:27:31 UTC 2024
Thu Jan 11 03:27:32 UTC 2024

실시간 로그 확인


$ sudo docker logs demo5 -f

Thu Jan 11 03:27:26 UTC 2024
Thu Jan 11 03:27:28 UTC 2024
Thu Jan 11 03:27:29 UTC 2024
Thu Jan 11 03:27:30 UTC 2024
Thu Jan 11 03:27:31 UTC 2024
Thu Jan 11 03:27:32 UTC 2024
... 계속 반복

컨테이너 작업 중단

swon2@labuser75ubuntu:~$ sudo docker ps

CONTAINER ID   IMAGE          COMMAND                  CREATED             STATUS             PORTS     NAMES
288dbc88ff14   busybox        "sh -c 'while true; …"   About an hour ago   Up About an hour             demo7
00e841a366f2   ubuntu:18.04   "/bin/bash"              About an hour ago   Up About an hour             demo2

swon2@labuser75ubuntu:~$ sudo docker stop demo7

컨테이너 삭제

sudo docker ps -a
CONTAINER ID   IMAGE         COMMAND                  CREATED             STATUS                       PORTS     NAMES
288dbc88ff14   busybox       "sh -c 'while true; …"   About an hour ago   Exited (137) 5 minutes ago             demo7

swon2@labuser75ubuntu:~$ sudo docker rm demo7
demo7

swon2@labuser75ubuntu:~$ sudo docker ps -a
CONTAINER ID   IMAGE         COMMAND    CREATED       STATUS                   PORTS     NAMES

도커 이미지 삭제

swon2@labuser75ubuntu:~$ sudo docker images
REPOSITORY   TAG       IMAGE ID       CREATED        SIZE
ubuntu       18.04     f9a80a55f492   7 months ago   63.2MB

swon2@labuser75ubuntu:~$ sudo docker rmi ubuntu:18.04
Untagged: ubuntu:18.04
Untagged: ubuntu@sha256:152dc042452c496007f07ca9127571cb9c29697f42acbfad72324b2bb2e43c98
Deleted: sha256:f9a80a55f492e823bf5d51f1bd5f87ea3eed1cb31788686aa99a2fb61a27af6a
Deleted: sha256:548a79621a426b4eb077c926eabac5a8620c454fb230640253e1b44dc7dd7562

swon2@labuser75ubuntu:~$ sudo docker images
REPOSITORY   TAG       IMAGE ID   CREATED   SIZE

3. docker 이미지 만들기

3.1 Dockerfile 생성

폴더 생성 후 Dockerfile 파일 생성

swon2@labuser75ubuntu:~$ cd $HOME

swon2@labuser75ubuntu:~$ pwd
/home/swon2

swon2@labuser75ubuntu:~$ mkdir docker-practice

swon2@labuser75ubuntu:~$ cd docker-practice

swon2@labuser75ubuntu:~/docker-practice$ touch Dockerfile

swon2@labuser75ubuntu:~/docker-practice$ ls
Dockerfile

FROM

도커파일에서 FROM 은 베이스 이미지(Base image)를 지정하는 지시어다.

RUN

RUN 은 말 그대로 command 를 실행(run)하여 새 이미지에 포함시키는 역할을 한다.

CMD

CMD 는 컨테이너가 시작될 때 실행할 커맨드를 지정하는 지시어이다.

COPY

Host 내에 있는 파일 또는 디렉토리를 컨테이너의 파일시스템으로 복사.

WORKDIR

이후 작성될 명령어를 컨테이너 내의 어떤 디렉토리에서 수행할 것인지를 명시하는 명령어입니다.

ENV

컨테이너 내부에서 지속적으로 사용될 environment variable 의 값을 설정하는 명령어입니다.

EXPOSE

컨테이너에서 뚫어줄 포트/프로토콜을 지정할 수 있습니다.

3.2 Dockerfile 설정

3.3 Dockerfile 빌드

swon2@labuser75ubuntu:~/docker-practice$ sudo docker images
REPOSITORY   TAG       IMAGE ID       CREATED         SIZE
my-image     v1.0.0    ae5c44518464   2 minutes ago   109MB

swon2@labuser75ubuntu:~/docker-practice$ sudo docker run my-image:v1.0.0
Hello Docker

CMD 로 설정한 Hello Docker 가 잘 출력되는 모습이다.

3.4 Docker Registry 연결

Docker Registry 는 이미 잘 준비된 도커 컨테이너가 존재하므로, 쉽게 사용할 수 있다.

swon2@labuser75ubuntu:~/docker-practice$ sudo docker run -d -p 5000:5000 --name registry registry

swon2@labuser75ubuntu:~/docker-practice$ sudo docker images
REPOSITORY   TAG       IMAGE ID       CREATED          SIZE
my-image     v1.0.0    ae5c44518464   19 minutes ago   109MB
registry     latest    909c3ff012b7   5 weeks ago      25.4MB

swon2@labuser75ubuntu:~/docker-practice$ sudo docker tag my-image:v1.0.0 localhost:5000/my-image:v1.0.0

swon2@labuser75ubuntu:~/docker-practice$ sudo docker images
REPOSITORY                TAG       IMAGE ID       CREATED          SIZE
my-image                  v1.0.0    ae5c44518464   23 minutes ago   109MB
localhost:5000/my-image   v1.0.0    ae5c44518464   23 minutes ago   109MB
registry                  latest    909c3ff012b7   5 weeks ago      25.4MB

3.5 내 Docker Hub에 image 올리기

로그인 후 태그, push

swon2@labuser75ubuntu:~/docker-practice$ sudo docker tag my-image:v1.0.0 2swon/my-image:v1.0.0

swon2@labuser75ubuntu:~/docker-practice$ sudo docker push 2swon/my-image:v1.0.0
The push refers to repository [docker.io/2swon/my-image]
49b2926fd594: Pushed
548a79621a42: Mounted from library/ubuntu
v1.0.0: digest: sha256:ef1c4b356b7d66764ef77a224f629c0a45e852fd7bf8edb7ddd8fa53c38f2ccb size: 741


잘 올라와졌다.

profile
개발자

0개의 댓글

관련 채용 정보