프로그램에서 도커 컨테이너를 호출하는 방법
1. Docker 컨테이너 시작
[root@localhost ~]# docker run -i -t Ubuntu /bin/bash
이미지를 찾을 수 없습니다. ubuntu' 로컬로
Ubuntu 저장소 가져오기
04c5d3b7b065: 다운로드 완료
511136ea3c5a: 다운로드 완료
c7b7c6419568: 다운로드 완료
70c8faa62a44: 다운로드 완료
d735006ad9c1: 다운로드 완료
상태: ubuntu용 최신 이미지 다운로드됨: 최신
참고:
-i: 컨테이너에서 STDIN 열기
-t: 컨테이너에 pseudo-tty 터미널 할당
위에서 볼 수 있듯이 먼저 Docker는 우분투 이미지가 이미지가 로컬에서 발견되지 않으면 Docker는 공식
Docker Hub Registry로 이동하여 Docker Hub에서 이미지를 사용할 수 있는지 확인합니다.
Docker는 이미지를 찾으면 이미지를 다운로드하여 로컬 호스트에 저장합니다.
그런 다음 Docker는 파일 시스템 내부에 이 이미지를 사용하여 새 컨테이너를 만듭니다. 컨테이너에는 자체 네트워크, IP 주소 및 호스트와 통신하는 데 사용되는 브리지 네트워크 인터페이스가 있습니다. 마지막으로 Docker에게 새 컨테이너에서 실행할 명령을 알려줍니다.
컨테이너가 생성되면 Docker는 컨테이너에서 /bin/bash 명령을 실행합니다. 이때 컨테이너에서 쉘을 볼 수 있습니다
root@8c342c0c275c:/#
참고: 8c342c0c275c는 컨테이너의 ID를 나타냅니다
2. 컨테이너
컨테이너의 호스트 이름 보기
root@8c342c0c275c:/# 호스트 이름
8c342c0c275c
컨테이너의 호스트 이름은 컨테이너의 ID입니다.
호스트의 호스트 파일 보기
root@8c342c0c275c:/# cat /etc/hosts
172.17.0.2 8c342c0c275c
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
127.0.0.1 localhost
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
Docker가 있는 것을 볼 수 있습니다 컨테이너 호스트 구성 항목에 IP 주소를 추가했습니다.
컨테이너의 IP 주소 보기
root@8c342c0c275c:/# ip a
1: lo: "LOOPBACK, UP, LOWER_UP" mtu 65536 qdisc noqueue 상태 UNKNOWN 그룹 기본값
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/ 8 범위 호스트 lo
valid_lft 영원히 favorite_lft 영원히
inet6::1/128 범위 호스트
valid_lft 영원히_lft 영원히
4: eth0 : "BROADCAST, UP, LOWER_UP" mtu 1500 qdisc pfifo_fast 상태 UP 그룹 기본 qlen 1000
link/ether 02:42:ac:11:00:02 brd ff:ff:ff:ff:ff: ff
inet 172.17.0.2/16 범위 전역 eth0
valid_lft 영원히 우선_lft 영원히
inet6 fe80::42:acff:fe11:2/64 범위 링크
valid_lft 영원히 favorite_lft 영원히
컨테이너에서 실행 중인 프로세스 보기
root@8c342c0c275c:/# ps -aux
사용자 PID CPU MEM VSZ RSS TTY STAT 시작 시간 명령
root 1 0.0 0.1 18168 1976? SS 09:38 0:00 /bin/bash
루트 19 0.0 0.0 15568 1144? R 09:55 0:00 ps -aux
컨테이너에 패키지 설치
root@8c342c0c275c:/# apt-get update amp apt-get install vim
trusty-updates InRelease 무시
trusty-updates InRelease 무시
trusty-security InRelease 무시
trusty Release.gpg 누르기
Get: 1 trusty-updates Release.gpg[933 B]
Get: 2 trusty-security Release.gpg[933 B]
Trusty Release 히트
받기: 3개의 trusty-updates 릴리스[62.0kB]
받기: 4개의 trusty-security 릴리스[62.0kB]
받기: 5개의 trusty/main 소스[1335kB] <
/p>
Get:신뢰할 수 있는/제한된 소스 6개 [5335 B]
Get: 신뢰할 수 있는/유니버스 소스 7개 [7926 kB]
Get: 신뢰할 수 있는/기본 amd64 패키지 8개 [1743 kB]
Get: 9개의 신뢰할 수 있는/제한된 amd64 패키지 [16.0 kB]
Get: 10개의 신뢰할 수 있는/유니버스 amd64 패키지 [7589 kB]
Get :11개의 trusty-updates/주 소스 [193 kB]
Get:12개의 trusty-updates/제한된 소스 [1874 B]
Get:13개의 trusty-updates/유니버스 소스 [119 kB]
받기: 14 trusty-updates/main amd64 패키지 [493 kB]
받기: 15 trusty-updates/restricted amd64 패키지 [14.8 kB]
Get: 16 trusty-updates/universe amd64 패키지 [298 kB]
Get: 17 trusty-security/주 소스 [70.1 kB]
Get: 18 trusty-security/restricted 소스 [1874 B]
Get:19 trusty-security/universe 소스 [19.1 kB]
Get:20 trusty-security/main amd64 패키지 [229 kB]
Get: 21 trusty-security/restricted amd64 패키지 [14.8 kB]
Get: 22 trusty-security/universe amd64 패키지 [98.1 kB]
41초 안에 20.3 MB를 가져옴 (490 kB/s)
패키지 목록을 읽는 중입니다. . 완료
패키지 목록을 읽었습니다. . 완료
의존성 트리 구축
상태 정보를 읽는 중.. .
완료
다음 추가 패키지가 설치됩니다:
libgpm2 libpython2.7 libpython2.7-minimal libpython2.7-stdlib vim-runtime
추천 패키지:
gpm ctags vim-doc vim-scripts
다음 새 패키지가 설치됩니다:
libgpm2 libpython2.7 libpython2.7-minimal libpython2.7- stdlib vim
vim-runtime
업그레이드 0개, 새로 설치 6개, 제거할 0개, 업그레이드하지 않은 2개.
9083kB의 아카이브가 필요합니다.
이 작업 후에는 42.9MB의 추가 디스크 공간이 사용됩니다.
계속하시겠습니까? [Y/n] y
Get:1 /ubuntu/ trusty/main libgpm2 amd64 1.20.4-6.1 [16.5 kB]
Get:2 /ubuntu/ trusty/main libpython2 .7-최소 amd64 2.7.6-8 [307 kB]
Get: 3 /ubuntu/ trusty/main libpython2.7-stdlib amd64 2.7.6-8 [1872 kB]
가져오기: 4 /ubuntu/ trusty/main libpython2.7 amd64 2.7.6-8 [1044 kB]
가져오기: 5 /ubuntu/ trusty/main vim-runtime all 2: 7.4.052- 1ubuntu3 [4888 kB]
가져오기: 6 /ubuntu/ trusty/main vim amd64 2:7.4.052-1ubuntu3 [956 kB]
51초 안에 9083 kB를 가져옴(175 kB/ s)
이전에 선택하지 않은 패키지 libgpm2 선택: amd64.
(데이터베이스를 읽는 중... 현재 설치된 파일 및 디렉터리 11527개.)
압축 풀기 준비 중. . . /libgpm2_1.20.4-6.1_amd64.deb . . .
libgpm2 압축 풀기: amd64(1.20.4-6.1). . .
이전에 선택하지 않은 패키지 libpython2.7-minimal: amd64를 선택합니다.
압축 풀기 준비 중입니다. . .
/libpython2.7-minimal_2.7.6-8_amd64.deb . . .
libpython2.7-minimal 압축 풀기: amd64(2.7.6-8). . .
이전에 선택하지 않은 패키지 libpython2.7-stdlib:amd64를 선택합니다.
압축 풀기 준비 중입니다. . . /libpython2.7-stdlib_2.7.6-8_amd64.deb. . .
libpython2.7-stdlib 압축 풀기: amd64(2.7.6-8). . .
이전에 선택하지 않은 패키지 libpython2.7: amd64를 선택합니다.
압축 풀기 준비 중입니다. . . /libpython2.7_2.7.6-8_amd64.deb . . .
libpython2.7 압축 풀기: amd64(2.7.6-8). . .
이전에 선택하지 않은 vim-runtime 패키지를 선택하는 중입니다.
압축 풀기 준비 중입니다. . . /vim-runtime_23a7.4.052-1ubuntu3_all.deb . . .
'vim-runtime을 통해 /usr/share/vim/vim74/doc/help.txt를 /usr/share/vim/vim74/doc/help.txt.vim-tiny로 전환' 추가'
'vim-runtime을 통해 /usr/share/vim/vim74/doc/tags.vim-tiny로 /usr/share/vim/vim74/doc/tags 전환' 추가'
vim-runtime(2:7.4.052-1ubuntu3) 압축 풀기. . .
이전에 선택하지 않은 vim 패키지를 선택합니다.
압축 풀기 준비 중입니다. . . /vim_23a7.4.052-1ubuntu3_amd64.deb. . .
vim(2:7.4.052-1ubuntu3) 압축을 푸는 중입니다. . .
libgpm2 설정: amd64(1.20.4-6.1). . .
libpython2.7-최소 설정: amd64(2.7.6-8). . .
libpython2.7-stdlib 설정: amd64(2.7.6-8). . .
libpython2.7 설정: amd64(2.7.6-8). . .
vim-runtime 설정(2:7.4.052-1ubuntu3). . .
/usr/share/vim/addons/doc 처리 중
vim(2:7.4.052-1ubuntu3) 설정 중. . .
update-alternatives: /usr/bin/vim.basic을 사용하여 자동 모드에서 /usr/bin/vim(vim) 제공
update-alternatives: /usr/bin 사용 /vim.basic은 자동 모드에서 /usr/bin/vimdiff(vimdiff)를 제공합니다.
update-alternatives: /usr/bin/vim.basic을 사용하여 자동 모드에서 /usr/bin/vim(rvim)을 제공합니다. 자동 모드
update-alternatives: /usr/bin/vim.basic을 사용하여 자동 모드에서 /usr/bin/rview(rview) 제공
update-alternatives: /usr 사용 /bin/vim.basic 자동 모드에서 /usr/bin/vi (vi) 제공
update-alternatives: /usr/bin/vim.basic을 사용하여 /usr/bin/view 제공(보기 ) 자동 모드에서
update-alternatives: 자동 모드에서 /usr/bin/ex를 제공하기 위해 /usr/bin/vim.basic 사용
update-alternatives: 사용 /usr/bin/vim.basic은 자동 모드에서 /usr/bin/editor(편집기)를 제공합니다
libc-bin(2.19-0ubuntu6.4)에 대한 처리 트리거. . .
컨테이너 종료
root@8c342c0c275c:/# 종료
exit
exit를 입력하면 컨테이너 작동이 중지됩니다. 컨테이너는 지정된 /bin/bash 명령이 실행 중일 때만 실행됩니다. 컨테이너가 종료되면 /bin/bash 명령이 종료되고 컨테이너가 중지됩니다.
시스템의 컨테이너 목록 보기
[root@localhost ~]# docker ps -a
컨테이너 ID 이미지 명령 생성 상태 포트 이름
p>8c342c0c275c ubuntu: 최신 "/bin/bash" 26분 전 종료(0) 5분 전 Sharp_bohr
8c342c0c275c: 컨테이너의 ID를 나타냅니다.
ubuntu : 최신: 생성된 컨테이너 이미지
“/bin/bash” :컨테이너가 마지막으로 실행한 명령
26분 전:생성 시간
종료(0 ) 5분 :컨테이너 종료 상태
sharp_bohr : 컨테이너 이름
Docker에서 컨테이너 이름 지정
Docker가 자동으로 컨테이너에 대한 임의의 이름을 생성합니다. 컨테이너를 만들 때. 따라서 컨테이너를 생성할 때 컨테이너 이름을 지정하려면 다음 명령을 사용할 수 있습니다:
[root@localhost ~]# docker run --name ovcer_the_container -i -t ubuntu /bin /bash p>
root@1ce9f640478d:/#
위 명령은 ovcer_the_container라는 컨테이너를 생성합니다. 유효한 컨테이너 이름에는 소문자 a~z, 대문자 A~Z, 숫자 0~9, 밑줄, 점, 수평선 문자만 포함될 수 있습니다.