반응형
Docker container
[컨테이너 라이프 사이클]
컨테이너 조작 기본 명령
- 컨테이너 생성
이미지로부터 컨테이너를 생성한다. 이 명령을 수행하면 이미지에 포함될 리눅스의 디렉토리와 파일들의 스냅샷을 취한다.
$ docker container create 명령
- 컨테이너 생성 및 시작
이미지로부터 컨테이너를 생성하고, 컨테이너 상에서 임의의 프로세스를 시작
$ docker container run [옵션] 이미지명[:태그명] [인수]
옵션 | 설명 |
---|---|
--attach, -a | 표준 입력(STDIN), 표준 출력(STDOUT), 표준 오류 출력(STDERR)에 attach |
--cidfile | 컨테이너 ID를 파일로 출력 |
--detach, -d | 컨테이너를 생성하고 백그라운드에서 실행 |
--interactive, I | 컨테이너의 표준입력을 연다 |
--tty, -t | 단말기 디바이스 사용 |
백그라운드 실행 옵션
옵션 | 설명 |
---|---|
--detach, -d | 백그라운드에서 실헹 |
--user, -u | 사용자명을 지정 |
--restart=[no OR on-failure OR on-failure:횟수n OR always OR unless-stopped] | 명령의 실행 결과에 따라 재시작 하는 옵션 |
--rm | 명령 실행 완료 후에 컨테이너를 자동으로 삭제 |
네트워크 설정 옵션
옵션 | 설명 |
---|---|
--add-host=[호스트명:IP 주소] | 컨테이너의 /etc/hosts에 호스트 명과 IP 주소 정의 |
--dns=[IP주소] | 컨테이너용 DNS 서버의 IP주소 지정 |
--expose | 명령의 실행 결과에 따라 재시작 하는 옵션 |
--mac-address=[MAC 주소] | 명령 실행 완료 후에 컨테이너를 자동으로 삭제 |
--net=[bridge OR none OR container: OR host OR NETWORK] | 컨테이너의 네트워크를 지정 |
--hostname, -h | 컨테이너 자신의 호스트명을 지정 |
--publish, -p[호스트의 포트 번호]:[컨테이너의 포트 번호] | 호스트와 컨테이너의 포트 매핑 |
--publish-all, -p | 호스트의 임의의 포트를 컨테이너에 할당 |
- 컨테이너 가동 확인
$ docker container stats [식별자]
- 컨테이너 시작
정지중인 컨테이너를 시작하거나 할당된 컨테이너 식별자를 지정하여 컨테이너를 시작
$ docker container start [옵션] <컨테이너 식별자> [컨테이너 식별자]
옵션 | 설명 |
---|---|
--attach, -a | 표준 출력, 오류 출력을 연다 |
--interactive, -l | 컨테이너의 표준 입력을 연다 |
- 컨테이너 종료
실행중인 컨테이너를 정지시킬때 사용
$ docker container stop [옵션] <컨테이너 식별자> [컨테이너 식별자]
옵션 | 설명 |
---|---|
--time, -t | 컨테이너의 정지시간을 지정(기본값 10초) |
- 컨테이너 재시작할
컨테이너를 재시작할 때 사용한다.
$ docker container restart [옵션] <컨테이너 식별자> [컨테이너 식별자]
옵션 | 설명 |
---|---|
--time, -t | 컨테이너의 재시작 시간을 지정(기본값 10초) |
- 컨테이너 삭제
$ docker container rm [옵션] <컨테이너 식별자> [컨테이너 식별자]
옵션 | 설명 |
---|---|
--force, -f | 강제로 삭제 |
--volumes, -v | 할당한 볼륨을 삭제 |
- 컨테이너 중단 및 재개
실행중인 컨테이너의 프로세스를 모두 중단시킬 때 사용한다.
$ docker container pause <컨테이너 식별자>
## webserver인 컨테이너
$ docker container pause webserver
- 컨테이너 재개
$ docker container unpause webserver
가동 컨테이너에서 프로세스 실행(docker container exec)
가동중인 컨에티너에서 새로운 프로세스를 실행할때 docker continaer exec명령을 사용한다.
예를들어 백그라운드에서 실행중인 컨테이너에 엑세스 하고 싶을 때 임의의 명령을 실행 할 수 있다.
$ docker container exec [옵션] <컨테이너 식별자> <실행할 명령> 인수
지정할 수 있는 옵션
옵션 | 설명 |
---|---|
--detach, -d | 백그라운드에서 실헹 |
--interactive, -i | 컨테이너의 표준 입력을 연다. |
--tty, -t | tty(단말 디바이스)를 사용한다 |
--user, -u | 사용자명을 지정 |
컨테이너에서 bash 실행
$ docker container exec -it webserver /bin/bash
'hello' echo명령 실행
$ docker container exec -it webserver /bin/echo 'hello'
hello
가동 컨테이너의 프로세스 확인(docker container top)
$ docker container top webserver
UID PID PPID C STIME TTY TIME CMD
root 4328 4302 0 08:41 ? 00:00:00 nginx: master process nginx -g daemon off;
uuidd 4403 4328 0 08:41 ? 00:00:00 nginx: worker process
uuidd 4404 4328 0 08:41 ? 00:00:00 nginx: worker process
uuidd 4405 4328 0 08:41 ? 00:00:00 nginx: worker process
가동 컨테이너의 포트 전송 확인(docker container port)
실행되고 있는 프로세스가 전송되고 있는 포트 확인
$ docker container port webserver
80/tcp -> 0.0.0.0:80
컨테이너 안의 파일을 복사(docker container cp)
컨테이너 안의 파일을 호스트에 복사할 때 docker container cp
명령을 사용한다.
$ docker container cp <컨테이너 식별자>:<컨테이너 안의 파일 경로> <호스트의 디렉토리 경로>
$ docker container cp <호스트 파일> <컨테이너 식별자>:<컨테이너 안의 파일 경로>
webserver의 컨테이너 안에 있는 /etc/nginx/nginx.conf 파일을 /tmp/에 복사할 때
$ docker container cp webserver:/etc/nginx/nginx.conf /tmp/nginx.conf
$ ls -al /tmp/nginx.conf
-rw-r--r-- 1 pscheol wheel 648 7 20 00:06 /tmp/nginx.conf
호스트 디렉토리에 있는 test.sh 파일을 webserver 컨테이너 /tmp 폴더에 복사
$ docker container cp container cp ./test.sh webserver:/tmp/test.sh
## 복사됬는지 확인
$ docker container exec -it webserver /bin/bash
root@f29c95b346af:/tmp# ls
test.sh
컨테이너 조작의 변경확인 (docker container diff)
컨테이너 안에서 어떤 조작을 했거나 이미지로부터 생성되었을 때 달라진 점을 확인하기 위한 명령어.
$ docker container diff webserver
C /run
A /run/nginx.pid
C /tmp
A /tmp/test.sh
C /root
A /root/.bash_history
C /var
C /var/cache
C /var/cache/nginx
A /var/cache/nginx/scgi_temp
A /var/cache/nginx/uwsgi_temp
A /var/cache/nginx/client_temp
A /var/cache/nginx/fastcgi_temp
A /var/cache/nginx/proxy_temp
C /etc
C /etc/nginx
C /etc/nginx/conf.d
C /etc/nginx/conf.d/default.conf
반응형
'CI-CD > Docker' 카테고리의 다른 글
8. Docker compose를 이용하여 Kafka Confluent 설치 (0) | 2023.04.19 |
---|---|
7. Docker Network (0) | 2023.04.19 |
5. docker image 조작 (0) | 2023.04.19 |
4. 도커에서 웹 서버 작동하기(Nginx 설치하기) (0) | 2023.04.19 |
3. Docker 기본 명령어 (0) | 2022.08.29 |