[Docker] Restart 설정

restart 설정은 docker를 재시작하거나 컨테이너의 상태에 따라 컨테이너를 자동으로 재시작하는 설정입니다.

restart 옵션

restart: "no"
restart: "always"
restart: "on-failure"
restart: "unless-stopped"

 

no 옵션 (Default)

restart 설정의 Default 값은 no 옵션이 적용되어 있으며 어떠한 경우에도 컨테이너가 종료되면 재시작하지 않습니다.

services:
  httpd:
    image: httpd:latest
    container_name: "my-web-server"
    restart: "no"

 

always 옵션

always 옵션은 컨테이너를 항상 재시작합니다.

services:
  httpd:
    image: httpd:latest
    container_name: "my-web-server"
    restart: "always"

 

Docker 서비스를 재시작해도 바로 실행됩니다.

# service docker restart
 * Stopping Docker:         [ OK ]
 * Starting Docker:         [ OK ]
# docker ps -a
CONTAINER ID   IMAGE          COMMAND              CREATED              STATUS         PORTS     NAMES
559ab0d55142   httpd:latest   "httpd-foreground"   About a minute ago   Up 4 seconds   80/tcp    my-web-server

 

단 관리자가 직접 stop 명령어로 컨테이너를 종료한 경우에는 재시작되지 않습니다.

# docker stop my-web-server
my-web-server
# docker ps -a
CONTAINER ID   IMAGE          COMMAND              CREATED          STATUS                     PORTS     NAMES
559ab0d55142   httpd:latest   "httpd-foreground"   10 minutes ago   Exited (0) 4 seconds ago             my-web-server

 

on-failure 옵션

on-failure 옵션은 오류가 발생하여 컨테이너가 비정상 종료될 경우 컨테이너를 다시 시작합니다.

services:
  httpd:
    image: httpd:latest
    container_name: "my-web-server"
    restart: "on-failure"

 

unless-stopped 옵션

unless-stopped 옵션은 컨테이너가 종료되기 전까지 재시작하는 옵션으로 Docker를 재시작 하거나 OS 리부팅 시 자동으로 시작할 수 있도록 사용합니다.

services:
  httpd:
    image: httpd:latest
    container_name: "my-web-server"
    restart: "unless-stopped"

'Docker' 카테고리의 다른 글

[Docker] Healthcheck 설정을 통한 컨테이너 상태 점검  (0) 2022.10.19
[Docker] Volumes 설정  (0) 2022.10.11
[Docker] Container name 설정  (0) 2022.09.19
[Docker] compose 기본 사용법  (0) 2022.09.19
[Docker] 기본 명령어  (0) 2022.09.15

[Docker] Container name 설정

container_name 설정은 컨테이너 생성 시 dokcer compose 기본 이름이 아닌 사용자 지정 이름으로 컨테이너 이름을 설정할 수 있습니다.

 

아래와 같이 container_name을 설정하지 않고 docker compose를 실행해봅시다.

# vi docker-compose.yml
services:
  httpd:
    image: httpd:latest

 

 

webserver_httpd_1 이라는 이름으로 컨테이너가 생성됩니다.

# docker ps
CONTAINER ID   IMAGE          COMMAND              CREATED          STATUS          PORTS     NAMES
0615144b07be   httpd:latest   "httpd-foreground"   14 seconds ago   Up 11 seconds   80/tcp    webserver_httpd_1

 

docker-compose.yml 파일의 디렉토리 이름인 webserver, 그리고 docker-compose.yml 파일에서 작성한 서비스 이름인 httpd 와 마지막 index가 조합되어 webserver_httpd_1 이름의 컨테이너가 생성되었음을 확인하실 수 있습니다.

(docker-compose 버전에 따라 생성되는 기본 이름은 다를 수 있습니다.)

 

docker-compose.yml 파일 경로

# ls -al /root/docker/webserver/docker-compose.yml
rw-r--r-- 1 root root 43 Sep 19 22:35 /root/docker/webserver/docker-compose.yml

 

서비스 이름과 경로에 따라 컨테이너 이름이 변경될 수 있기 때문에 컨테이너 이름을 설정하며 docker-compose.yml 파일에 my-web-server 이름으로 컨테이너 이름을 설정해봅시다.

# vi docker-compose.yml
services:
  httpd:
    image: httpd:latest
    container_name: "my-web-server"

 

# docker ps
CONTAINER ID   IMAGE          COMMAND              CREATED          STATUS          PORTS     NAMES
e9b741c57a9e   httpd:latest   "httpd-foreground"   21 seconds ago   Up 18 seconds   80/tcp    my-web-server

컨테이너 이름이 지정한 my-web-server 이름으로 실행된 것을 확인하실 수 있습니다.

 

'Docker' 카테고리의 다른 글

[Docker] Volumes 설정  (0) 2022.10.11
[Docker] Restart 설정  (0) 2022.09.20
[Docker] compose 기본 사용법  (0) 2022.09.19
[Docker] 기본 명령어  (0) 2022.09.15
[Docker] 간단 설치 방법  (0) 2022.09.07

[Docker] compose 기본 사용법

Docker 컨테이너가 많아지고 각각의 컨테이너별 실행 옵션들을 모두 관리할 수 없기 때문에 YAML 파일을 사용하여 다중 컨테이너를 관리합니다. 컨테이너 실행 관리뿐만 아니라 개발 및 테스트 등 여러 환경에서의 작업을 구성할 수 있습니다.

 

docker compose 설치

docker를 설치해도 docker compose는 같이 설치되지 않기 때문에 docker compose를 설치합니다.

# apt install docker-compose

설치 완료 확인

# docker-compose --version
docker-compose version 1.29.2, build unknown

 

docker-compose.yml 파일 생성

docker compose 명령어로 컨테이너 실행 시 docker-compose.yml 파일 이름을 기본으로 실행합니다. 옵션으로 다른 이름의 YAML 파일을 지정하여 사용할 수도 있지만 기본 이름을 많이 사용합니다.

간단히 httpd 컨테이너 이미지를 사용하여 docker-compose.yml 파일을 작성해보겠습니다.

# vi docker-compose.yml
services:
  httpd1:
    image: httpd:latest
    container_name: my-web-server1
    ports:
      - "8080:80"

가장 먼저 최상위에 services를 선언한 이후에 서비스 관련 내용을 작성해줍니다.
httpd1 이름의 서비스를 생성해주고 컨테이너 관련 설정을 넣어줍니다.
간단히 httpd:latest 이미지를 사용해서 my-web-server1 이름의 컨테이너를 생성하고 외부에서 8080번 포트로 접속 시 80번 포트로 포트포워딩하도록 설정하였습니다.

 

docker-compose 실행 및 종료

docker-compose.yml 파일을 생성한 위치에서 up 명령어로 컨테이너를 실행합니다.

  • -d 옵션은 백그라운드에서 실행하는 옵션입니다.
# docker-compose up -d
Creating network "webserver_default" with the default driver
Creating my-web-server1 ... done

 

docker-compose.yml 파일에 정의한 내용으로 컨테이너가 실행되었는지 확인합니다.

# docker ps
CONTAINER ID   IMAGE          COMMAND              CREATED         STATUS         PORTS                                   NAMES
841d5eb7fee8   httpd:latest   "httpd-foreground"   3 minutes ago   Up 3 minutes   0.0.0.0:8080->80/tcp, :::8080->80/tcp   my-web-server1

컨테이너 실행 후 8080번 포트로 접속 시 웹 접속을 확인하실 수 있습니다.

 

stop 명령어로 컨테이너를 종료합니다

# docker-compose stop
Stopping my-web-server1 ... done
# docker ps -a
CONTAINER ID   IMAGE          COMMAND              CREATED      STATUS                     PORTS     NAMES
841d5eb7fee8   httpd:latest   "httpd-foreground"   2 days ago   Exited (0) 2 minutes ago             my-web-server1

 

down 명령어를 사용 시에는 컨테이너를 종료할 뿐만 아니라 제거합니다.

# docker-compose down
Stopping my-web-server1 ... done
Removing my-web-server1 ... done
Removing network webserver_default
# docker ps -a
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

 

docker-compose.yml 파일이나 기타 설정을 변경한 후 컨테이너를 재시작하는 것만으로 적용이 안되는 경우가 있어 설정 변경 후에는 downup 을 같이 진행하는 것이 좋습니다.

# docker-compose down && docker-compose up -d
Stopping my-web-server1 ... done
Removing my-web-server1 ... done
Removing network webserver_default
Creating network "webserver_default" with the default driver
Creating my-web-server1 ... done

 

간단히 docker-compose.yml 파일을 작성해보고 실행하는 것을 알아보았습니다.

'Docker' 카테고리의 다른 글

[Docker] Volumes 설정  (0) 2022.10.11
[Docker] Restart 설정  (0) 2022.09.20
[Docker] Container name 설정  (0) 2022.09.19
[Docker] 기본 명령어  (0) 2022.09.15
[Docker] 간단 설치 방법  (0) 2022.09.07

[Docker] 기본 명령어

Docker 에서 사용하는 명령어에서 많이 사용하는 명령어를 위주로 정리해보았습니다.

 

# docker ps

docker 컨테이너 상태를 출력해주는 명령어입니다.

docker ps -a

 

docker ps 명령어에 여러 옵션이 있지만 -a 옵션을 사용하지 않으면 실행중인 컨테이너만 출력됩니다.

docker ps

# docker run

컨테이너를 생성하고 시작하는 명령어입니다.
docker run 명령어로 컨테이너를 실행할 수 있지만 컨테이너가 많아지고 옵션이 많아지면 관리하기 힘들기 때문에 보통은 docker-compose를 작성하여 컨테이너를 관리합니다.

docker run {option} {image}:{tag}

docker run -dit --name my-web-server3 -p 8070:80 httpd:latest

 

# docker start, stop

컨테이너를 시작, 종료하는 명령어입니다.

docker start {Name or ID}

 

docker stop {Name or ID}

 

# docker rm

컨테이너를 삭제하는 명령어입니다.

docker rm {Name or ID}

 

구동중인 컨테이너를 삭제 시 아래와 같이 에러가 나옵니다.

 

옵션( -f )을 추가하여 강제로 구동중인 컨테이너를 삭제할 수 있지만 수동으로 컨테이너 종료 후 삭제하는 것을 추천해드립니다.

docker rm -f {Name or ID}

 

# docker images

저장되어있는 컨테이너 이미지를 출력하는 명령어입니다.

docker images

 

# docker pull

컨테이너 이미지를 가져오는 명령어입니다.

docker pull {image}:{tag}

docker pull mariadb:10.4.25

 

# docker tag

컨테이너 이미지의 테그를 생성하는 명령어입니다.
컨테이너 이미지를 백업하거나 구분하기 위해 주로 사용합니다.

docker tag {source_image} {target_image}

docker tag tomcat:latest tomcat:test_v1.0.0

 

# docker save

컨테이너 이미지를 파일로 저장하는 명령어입니다.

docker save -o {image_file_name} {image}:{tag}

docker save -o tomcat-web-server.gz tomcat:test_v1.0.0

 

# docker load

컨테이너 이미지 파일을 로딩하는 명령어입니다.

docker load -i {image_file_name}

docker load -i tomcat-web-server.gz

 

# docker rmi

컨테이너 이미지를 삭제하는 명령어입니다.

docker rmi {image}:{tag}

docker rmi mariadb:10.4.25

 

# docker logs

컨테이너의 로그를 확인하는 명령어입니다.

docker logs {Name or ID}

docker logs my-web-server2

 

# docker exec

실행중인 컨테이너에 커맨드를 실행하는 명령어입니다.

docker exec {option} {Name or ID} {command}

docker exec -it my-web-server2 /bin/bash

'Docker' 카테고리의 다른 글

[Docker] Volumes 설정  (0) 2022.10.11
[Docker] Restart 설정  (0) 2022.09.20
[Docker] Container name 설정  (0) 2022.09.19
[Docker] compose 기본 사용법  (0) 2022.09.19
[Docker] 간단 설치 방법  (0) 2022.09.07

[Docker] 간단 설치 방법

Docker란 리눅스 컨테이너 기반으로 빠르게 서비스 구축, 개발, 테스트 등을 할 수 있는 오픈소스 가상화 플랫폼입니다.

 

컨테이너라는 개념이 없을 때에는 가상 머신(Virtual machine) 환경에서 서비스 구축, 개발, 테스트 등을 진행하였는데요. 각각의 가상 머신을 구성하기 위해서는 디스크 설정 및 OS 설치를 반복적으로 해야되고, 각각의 OS 위에 동작하기 때문에 서버 리소스를 많이 사용한다는 단점이 있습니다.Docker에서는 컨테이너를 실행하는 것만으로 간단히 환경 구성이 가능하고 별도 OS 위에 동작하는 것이 아니기 때문에 속도가 빠릅니다.

 

개인적인 생각이지만 가상 머신 환경을 많이 사용하신 분이라면 Docker를 사용해보시면 속도와 편리함으로 신세계를 경험하실 수 있을거라 생각됩니다.

 

Docker 설치

curl 명령어를 사용하여 docker 설치 스크립트를 다운받습니다.

curl -fsSL https://get.docker.com -o get-docker.sh

 

다운받은 docker 설치 스크립트(get-docker.sh)를 실행합니다.

sh get-docker.sh

 

스크립트 실행 후 설치가 완료되면 docker 설치를 확인합니다.

docker --version

 

이제 docker 서비스를 시작하면 docker를 바로 사용하실 수 있습니다.

service docker start

 

'Docker' 카테고리의 다른 글

[Docker] Volumes 설정  (0) 2022.10.11
[Docker] Restart 설정  (0) 2022.09.20
[Docker] Container name 설정  (0) 2022.09.19
[Docker] compose 기본 사용법  (0) 2022.09.19
[Docker] 기본 명령어  (0) 2022.09.15

VSCode 설치 및 사용법

VSCode(Visual Studio Code)는 마이크로소프트에서 개발한 소스코드 편집기 입니다. VSCode는 가볍고 속도가 빠르다는 장점이 있으며 개발에 필요한 디버깅, 유효성 체크, 편집 기능 등을 제공합니다.

VSCode 설치

VSCode 설치 파일은 공식 사이트에서 다운로드 가능합니다.

 

설치 파일을 실행하여 VSCode를 설치합니다.

 

간단히 VSCode를 설치하여 사용하실 수 있습니다.

VSCode 기본 설정 및 사용법

VSCode에서는 확장 기능을 통해서 여러 기능을 사용할 수 있습니다. 개발 언어 관련 기능 및 테마 등 여러 기능을 사용할 수 있으며 사용하실 개발 언어 관련 확장 기능을 설치하는 것을 추천드립니다.본이 되는 한국어 설정부터 기능을 추가해봅시다.

 

Extensions 메뉴에서 확장 기능을 추가할 수 있으며 korean을 검색하여 한국어 언어 팩을 추가합니다. 확장 기능에 따라 바로 적용되는 경우와 VSCode를 재시작해야 적용되는 경우가 있으니 혹시 확장 기능 추가 후에도 적용이 안된 것 같으면 한번 VSCode를 재시작하는 것을 추천드립니다.

 

한국어 언어 팩 추가 및 VSCode 재시작 후 적용되는 것을 확인하실 수 있습니다.

 

추가적으로 Ctrl + Shift + P 를 입력하면 VSCode 명령어를 입력하실 수 있는데요. language를 입력하여 언어 설정을 변경하실 수 있습니다.

 

프로젝트 생성 및 실행

프로젝트 디렉토리를 생성하고 WSL 환경에서 실행하는 것을 진행해보도록 하겠습니다. 우선 생성한 프로젝트 디렉토리를 VSCode에서 폴더 열기를 통해 프로젝트 폴더를 연결합니다. 이후 간단히 실행할 코드를 생성해봅시다.

 

VSCode에서는 상단에 터미널 기능을 사용하여 cmd, powershell 등 여러가지의 터미널을 사용할 수 있습니다. WSL 또한 터미널을 통해 사용할 수 있습니다

 

WSL에서는 자동으로 Windows 환경의 디렉토리를 /mnt 디렉토리로 마운트하여 사용하기 때문에 Windows 환경에서 파일 또는 디렉토리를 생성하여도 WSL에서 바로 접근하여 사용 가능합니다.

 

생성한 코드를 WSL 터미널에서 컴파일 후 실행하여 정상적으로 실행되는지 확인합니다. 

직접 Window PC에 컴파일러를 설치하여 VSCode에서 컴파일 및 실행이 가능하지만 저는 리눅스 환경에서의 개발을 많이 하다보니 WSL 환경이 더 편하게 느끼고 있습니다. 반드시 WSL 환경에서 컴파일 및 실행을 할 필요는 없으니 직접 사용해보시고 더 편하고 자신에게 더 맞는 환경에서 사용하시면 될 것 같습니다.

 

이것으로 간단히 VSCode를 사용하여 프로그램을 실행해보는 것을 마무리 해보겠습니다.

'기타' 카테고리의 다른 글

VMware OVF to OVA 변환 ovftool  (0) 2023.09.20
Ops로 끝나는 IT 업계 신규 용어  (3) 2023.05.31
Windows Server 2019 WSL 설치하기  (0) 2023.04.24
WSL2 Window 환경에서 Linux 사용하기  (0) 2022.08.23

WSL2 Window 환경에서 Linux 사용하기

본 문서는 Microsoft 공식 문서를 기반으로 작성하였으며 window 10 환경에서 처음 WSL를 설치하시는 분들을 위해 조금 더 쉽게 이해할 수 있도록 작성하였습니다.

 

WSL라는 것을 알기전에는 개발 환경을 구축하기 위해 가상 머신(Virtual machine) 환경에서 Linux를 설치하여 사용했습니다. 가상 머신으로 개발 환경을 구축하면 속도가 느리고 기본적으로 리소스를 많이 먹기 때문에 불편함이 있었습니다. WSL은 기존 가상 머신과 달리 디스크에 설치하거나 부팅설정도 필요 없어 윈도우 환경에서 더욱 빠르게 Linux 를 사용할 수 있습니다. 또한 소스 코드 에디터인 VSCode(Visual Studio Code)와의 연동이 매우 쉽기 때문에 사용하기 좋습니다.

1. WSL (Linux용 Windows 하위 시스템) 기능 추가

WSL 기능은 windows 자체 기능으로 Windows 기능 추가를 통해 Linux용 Windows 하위 시스템을 설치합니다.

  • Windows 기능 켜기/끄기 선택
  • Linux용 Windows 하위 시스템을 설치

 

2. WSL 버전 2 설정

WSL2를 사용하려면 Virtual Machine 플랫폼 옵션을 사용하도록 설정해야 하므로 명령 프롬프트 또는 Powershell 에서 아래 기능 활성화 명령어를 입력하여 기능을 활성화 해줍니다.

dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

Linux 커널 업데이트 패키지 다운로드 후 설치합니다.
> Linux 커널 업데이트 설치 파일 <

Virtual Machine 플랫폼 기능 활성화 및 Linux 커널 업데이트를 완료하면 WSL 기본 버전을 2로 설정합니다.

wsl --set-default-version 2

 

3. Ubuntu 설치

WSL(Linux용 Windows 하위 시스템) 설치 후 Microsoft Store에서 최신 버전 또는 원하는 OS를 선택하여 설치합니다.
설치한 OS 실행 시 아래와 같이 정상적으로 실행되며 사용자 계정 생성 후 사용하시면 됩니다.

OS 설치

wsl -l -v 명령어를 통해 WSL에 설치된 OS를 확인하실 수도 있습니다.

 

4. 기타 설정

 

4.1 기본 접속 계정 변경

Ubuntu를 기준으로 최초 OS 설치 후 생성한 사용자 계정을 기본 접속 계정이 설정되기 때문에 Ubuntu 실행 시 root 계정으로 바로 접속할 수 있도록 기본 접속 계정을 변경할 수 있습니다. 설정 이후 WSL를 재시작하면 변경된 접속 계정으로 바로 접속되는 것을 확인하실 수 있습니다.

설정 포맷 : {os name} config --default-user {기본 접속 계정}

ubuntu2204 config --default-user root

'기타' 카테고리의 다른 글

VMware OVF to OVA 변환 ovftool  (0) 2023.09.20
Ops로 끝나는 IT 업계 신규 용어  (3) 2023.05.31
Windows Server 2019 WSL 설치하기  (0) 2023.04.24
VSCode 설치 및 사용법  (0) 2022.09.06

+ Recent posts