본문 바로가기

프로젝트 설정/기타

[Docker] 도커 설치 / 컨테이너 실행/중지 (ubuntu)

반응형

0. 실행환경

AWS - ubuntu Server 20.04 LTS (HVM), SSD Volume Type

인스턴스 유형 - t2.micro

vCPU 수 - 1

볼륨 크기(GiB) - 8

1. 설치

https://docs.docker.com/engine/install/

 

curl -fsSL https://get.docker.com/ | sudo sh

 

 

2. Linux용 설치 후 단계

도커내에서 sudo 없이 사용하기 (도커 권한 부여)

docker는 기본적으로 root권한이 필요하므로

root가 아닌 사용자가 sudo없이 사용하려면 해당사용자docker그룹에 추가하는 작업이 필요.

# 권한 그룹 생성
sudo groupadd [group_name]
sudo groupadd docker

# usermod : 사용자 속성 변경
# -G (--groups) : 새로운 그룹
# -a(--append) : 다른 그룹에서 삭제 없이 G 옵션에 따른  그룹에 사용자를 추가

# 현재 접속중인 사용자에게 권한주기
sudo usermod -aG docker $USER

# your-user 사용자에게 권한주기
sudo usermod -aG docker your-user 

# 도커 재실행
sudo service docker restart

 

도커를 재실행하였어도 안되는 경우

https://docs.docker.com/engine/install/linux-postinstall/#manage-docker-as-a-non-root-user

 

부팅 시 시작하도록 Docker 구성

https://docs.docker.com/engine/install/linux-postinstall/#configure-docker-to-start-on-boot

대부분의 최신 Linux 배포판(RHEL, CentOS, Fedora, Debian, Ubuntu 16.04 이상)systemd은 시스템 부팅 시 시작되는 서비스를 관리하는 데사용합니다.Debian 및 Ubuntu에서 Docker 서비스는 기본적으로 부팅 시 시작되도록 구성됩니다.다른 배포판의 부팅 시 Docker 및 Containerd를 자동으로 시작하려면 아래 명령을 사용하십시오.

sudo systemctl enable docker.service
sudo systemctl enable containerd.service

#이 동작을 비활성화하려면 disable대신 사용하십시오.

sudo systemctl disable docker.service
sudo systemctl disable containerd.service

HTTP 프록시를 추가해야 하는 경우 Docker 런타임 파일에 대해 다른 디렉토리 또는 파티션을 설정하거나 다른 사용자 정의를 수행해야 하는 경우 systemd Docker 데몬 옵션 사용자 정의를 참조하십시오 .

 

Docker 데몬이 연결을 수신하는 위치 구성

https://docs.docker.com/engine/install/linux-postinstall/#configure-where-the-docker-daemon-listens-for-connections

systemd 유닛 파일로 원격 접속 설정하기

  1. systemctl을 사용하여 docker.service 텍스트 편집기에서 재정의 파일을 엽니다.
  2. sudo systemctl edit docker.service
  3. 사용자 고유의 값으로 대체하여 다음 행을 추가하거나 수정하십시오.
    [Service]
    ExecStart=
    ExecStart=/usr/bin/dockerd -H fd:// -H tcp://127.0.0.1:2375​
  4. 파일을 저장합니다.
  5. systemctl구성을다시 로드합니다.
    sudo systemctl daemon-reload​
  6. 도커를 다시 시작합니다.
    sudo systemctl restart docker.service​

구성된 포트에서 수신 대기netstat중인지 확인하기 위해의 출력을 검토하여 변경 사항이 적용되었는지 확인dockerd합니다.

sudo netstat -lntp | grep dockerd

 

3. 도커 컨테이너 실행 (run)

docker run [OPTIONS] IMAGE[:TAG|@DIGEST] [COMMAND] [ARG...]

실행 Docs

https://docs.docker.com/engine/reference/commandline/run/

실행 옵션 상세

https://docs.docker.com/engine/reference/commandline/run/#options

docker run reference

https://docs.docker.com/engine/reference/run/

실행 시 자주 사용하는 옵션

-d detached mode 흔히 말하는 백그라운드 모드
-p 호스트와 컨테이너의 포트를 연결 (포워딩)
-v 호스트와 컨테이너의 디렉토리를 연결 (마운트)
-e 컨테이너 내에서 사용할 환경변수 설정
–name 컨테이너 이름 설정
–rm 프로세스 종료시 컨테이너 자동 제거
-it -i와 -t를 동시에 사용한 것으로 터미널 입력을 위한 옵션
–link 컨테이너 연결 [컨테이너명:별칭]
--interactive , -i 연결되지 않은 경우에도 STDIN을 열어 두십시오.
--tty , -t pseudo-TTY(유사 터미널) 할당 

TTY(teletypewriter) 리눅스 디바이스 드라이브중에서 콘솔이나 터미널을 의미

Pseudo Terminal은 application 이 보기에는 터미널로 보이지만, 사실 진짜 터미널이 아닌 것

 

도커 컨테이너 실행 확인 1

docker run hello-world

도커 컨테이너 실행 확인 2

docker run -d -p 80:80 docker/getting-started
  • -d - run the container in detached mode (in the background) 
  • -p 80:80 - map port 80 of the host to port 80 in the container
  • docker/getting-started - the image to use

 

4. 도커 데시보드 The Docker Dashboard (Window/Mac)

https://docs.docker.com/get-started/#the-docker-dashboard

 

5. 컨테이너란? What is a container?

https://docs.docker.com/get-started/#what-is-a-container

 

6. 컨테이너 이미지란? What is a container image?

https://docs.docker.com/get-started/#what-is-a-container-image

 

7. 컨테이너 목록 확인 (ps)

docker ps [option]
docker ps -a # 모든 컨테이너 목록

8. 컨테이너 상태(live stream) 확인 (stats)

Display a live stream of container(s) resource usage statistics

docker stats [OPTIONS] [CONTAINER...]

 

9. 컨테이너 로그 보기 (logs)

docker logs [OPTIONS] CONTAINER

 

10. 컨테이너 중지 (stop)

https://docs.docker.com/engine/reference/commandline/stop/

Stop one or more running containers

docker stop [OPTIONS] CONTAINER [CONTAINER...]

docker ps -a
CONTAINER ID   IMAGE                    COMMAND                  CREATED          STATUS                    PORTS     NAMES
ff83ca3b4930   docker/getting-started   "/docker-entrypoint.…"   54 minutes ago   Created                             vigilant_lederberg
298710b10dc9   docker/getting-started   "/docker-entrypoint.…"   27 hours ago     Created                             cool_mayer
23fb35090abc   docker/getting-started   "/docker-entrypoint.…"   27 hours ago     Created                             friendly_benz
ae89c0354367   hello-world              "/hello"                 47 hours ago     Exited (0) 47 hours ago             wizardly_dijkstra
3e7b95008db1   hello-world              "/hello"                 47 hours ago     Exited (0) 47 hours ago             sharp_shirley

docker stop ff83ca3b4930

 

Options

Name, shorthand Default Description
--time , -t 10 중지하기 전에 딜레이 주기 Seconds to wait for stop before killing it

 

11. 컨테이너 제거 (rm)

docker rm [OPTIONS] CONTAINER [CONTAINER...]

 

12. 컨테이너 명령어 실행하기 (exec)

docker exec [OPTIONS] CONTAINER COMMAND [ARG...]

실행중인 컨테이너에 들어가거나 컨테이너의 파일을 실행하고 싶을 때

run은 새로 컨테이너를 만들어서 실행하고 exec은 실행중인 컨테이너에 명령어로 실행합니다.

 

 

 

참조 사이트

Docker Docs (install)

https://docs.docker.com/engine/install/linux-postinstall/

 

Post-installation steps for Linux

 

docs.docker.com

Docker Docs (명령어)

https://docs.docker.com/engine/reference/run/

 

Docker run reference

 

docs.docker.com

 

 

https://cultivo-hy.github.io/docker/image/usage/2019/03/14/Docker%EC%A0%95%EB%A6%AC/

 

[Docker] 개념 정리 및 사용방법까지.

 

cultivo-hy.github.io

 

 

https://blusky10.tistory.com/359

 

Docker 사용시 sudo 없이 사용하기

Docker 를 사용하려면 기본적으로 루트 권한이 필요하다. 그래서 그냥 쓰려면 매번 sudo 를 붙여 쓰던지 아니면 root 권한으로 변경해서 사용해야 한다. root 로 변경해서 사용하기는 좀 그렇고 현재

blusky10.tistory.com

 

tty, pty, pts란?

https://m.blog.naver.com/snazzy79/70148845500

 

tty, pty, pts란?

TTY(teletypewriter) 항목은 리눅스 디바이스 드라이브중에서 콘솔이나 터미널을 의미합니다. - 콘솔모...

blog.naver.com

 

 

도커 권한 관련 링크

Docker 데몬 공격 표면 

https://docs.docker.com/engine/security/#docker-daemon-attack-surface

 

Docker security

 

docs.docker.com

도커 Rootless mode

https://docs.docker.com/engine/security/rootless/

 

Run the Docker daemon as a non-root user (Rootless mode)

 

docs.docker.com

도커 컨테이너(Docker Container)에 대한 쉘 권한과 접근에 대한 이야기

https://www.hahwul.com/2018/04/03/docker-container/

 

도커 컨테이너(Docker Container)에 대한 쉘 권한과 접근에 대한 이야기

잠깐 시간내어 간단하게 글 작성합니다. docker 컨테이너 내부로 접근할 떄 보통 exec 명령으로 /bin/bash, /bin/sh를 호출하는 경우가 많습니다. 테스트 하다보니 권한 관련해서 좀 신기한게 있었네요.

www.hahwul.com

 

 

반응형