Post

docker manual

목차


docker command

Docker Image 명령어

설치된 도커 이미지 보기

1
docker images

도커 이미지 다운로드

1
docker pull <이미지>:<태그>

Ubuntu 18.04LTS 이미지 pull

1
docker pull ubuntu:18.04

도커 이미지 제거

1
docker rmi <이미지id>

컨테이너 이미지 뜨기

이미지를 뜰 컨테이너가 실행되고 있다면 먼저 종료한다

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
docker volume ls

도커 볼륨 생성

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

This post is licensed under CC BY 4.0 by the author.