skt에서 임시로 빌려준 azure 계정으로 portal azure 에서 가상환경 생성
생성 했다면 cmd에 들어가서 아래 명령어 입력 하면 정상적으로 서버에 연결이 된다.
C:\Users\2022-PC(T)-21>ssh swon2@ [ 가상환경 ip ]
우리는 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
폴더 생성 후 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 은 베이스 이미지(Base image)를 지정하는 지시어다.
RUN 은 말 그대로 command 를 실행(run)하여 새 이미지에 포함시키는 역할을 한다.
CMD 는 컨테이너가 시작될 때 실행할 커맨드를 지정하는 지시어이다.
Host 내에 있는 파일 또는 디렉토리를 컨테이너의 파일시스템으로 복사.
이후 작성될 명령어를 컨테이너 내의 어떤 디렉토리에서 수행할 것인지를 명시하는 명령어입니다.
컨테이너 내부에서 지속적으로 사용될 environment variable 의 값을 설정하는 명령어입니다.
컨테이너에서 뚫어줄 포트/프로토콜을 지정할 수 있습니다.
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 가 잘 출력되는 모습이다.
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
로그인 후 태그, 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
잘 올라와졌다.