###### GUI 프로그램 ######
nautilus # 파일탐색기
gnome-system-monitor # 작업관리자
gedit # 노트패드
watch docker container ls -a # 컨테이너 목록 조회
chrome # 크롬 브라우저
dcrmall # 컨테이너 전체 삭제
도커 명령어의 이해
도커 설치 방법
curl -sSL https://get.docker.com | sh #최신버전 설치
#docker 운영에 필요한 필수 패키치 설치
yum install -y yum-utils
#docker repository 추가
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
#docker 설치가능 버전 확인
yum list docker-ce --showduplicates
--번외--
yum install -y docker-ce #최신버전설치
yum install -y docker-ce-<version> #(optional) 특정 도커 설치
도커 설치 정보 확인
## docker 데몬을 시작하고 시스템 부팅 시에 자동 시작하도록 구성
systemctl enable docker
systemctl start docker # 도커 시작
systemctl status docker
docker version # 도커버전 확인
# 도커 CLI
Client: Docker Engine - Community
Version: 27.0.3
API version: 1.43 (downgraded from 1.46)
Go version: go1.21.11
Git commit: 7d4bcd8
Built: Sat Jun 29 00:04:07 2024
OS/Arch: linux/amd64
Context: default
---
# 도커 데몬
Server: Docker Engine - Community
Engine:
Version: 24.0.7
API version: 1.43 (minimum version 1.12)
Go version: go1.20.10
Git commit: 311b9ff
Built: Thu Oct 26 09:07:45 2023
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.7.18
GitCommit: ae71819c4f5e67bb4d5ae76a6b735f29cc25774e
runc:
Version: 1.7.18
GitCommit: v1.1.13-0-g58aa920
docker-init:
Version: 0.19.0
GitCommit: de40ad0
#docker info 명령어를 통해 docker 구성정보 확인
docker info
Docker는 리눅스 시스템의 Netfilter라는 시스템을 통해 네트워킹을 한다.
넷필터
- 리눅스 커널 내부의 네트워크 관련 프레임워크, 다양한 네트워크 연산을 핸들러 형태로 구현할 수 있는 훅을 제공
도커 코드 자동 완성
# Docker Command Auto-Completion 기능 사용하기
# docker tab tab 누르면 가능
yum install -y bash-completion
curl https://raw.githubusercontent.com/docker/docker-ce/master/components/cli/contrib/completion/bash/docker -
o /etc/bash_completion.d/docker.sh
watch docker container ls -a
도커 용어 정리
# ubuntu:24.04 이미지를 , 사용하겠다 -> local에 없음 -> docker registry로 들어가서 실행한다.(hub.docker.com)
[root@dockeredu ~]# docker container run -it ubuntu:24.04
Unable to find image 'ubuntu:24.04' locally
24.04: Pulling from library/ubuntu
9c704ecd0c69: Pull complete
Digest: sha256:2e863c44b718727c860746568e1d54afd13b2fa71b160f5cd9058fc436217b30
Status: Downloaded newer image for ubuntu:24.04
root@9d0b6bcd3057:/#
/# 쉘이 떠있어야 한다.
apt-get update; apt-get install -y net-tools
net-tools를 사용하면 ifconfig 가 된다.
brctl show
컨테이너 파일 시스템은 merged
도커 명령어의 특징 이전 명령어 / 최근 명령어
docker --help #이전
docker container --help #최신
docker container run --help #실행을 많이 하기 때문에
docker ps -a
docker container ps -a
# 컨테이너 실행
# - Apach web server 모든게 들어있음 실행
docker run -d -p 8080:80 httpd:2.4
리눅스 chrominum에 들어가면 된다. 172.17.0.3 / http://0.0.0.0:8080에 들어가면 메인페이지가 뜬다.
도커 명령어
컨테이너 목록 표시
docker container ls -a # all
docker container ls -q # container 아이디만 보임
컨테이너 라이프 사이클 명령어
docker container run # 컨테이너 생성 시작
docker container create # 컨테이너 생성 (잘 쓰진 않음)
docker container start # 정지된 컨테이너를 시작
docker container stop # 컨테이너 정지
docker container rm # 정지된 컨테이너를 삭제
ex)
create
- 해당 status creat 인 모습
[root@dockeredu ~]# docker container create -it centos:7.6.1810
[root@dockeredu ~]# docker container ls -a
CONTAINER ID IMAGE COMMAND CREATED STATU S PORTS NAMES
72cf4927b6ce centos:7.6.1810 "/bin/bash" 26 seconds ago Creat ed happy_swanson
run
docker container run -it centos:7.6.1810
stop
docker container stop [컨테이너 이름, 컨테이너 id]
start
docker container start [컨테이너 이름, 컨테이너 id]
rm
- 컨테이너가 다 날아가니 조심
docker container rm [컨테이너 이름, 컨테이너 id]
docker container rm -f [NAME] # -f는 실행중인 컨테이너도 삭제가능
Docker Container run
- 대화식 실행 옵션
docker container run -it centos #i --interactive , --tty
- 이름 설정 (특정 컨테이너를 이름을 할당해서 관리 가능함)
docker container run centos
docker container run --name con01 centos
docker container ls -a
- 백그라운드 실행
docker container run -d --name=N01 nginx:1.25 # -d detach 옵션
docker container exec N01 cat /etc/hosts
curl http://172.17.0.2:80
- 컨테이너 로그 확인
로그를 더 딥하게 볼때 사용 가능 logs -f,-t
docker container run -d --name=T01 tomcat:8
docker container ls -a
docker container logs -ft T01 # -t --timestamps , -f --follow
- 포트 노출
호스트 OS의 넷필터 NAT룰에 Docker Container IP가 포트 포워딩 됨 -p
docker container run -d --name N02 -p 7070:80 nginx:1.25
# 호스트의 7070 포트를 컨테이너의 8080 포트를 맵핑
iptables -t nat -vnL
- 환경변수 설정
-e --env list 옵션을 통해서 환경변수를 저장해서 쓴다. K8s 로 넘어가면 yaml 을 활용해서 설정을 한다
docker container run -it -e FOO=BAR -e JAVA_HOME=/usr/local/jdk1.8 centos
- 현재 작업 디렉터리(Current Working Directory) 설정
해당 디렉토리가 없는 경우 같이 쓴다. -w
docker container run -it -w=/tensorflow centos
- 정지된 컨테이너 일괄 삭제
docker container prune
#-f --force Do not prompt for confirmation
- docker container cp
HOST와 컨테이너간의 파일 복사
echo "Hello Docker" > hello.html
docker container run -d --name=web httpd:2.4 # 컨테이너 실행
curl http://172.17.0.2/hello.html
# 127.17.0.2/hello.html 을 접속하면 'Not Found' 뜰 것임.
#복사
docker container cp hello.html web:/usr/local/apache2/htdocs
docker container cp web:/usr/local/apache2/htdocs/index.html ~/
- 가동 컨테이너에서 새로운 프로세스 실행
▶ 백그라운드에서 실행되고 았는 컨테이너에 액세스하고 싶을 때
▶ docker container attach 명령으로 연결해도 쉘이 작동하지 않는 경우에 유용함
# Usage: docker container exec [OPTIONS] CONTAINER COMMAND [ARG...]
docker container run -d --name=web httpd:2.4
docker container attach web
-- 컨테이너의 1번 process인 httpd에게 STDIN, STDOUT을 연결해도 기타 명령을 내릴 수가 없다.
-- “ctrl + c” httpd 프로세스를 종료하면, 결국에는 1번 proces가 종료되기 때문에 컨테이너도 종료되게 된다
- 컨테이너 상세 정보 확인
# Usage: docker container inspect
docker container run -d --name=web httpd:2.4
docker container inspect web
'Study notes' 카테고리의 다른 글
Docker Container 이해하기 - (4) image 명령어, 도커파일 (0) | 2024.07.12 |
---|---|
Docker Container 이해하기 - (3) (0) | 2024.07.12 |
Docker Container 이해하기 (0) | 2024.07.11 |
FastAPI 기초부터 A to Z (0) | 2024.07.10 |
Docker에 대하여 - (2) (0) | 2024.06.13 |