목차
docker command
Docker Image 명령어
설치된 도커 이미지 보기
도커 이미지 다운로드
Ubuntu 18.04LTS 이미지 pull
1
|
docker pull ubuntu:18.04
|
도커 이미지 제거
컨테이너 이미지 뜨기
이미지를 뜰 컨테이너가 실행되고 있다면 먼저 종료한다
1
2
|
docker commit <컨테이너명> <이미지 이름>:<태그>
docker commit <컨테이너명> <이미지 이름>/<태그>
|
이미지를 로컬에 저장하기
이미지가 로컬에 저장될 때에는 tar 압축파일 형식으로 저장됨
1
2
3
|
dockekr save <옵션> <이미지이름>:<태그>
-o, --output: 로컬로 저장할 이미지의 이름 (이미지 이름 뒤에 .tar확장자 붙여주기)
(-o <로컬 이미지 이름> [-o backup.tar])
|
예시
1
|
docker save -o backups.tar ubuntu18.04:latest
|
로컬의 이미지를 도커로 불러오기
tar형식의 이미지를 도커로 불러온다.
1
2
3
|
docker load <옵션>
-i, --input: 로컬의 이미지 이름
(-i <로컬 이미지 이름> [-i backup.tar])
|
예시
1
2
|
docker load < backups.tar
docker load -i backups.tar
|
Docker Volume 명령어
도커 볼륨 상태 보기
도커 볼륨 생성
1
2
3
4
5
|
docker volume create
--name <볼륨이름>
docker volume create --name myvolumename
|
Docker Container 명령어
도커 컨테이너 상태 보기
1
2
|
docker ps <옵션>
-a 현재 동작하지 않는 컨테이너까지 보기
|
컨테이너 생성만 하기
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
docker create <옵션> <이미지명:태그>
-i, --interactive=false: 표준 입력(stdin)을 활성화하며 컨테이너와 연결(attach)되어 있지 않더라도 표준 입력을 유지.
-t, --tty=false: TTY 모드(pseudo-TTY). Bash를 사용하려면 이 옵션을 설정해야 함. (이 옵션을 설정하지 않으면 명령을 입력할 수는 있지만 셸이 표시되지 않음)
-p, --publish: 호스트에 연결된 컨테이너의 특정 포트를 외부에 노출.
( -p <호스트포트>:<컨테이너 내부 포트> [-p 80:80])
( 8080:80 시 내부 80번 포트를 외부 8080포트와 연결함. 외부에서 8080으로 접속 시 80으로 매칭)
( -p <IP 주소>:<호스트 포트>:<컨테이너 내부 포트> 호스트에 네트워크 인터페이스가 여러 개이거나 IP 주소가 여러 개 일 때 사용.)
-v, --volume: 호스트의 <호스트 경로>를 컨테이너의 <컨테이너 경로>와 연결함
( -v <호스트 경로>:<컨테이너 경로> [-v /root/docker_volume:/share_volume])
--add-host=host.localhost:host-gateway: "ssh host.localhost" 시 localhost 로 ssh 연결 가능, host.localhost는 컨테이너를 서비스하는 호스트의 주소를 가리킴
--name: 생성할 때 컨테이너에 이름을 설정함.
( --name <컨테이너명> [--name test01])
|
예시
1
|
docker create -i -t --name container01 -p 8080:8080 ubuntu:latest
|
Docker Container systemctl Error 해결하기
1
|
--privileged=true 옵션과 이미지 이름 뒤에 /sbin/init을 붙여준다.
|
예시
1
|
docker create -it --privileged=true --name container01 -p 8080:8080 ubuntu:latest /sbin/init
|
컨테이너 생성과 동시에 실행하기
1
2
|
docker run <옵션> <이미지명:태그>
옵션은 create와 공유함.
|
예시
1
|
docker run -i -t --name container01 -p 8080:8080 ubuntu:latest
|
컨테이너 시작하기
1
|
docker start <컨테이너명, 컨테이너ID>
|
컨테이너 종료하기
1
|
docker stop <컨테이너명, 컨테이너ID>
|
컨테이너 재실행하기
1
|
docker restart <컨테이너명, 컨테이너ID>
|
컨테이너 접근하기
1
2
3
4
5
|
docker attach <컨테이너명, 컨테이너ID>
attach로 안들어가지면
docker exec -i -t <컨테이너명, 컨테이너ID> bash
루트로 접근하기
docker exec -u 0 -it testjenkins bash
|
컨테이너에 접근하지 않고 명령 실행하기
1
|
docker exec <옵션> <컨테이너명> <명령> <매개변수>
|
1
2
|
(일반적으로 exec를 사용하는 명령어 옵션)
docker exec -i -t <컨테이너명> <명령> <매개변수>
|
컨테이너를 종료하며 빠져나오기
1
|
컨테이너 내에서 exit 또는 Ctrl+D
|
컨테이너를 종료하지 않고 빠져나오기
1
2
3
|
컨테이너 내에서
(Ctrl+ P + Q) 또는
(Ctrl+P) + (Ctrl+Q
|
호스트와 컨테이너 간 파일,폴더 복사
1
2
3
4
5
|
호스트 -> 컨테이너
docker cp <호스트 경로> <컨테이너명>:<컨테이너 경로>
컨테이너 -> 호스트
docker cp <컨테이너명>:<컨테이너 경로> <호스트 경로>
|
컨테이너 제거하기
1
|
docker rm <컨테이너명, 컨테이너ID>
|
컨테이너 IP 확인하기
1
|
docker inspect -f "{{ .NetworkSettings.IPAddress }}" <컨테이너명>
|
이외 도커 세팅
부팅 시 컨테이너 자동시작하기
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
cd /etc/systemd/system
vi <설정할 서비스명>.service
==============================================================================
# 그대로 복사
[Unit]
Wants=docker.service
After=docker.service
[Service]
RemainAfterExit=yes
ExecStart=/usr/bin/docker start <실행할 docker container 이름>
ExecStop=/usr/bin/docker stop <실행할 docker container 이름>
[Install]
WantedBy=multi-user.target
==============================================================================
systemctl start <설정한 서비스명>.service
systemctl enable <설정한 서비스명>.service -> 부팅시 실행할 수 있도록 해당 서비스 활성화
# systemctl enable 명령어를 실행하였을 때 정상적으로 동작한다면 심볼릭 링크가 생성될 것임.
# /etc/systemd/system/multi-user.target.wants/<설정한 서비스명>.service 에서
# /etc/systemd/system/<설정한 서비스명>.service로 심볼릭 링크 생성
# systemctl이 enable되었는지 설정 보기
systemctl list-unit-files | grep docker
|
컨테이너에 파이썬 세팅하기
1
|
apt-get install -y python3 python3-pip
|
컨테이너에서 한국어가 깨질 때
특별한 세팅을 해주지 않는다면 컨테이너를 재부팅할 때마다source /etc/profile을 해줘야 함
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
apt-get install -y locales
locale-gen ko_KR.UTF-8
======================================================
# /etc/profile의 맨 밑줄에 해당 내용을 추가한 뒤 저장
export LC_ALL=ko_KR.UTF-8
======================================================
source /etc/profile
또는 해당 명령어 차례로 입력
apt-get install locale
apt-get install language-pack-ko
locale-gen ko_KR.UTF-8
dpkg-reconfigure locales
update locale LANG=ko_KR.UTF-8 LC_MESSAGE=POSIX
/etc/default/locale 파일 수정
LANG=ko_KR.UTF-8
LC_ALL=ko_KR.UTF-8
LC_MESSAGES=POSIX
이후 재부팅
|
컨테이너에서 init.d와 비슷한 옵션 주기
/root/.bashrc의 맨 밑줄에 컨테이너를 시작할 때 같이 실행할 명령을 추가한다.
dockerfile
Dockerfile 명령어
docker compose