English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
docker basic concept
Docker는 개소스 애플리케이션 컨테이너 엔진으로, 개발자가 애플리케이션과 의존성 패키지를 이동 가능한 컨테이너에打包하고, 어떤流行的 Linux 머신에도 배포할 수 있게 합니다.
Docker는 프로그램 개발, 테스트, 배포 및 배치 과정을 재정의한 오픈 플랫폼입니다. Docker는 한 번 만들어서 어디서든 실행할 수 있다는 Docker의 ‘Build once, Run anywhere’을 의미합니다.
create image
create image methods are three kinds:
existing container based on
로컬 템플릿을 기반으로 가져오기
dockerfile을 기반으로
existing container based on
mainly using docker commit command, command format:
docker commit [OPTIONS] CONTAINER [REPOSITORY[:tag]],주로 다음과 같습니다:
-a ,--author="" 작성자 정보
-m,--message="" 컨테이너 제출 메시지
-p,--pause=true 컨테이너 실행을 중지
예를 들어:
# docker run -it centos /bin/bash [root@d7e7ac1cbca2 /]# touch test [root@d7e7ac1cbca2 /]# ls anaconda-post.log bin dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys test tmp usr var # docker commit -m "add a file" -a "kafeikele" de6 centos_copy 5d318afa9e6f7fdb755db97e29e3860b752f24b0b50e6bfa0b7e457450802c0e # docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE centos_copy latest 5d318afa9e6f 13 초 전 196.7 MB
로컬 템플릿을 기반으로 가져오기
openVZ에서 제공하는 템플릿을 사용하여 생성하는 것이 좋습니다
https://openvz.org/다운로드/templates/precreated #cat centos-7-x86_64-minimal.tar.gz.crdownload | docker import - centos:latest
이미지 저장 및 가져오기
# docker images centos 7.1.1503 47a77536ad4c 8 주 전 212.1 MB # docker save -o centos_7.1.tar centos:7.1.1503 # docker load --input centos_7.1.tar # docker load < centos_7.1.tar
dockerfile을 기반으로
이후의 내용은 상세히 설명됩니다
첫 번째 docker 컨테이너 실행
# docker run centos echo "hello world" 로컬에서 'centos:latest' 이미지를 찾을 수 없습니다 latest: centos에서 pull 중 47d44cb6f252: 다운로드 완료 168a69b62202: 다운로드 완료 812e9d9d677f: pull 완료 4234bfdd88f8: 다운로드 완료 ce20c473cd8a: pull 완료 centos:latest: pull하는 이미지가 확인되었습니다. 중요: 이미지 확인은 기술 프리뷰 기능이며 신뢰하지 말아야 합니다. security. Digest: sha256:3aaab9f1297db9b013063c781cfe901e2aa6e7e334c1d1f4df12f25ce356f2e5 Status: centos:latest의 새로운 이미지를 다운로드했습니다 hello world
명령어 설명:
docker run: 표준 컨테이너 시작 명령어
centos: 이미지 이름, 기본적으로 latest입니다
echo와 그 이후의 내용: 컨테이너가 시작된 후 실행할 명령어
상호작용 컨테이너를 시작합니다
docker run -it centos /bin/bash
*주의:-t를 사용하면 컨테이너 내에 가상 터미널이나 터미널을 지정할 수 있습니다.-i를 사용하면 컨테이너 내의 STDIN에 상호작용할 수 있습니다.
docker 컨테이너를 서비스 방식으로 시작하다
실제로 테스트를 해보면, 첫 번째 “hello world” 컨테이너가 echo 명령어를 실행한 후 종료되었고, 두 번째 상호작용 컨테이너는 사용자가 현재 컨테이너의 bash를 탈출하면 컨테이너도 종료되었음을 발견했을 것입니다. 이는 서비스가 장기적으로 실행되는 요구사항을 만족시키지 않으므로, docker run은 ‘-d' 매개변수를 사용하면 컨테이너를 데몬 프로세스 방식으로 시작할 수 있습니다.
docker run -d centos /bin/bash -c "while true; do echo Docker,hello world; sleep 2; <br>179fc7f17c358834364d23112aa26d6a9e1875b2281563720425f62a8f1b5c33
이 긴 문자열은 컨테이너 ID입니다. 이는 컨테이너의 유일한 식별자이므로, 로그를 확인하거나 컨테이너를 중지하거나 제거하는 등의 작업을 수행할 수 있습니다.
dock logs 179fc7f17c358834364d
그렇다면 왜死循环을 사용하는 것인가요?
이유는死循环이 아니라면, 한 번 출력 후 컨테이너 내의 프로세스가 종료된다. 컨테이너의 유일한 프로세스가 모두 종료되면 컨테이너가 중지됩니다. 따라서 컨테이너에서 특정 서비스를 실행하려면, 이 서비스 자체도 컨테이너에서 데몬 프로세스 방식으로 실행되어야 합니다.
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
주요 옵션:
-d : 배경으로 컨테이너를 실행합니다.
-t : 가상 터미널을 제공합니다.
-i : 상호작용 입력을 제공합니다. 일반적으로 “-t”와 함께 사용할 경우, “-i” 옵션을 선택하면 컨테이너가 시작된 후에는 종료할 수 없습니다.
-v : 컨테이너에 볼륨을 매핑합니다. 예: -p /data/www:/var/www/html
-p : 컨테이너의 포트를 호스트主机에 매핑하는 예: -p 8080:80
更多命令操作
# docker images 로컬에 있는 모든 이미지를 나열합니다 # docker search centos 기본 이미지 저장소에서 이미지를 검색합니다 NAME DESCRIPTION STARS OFFICIAL AUTOMATED centos CentOS의 공식 빌드입니다. 2767 [OK] ansible/centos7-ansible CentOS에 Ansible을 설치합니다7 90 [OK] jdeathe/centos-ssh CentOS-6 6.8 x86_64 / CentOS-7 7.2.1511 x8... 42 [OK] jdeathe/centos-ssh-apache-php CentOS-6 6.8 x86_64 - Apache / PHP / PHP M... 21 [OK] nimmis/java-centos 이는 CentOS의 docker 이미지입니다 7 with dif... 17 [OK] consol/centos-xfce-vnc Centos 컨테이너와 "headless" VNC 세션... 14 [OK] #docker pull centos 로컬에 이미지를 다운로드합니다 #docker create -it ubuntu:latest 컨테이너를 생성합니다 로컬에서 'ubuntu:latest' 이미지를 찾을 수 없습니다 latest: ubuntu에서 가져오는 중 58488e45273c: 다운로드 완료 25810b66099e: 다운로드 완료 6571ba684f54: 다운로드 완료 6ed49a73d8f0: 다운로드 완료 c53777cbfc31: 다운로드 완료 56465e1e45d2: 다운로드 완료 Digest: sha256:312986132029d622ae65423ca25d3a3cf4510de25c47b05b6819d61e2e2b5420 Status: ubuntu:latest의 새로운 이미지를 다운로드했습니다 1330233e50aba7fca99e5914bd28dd89321bc86ec35fb36b4775d3424337c190 docker create 명령으로 생성된 컨테이너는 중지 상태이며, docker start를 사용하여 시작해야 합니다 # docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 1330233e50ab ubuntu:latest "/bin/bash" 얼마 전에 happy_engelbart docker run 명령어는 docker create 명령어를 먼저 실행한 후 docker start 명령어를 실행하는 것과 동일합니다 # docker run ubuntu /bin/echo "hello world" hello world
컨테이너에 접속합니다
제1법:
# docker attach a54615a88787 뒤에 컨테이너 이름이나 ID를 따릅니다. 나갈 때 docker 컨테이너도 나간다. 흔히 사용되지 않습니다
제2법:
# docker exec -it a54615a88787 /bin/bash 은 컨테이너 이름이나 ID를 따릅니다
제3법:
yum -y install util-linux # docker inspect --format "{{.State.Pid}}" stupefied_cray 마지막 부분이 컨테이너 이름입니다 4899 # nsenter --target 4899 --mount --uts --ipc --net --pid
스크립트
#!/bin/bash CNAME=$1 CPID=$(docker inspect --format "{{.State.Pid}}" $CNAME) nsenter --target $CPID --mount --uts --ipc --net –pid
위에 설명된 것은 편집자가 여러분에게 소개한 Docker 기본 명령어 설명입니다. 여러분에게 도움이 되길 바랍니다. 어떤 질문이나 의문이 있으면, 편집자에게 댓글을 남겨 주시면, 편집자가 즉시 여러분에게 답변을 드리겠습니다. 또한, 여러분이 울부짖는 교본 웹사이트에 대한 지지에 감사드립니다!
명시: 본문은 인터넷에서 가져왔으며, 저작권자에게 소유되며, 인터넷 사용자가 자발적으로 기여하고 자신의 주소를 업로드한 것이며, 웹사이트는 소유권을 가지지 않으며, 인공 편집을하지 않았으며, 또한 관련 법적 책임을 부담하지 않습니다. 저작권 침해가 의심되는 내용이 있다면, please notice#w 이메일로 보내 주시기 바랍니다.3codebox.com(댓글을 달 때는 #을 @으로 변경하여 신고해 주시고, 관련 증거를 제공해 주시면, 사이트가 즉시 저작권 침해 내용을 삭제할 것입니다。)