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 데몬이 연결을 수신하는 위치 구성
systemd 유닛 파일로 원격 접속 설정하기
- systemctl을 사용하여 docker.service 텍스트 편집기에서 재정의 파일을 엽니다.
sudo systemctl edit docker.service
- 사용자 고유의 값으로 대체하여 다음 행을 추가하거나 수정하십시오.
[Service] ExecStart= ExecStart=/usr/bin/dockerd -H fd:// -H tcp://127.0.0.1:2375
- 파일을 저장합니다.
- systemctl구성을다시 로드합니다.
sudo systemctl daemon-reload
- 도커를 다시 시작합니다.
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/
Docker Docs (명령어)
https://docs.docker.com/engine/reference/run/
https://cultivo-hy.github.io/docker/image/usage/2019/03/14/Docker%EC%A0%95%EB%A6%AC/
https://blusky10.tistory.com/359
tty, pty, pts란?
https://m.blog.naver.com/snazzy79/70148845500
도커 권한 관련 링크
Docker 데몬 공격 표면
https://docs.docker.com/engine/security/#docker-daemon-attack-surface
도커 Rootless mode
https://docs.docker.com/engine/security/rootless/
도커 컨테이너(Docker Container)에 대한 쉘 권한과 접근에 대한 이야기
https://www.hahwul.com/2018/04/03/docker-container/
'프로젝트 설정 > 기타' 카테고리의 다른 글
[Docker] 도커 이미지 생성/검색/다운로드/삭제 (ubuntu) (0) | 2021.09.14 |
---|---|
[Docker] 도커란? (0) | 2021.09.10 |
[Ubuntu] 방화벽(firewall) (Ubuntu 18.04.5 LTS)(nginx) (0) | 2021.08.25 |
[Token] (0) | 2021.07.19 |
[ubuntu] 예약/반복 작업 (crontab/Shell Script) (ubuntu/Linux) (0) | 2021.07.19 |