백그라운드 실행 : Detached모드
1. 옵션 -d <--detach=false>
2. 데몬 모드라고 부르며 컨테이너가 백그라운드로 실행
3. 백그라운드로 실행한 컨테이너 내에 명령어를 실행하면 실행 결과인 표준 출력이 표시되지 않는다.
실행결과를 확인하려면 #docker logs 컨테이너명을 사용한다.
4. 백그라운드 모드는 주로 web server처럼 데몬 형태로 실행을 지속할 애플리케이션에서 사용한다.
- 실습
실습 - web server를 백그라운드 모드로 실행하고 웹 데몬으로 실행을 유지하도록 컨테이너를 실행한다
[root@cent1 ~]# cd
[root@cent1 ~]# cd lab
[root@cent1 lab]# cat Dockerfile #vi Dockerfile로 만들어준 후 확인
FROM ubuntu:14.04
MAINTAINER suye <a@b.com>
RUN apt-get update
RUN apt-get install -y nginx
RUN echo "\ndaemon off;" >> /etc/nginx/nginx.conf
RUN chown -R www-data:www-data /var/lib/nginx
VOLUME ["/data", "/etc/nginx/site-enabled", "/var/log/nginx"]
WORKDIR /etc/nginx
CMD ["nginx"]
EXPOSE 80
EXPOSE 443
[root@cent1 lab]# docker build -t testimage:1.1 .
Sending build context to Docker daemon 2.048 kB
......................
웹서버를 백그라운드로 실행하여 데몬으로 실행 유지
[root@cent1 lab]# docker run --name test-nginx -d -p 9000:80 -v /root/data:/data testimage:1.1
18722f428456673673dfb66f631808227502a8423775f801936d07407ccc5e66
웹브라우저에서 접속 테스트 => localhost:9000으로 접속
컨테이너의 환경변수 설정
1. docker run --env=[변수], -e : 환경변수 설정
2. docker run --env-file=[파일명] : 환경변수를 파일로 설정 (파일의 위치: 호스트서버)
3. Dockerfile의 ENV
ENV는 환경 변수를 설정한다. ENV로 설정한 환경 변수는 RUN, CMD, ENTRYPOINT에 적용된다.
- 실습
[root@cent1 ~]# docker run -it -e "VAR1=100" -e "VAR2=200" --name testcon1 ubuntu:14.04 /bin/bash
root@2b4e3b85a57e:# echo $VAR1
100
root@2b4e3b85a57e:# echo $VAR2
200
root@2b4e3b85a57e:# exit
exit
[root@cent1 ~]# docker rm testcon1
testcon1
[root@cent1 ~]# vi env.txt
[root@cent1 ~]# cat env.txt
a=100
b=200
c=300
[root@cent1 ~]# docker run -it --env-file env.txt --name testcon1 ubuntu:14.04
root@e3647eeb7263:/# echo $a
100
root@e3647eeb7263:/# echo $b
200
root@e3647eeb7263:/# echo $c
300
root@e3647eeb7263:/# exit
exit
[root@cent1 ~]# docker rm -f testcon1
testcon1
컨테이너의 작업디렉토리 지정
1. docker run --workdir=디렉토리명
2. docker run -w
컨테이너의 사용자 이름 지정
1. docker run --user=사용자명
2. docker run -u
#Dockerfile에 사용자 codmeonkyu계정을 등록하는 RUN 구성
[root@cent1 ~]# cd
[root@cent1 ~]# mkdir lab23
[root@cent1 ~]# cd lab23
[root@cent1 lab23]# cat Dockerfile
FROM ubuntu:14.04
RUN useradd -u 10000 -d /home/codemonkyu -m -s /bin/bash codemonkyu
새 이미지 만들기
[root@cent1 lab23]# docker build -t testimage:1.1 .
Sending build context to Docker daemon 2.048 kB
..............
Successfully built b91bfa7b93af
#작업 디렉토리 지정 (-w), 사용자 지정(-u)로 컨테이너 실행 시 사용자 hewon이 없어서 에러 난다.
[root@cent1 lab23]# docker run -it -w /labdir -u hewon --name testcon1 testimage:1.1
/usr/bin/docker-current: Error response from daemon: linux spec user: unable to find user hewon: no matching entries in passwd file.
작업디렉토리 지정 (-w), 사용자 지정(-u) 로 컨테이너 실행 사용자 codemonkyu로 실행한다.
[root@cent1 lab23]# docker run -it -w /labdir -u codemonkyu --name testcon1 testimage:1.1
#labdir 디렉터리에 위치해 있다.
suye@f9dc4cf6c309:/labdir$ pwd
/labdir
suye@f9dc4cf6c309:/labdir$ id
uid=10000(suye) gid=10000(suye) groups=10000(suye)
suye@f9dc4cf6c309:/labdir$ grep codemonkyu /etc/passwd
suye:x:10000:10000::/home/suye:/bin/bash
suye@f9dc4cf6c309:/labdir$ exit
exit
[root@cent1 lab23]# docker rm -f testcon1
testcon1
docker system 명령어
1. docker system df 도커 디스크 사용량 표시
2. docker system events 서버에서 실시간 이벤트 가져오기
3. docker system info 시스템 전체 정보 표시
4. docker system prune 사용하지 않는 데이터 제거
- docker system events
[root@cent1 ~]# docker system df
TYPE TOTAL ACTIVE SIZE RECLAIMABLE
Images 4 2 632.1MB 490.6MB (77%)
Containers 4 3 0B 0B
Local Volumes 2 1 0B 0B
Build Cache 0 0 0B 0B
- docker system info
[root@cent1 ~]# docker system info 또는 docker info
Containers: 4
Running: 3
Paused: 0
Stopped: 1
Images: 4
...................
CPUs: 2
Total Memory: 1.795 GiB
Name: cent1.foosys.com
................
- docker system prune
1. 사용하지 않는 모든 컨테이너, 네트워크, 이미지(dangling 및 unreferenced) 및 선택적으로 볼륨을 제거한다.
2. --all , -a: 모든 이미지 제거 (cache이미지까지 모두 제거)
3. --filter: 필터링 기능 사용 ('label=<key>=<value>')
4. --force , -f: 확인 메시지지 없이 강제 제거
1. docker volume prune: 컨테이너에서 사용하지 않는 볼륨 모두 삭제
2. docker network prune: 컨테이너에서 사용하지 않는 네트워크 모두 삭제
3. docker container prune: 사용하지 않는 컨테이너 모두 삭제
4. docker image prune: 사용하지 않는 이미지 모두 삭제
[root@cent1 ~]# docker system prune
WARNING! This will remove:
- all stopped containers
- all volumes not used by at least one container
- all networks not used by at least one container
- all dangling images
Are you sure you want to continue? [y/N] y
컨테이너의 자원 사용량 모니터링
#docker stats
#docker top
#docker system df
1. docker container stats <컨테이너 이름,ID> 또는 docker stats : 실시간 모니터링 stats 명령어는 실행 중인 모든 컨테이너의 CPU 사용량, 메모리 제한 및 사용량, 네트워크 I/O, 블록 I/O(하드웨어 입출력) 정보를 출력한다.
2. docker stats –no-stream : 실시간 모니터링이 아닌 한번만 출력
3. docker top <컨테이너 이름, ID> <옵션>: ps명령과 비슷하고 옵션도 비슷하다.
4. docker system df : 사용중인 이미지, 컨테이너, 로컬 볼륨의 총 개수 및 사용 중인 개수, 크기, 삭제함으로써 확보 가능한 공간 사이즈
-명령어 특수문자-
댓글