중앙 OS 7에서 Docker의 기본 작업 중 하나 확인

8494 단어 Docker

중앙 OS 7에서 Docker의 기본 작업 중 하나 확인


쉬었기 때문에 Docker의 기본 동작을 다시 확인합니다.Vagrant VirtualBox에서
CentOS 7.0의 가상 환경을 시작하고 Docker를 이동하면서 확인합니다.
전제 조건
  • 다음 작업은 MBP 터미널에서 수행
  • 인터넷 연결 가능
  • vagrant이install
  • Vagrant 기반 환경 준비


    비디오 설정


    적당한 디렉터리를 만들고 bento에서 센터 OS 7.0의 box를 가져옵니다
    설치할 Vagrantfile을 배치합니다.
    $ mkdir dockerenv && cd dockerenv
    $ vagrant init
    
    init 설정된 템플릿은 편집기에서 다음과 같이 편집됩니다.
    Vagrantfile
    # -*- mode: ruby -*-
    # vi: set ft=ruby :
    
    Vagrant.require_version ">= 1.6.3", "< 1.9.9"
    VAGRANTFILE_API_VERSION = "2"
    
    Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
    
      config.vm.boot_timeout = 60
      config.vm.box = "centos-7.0"
      config.vm.box_url = "http://opscode-vm-bento.s3.amazonaws.com/vagrant/virtualbox/opscode_centos-7.0_chef-provisionerless.box"
      config.vm.hostname = "docker-centos7-01"
      config.vm.network "forwarded_port", guest: 80, host: 8888
    
    end
    

    Docker 설치


    가상 환경을 만들고 docker를 설치합니다.
    $ vagrant up
    $ vagrant ssh
    $ sudo yum install docker
    

    Docker 활용


    앞으로의 작업은vagrant가 시작하는 가상 라운드에서 진행됩니다.

    Docker 시작


    docker를 데몬으로 시작합니다.
    $ sudo systemctl enable docker.service
    $ sudo systemctl start docker.service
    
    확인
    $ sudo systemctl status docker.service
    
    명령의 결과가 Active: active (running)인 경우 가 시작되었습니다.

    프로파일 확인


    Docker는 Go 언어로 실행되며 docker 명령을 통해 시작하는 deamon에게 지시를 보냅니다
    서버 클라이언트 방식으로 작업합니다.Go 및 각 구성 요소의 버전은 다음과 같습니다.docker version에서 확인할 수 있습니다.
    $ sudo docker version
    Client version: 1.3.2
    Client API version: 1.15
    Go version (client): go1.3.3
    Git commit (client): 39fa2fa/1.3.2
    OS/Arch (client): linux/amd64
    Server version: 1.3.2
    Server API version: 1.15
    Go version (server): go1.3.3
    Git commit (server): 39fa2fa/1.3.2
    
    또한 docker info 명령을 사용하면 용기 수량, 데이터의 저장 위치와 사이즈 등 현재 사용 상황을 확인할 수 있다.
    $ sudo docker info
    Containers: 4
    Images: 8
    Storage Driver: devicemapper
     Pool Name: docker-253:1-134297046-pool
     Pool Blocksize: 65.54 kB
     Data file: /var/lib/docker/devicemapper/devicemapper/data
     Metadata file: /var/lib/docker/devicemapper/devicemapper/metadata
     Data Space Used: 860 MB
     Data Space Total: 107.4 GB
     Metadata Space Used: 1.368 MB
     Metadata Space Total: 2.147 GB
     Library Version: 1.02.84-RHEL7 (2014-03-26)
    Execution Driver: native-0.2
    Kernel Version: 3.10.0-123.el7.x86_64
    Operating System: CentOS Linux 7 (Core)
    

    그림 가져오기


    Docker는 컨테이너 시작에 필요한 데이터를 이미지 단위로 저장합니다.
    Ubuntu 14.04 이미지는 중앙 OS 7.0에서 제공됩니다.docker pull 명령은 기본적으로 공식 레지스트리에서 이미지를 가져옵니다.
    $ sudo docker pull ubuntu:14.04
    
    확인
    다운로드가 완료된 후docker images 명령으로 다운로드한 이미지를 확인하세요.
    $ sudo docker images
    REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
    ubuntu              14.04.1             ed5a78b7b42b        2 days ago          192.7 MB
    ubuntu              trusty              ed5a78b7b42b        2 days ago          192.7 MB
    ubuntu              14.04               ed5a78b7b42b        2 days ago          192.7 MB
    
    IMAGE ID는 모두 동일하므로 동일한 이미지에 여러 TAG를 추가할 수 있습니다.

    컨테이너 시작


    용기의 시동은 docker run <オプション> <イメージ> <コマンド>에서 진행된다.
    우선 가장 간단한 echo만 운행하는 컨테이너를 가동합니다.
    $ sudo docker run -i -t -h 'first_container' --rm ubuntu:14.04 hostname && echo 'Hello Docker!'
    
    실행 결과hostname 명령의 결과로 선택한 호스트 이름이 반환되었습니다.
    first_container
    Hello Docker!
    
    주로 다음과 같다.자세한 내용은 확인하십시오man docker-run.
    옵션
    설명
    -a, --attach
    부팅된 컨테이너의 컨트롤러를 호스트의 컨트롤러로 출력합니다.
    -d, --detach
    백스테이지에서 컨테이너를 가동하다.
    -h, --hostname
    부팅된 용기에 설정된 호스트 이름을 지정합니다.
    -i, --interactive
    attach가 없어도 표준 출력을 열 수 있습니다.
    -m, --memory
    메모리 사용량을 제한하다.ex.)-m 200m면 최대 200MB.
    --name
    관리 이름을 설정합니다.ex.) --name 'my_server'
    -p, --publish
    포트 전달 설정.ex.) 컨테이너의 포트 80을 -p808:80으로 지정하여 호스트의 8080에 연결합니다.
    --rm
    용기 실행이 끝날 때 용기를 삭제합니다.
    -t, --tty
    컨테이너의 표준을attach에서tty로 출력합니다.주로 -i와 함께 사용합니다.
    -v, --volume
    마운트를 설정합니다.호스트의 특정 디렉터리를 용기에서 읽으려고 할 때 주로 사용됩니다.
    컨테이너 내의 환경 변수 또는 작업 디렉토리(기본값/)를 설정할 수도 있습니다.docker run 옵션을 사용하여 설정할 수 있습니다.

    용기 내부에서 bash 실행하기


    보통 이렇게 하지는 않지만, 여기는 bash를 예로 들어 컨테이너 안으로 들어간다
    거기서 웹 서버를 만들어 보세요.
    절차.
  • 컨테이너에서 참조하는 파일을 모 호스트에 설정합니다.
  • bash 컨테이너 부팅
  • 컨테이너 내에서 웹 서버를 시작하고 브라우저에서 확인합니다.
  • 호스트에서 컨테이너에서 참조하는 파일 설정하기

    $ mkdir /tmp/docker
    $ echo 'Test Server running inside a container.' > /tmp/docker/test.txt
    

    컨테이너 시작

    -v 선택적으로 상위 호스트에 마운트를 지정하고-p 컨테이너의 포트 8080을 상위 포트의 80에 연결합니다.
    $ sudo docker run --rm -ti -v /tmp/docker:/opt -p 80:8080 ubuntu:14.04 /bin/bash
    

    컨테이너 내에서 WebServer를 시작하고 브라우저를 통해 확인


    시동이 잘 걸리면 컨테이너 안의 터미널이 루트에서 시작됩니다.
    따라서 루비를 사용하여 간이 웹 서버를 시작합니다.
    참조: 온라인 웹 서버를 수집해 보았습니다.
    우선 루비를 설치합니다.
    # sudo apt-get install ruby -y
    
    그런 다음 쓰기 도구를 사용하여 웹 서버를 시작합니다.
    # ruby -run -e httpd . -p 8080
    [2014-12-31 10:02:35] INFO  WEBrick 1.3.1
    [2014-12-31 10:02:35] INFO  ruby 1.9.3 (2013-11-22) [x86_64-linux]
    [2014-12-31 10:02:35] WARN  TCPServer Error: Address already in use - bind(2)
    [2014-12-31 10:02:35] INFO  WEBrick::HTTPServer#start: pid=2651 port=8080
    
    그럼 브라우저를 시작해서 확인해 보세요.아래 그림처럼 보이면 성공입니다.
    http://localhost:8888/opt/test.txt
    * Vagrantfile이 VM의 80을 8888로 전달했기 때문에 포트 8888을 지정합니다.

    총결산

  • Docker는 서버 클라이언트 방식입니다.docker 명령을 사용하여 서버에 명령을 보냅니다.
  • Docker는 이미지를 기반으로 컨테이너를 시작합니다.
  • Docker의 이미지는registry에서pull/push로 나올 수 있다.
  • 공식registry는https://registry.hub.docker.com/
  • 이미지에 레이블(여러 개)을 추가할 수 있습니다.
  • 명령을 사용하여 용기를 시작합니다.
  • 마운트docker run
  • 포트 전달 -v <親ホストのディレクトリ>:<コンテナ内ディレクトリ>
  • 좋은 웹페이지 즐겨찾기