11.Nas_1


새창 작성 수정 목록 링크 Edit G카랜다 HDD HDD HDD 게시물 주소 복사


리눅스 명령어 정리 나도한번 해보자 / 류재영

♨ 카랜더 일정 :
  • 링크

  • 첨부

  • 컨텐츠 정보

    본문

    http://longbe00.blogspot.com/2015/03/docker_98.html?m=1

    Docker 명령어 정리

    1.  사용(명령어)

    Docker의 명령은 docker run, docker push와 같이 docker <명령형식입니다그리고 항상 root 권한으로 실행해야 합니다. (docker계정에 대한 권한 설정을 했다면 sudo를 제외할 수 있다)


    먼저 Docker의 기본적인 사용법을 알아보기 위해 Docker Hub에서 제공하는 이미지를 받아서 실행해보겠습니다.

    아래의 명령어 순서대로 실행을 하여 실제 image생성 및 모든 기능들을 테스트 할 수 있다.

    1.1    search

    Docker Docker Hub14를 통해 이미지를 공유하는 생태계가 구축되어 있습니다. search 명령으로 Docker Hub에서 이미지를 검색할 수 있습니다.

    $ sudo docker search ubuntu

    NAME                          DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED

    ubuntu                        Official Ubuntu base image                      383

    stackbrew/ubuntu              Official Ubuntu base image                      40

    crashsystems/gitlab-docker    A trusted, regularly updated build of GitL...   19                   [OK]

    dockerfile/ubuntu             Trusted Ubuntu (http://www.ubuntu.com/) Bu...   15                   [OK]

    ubuntu-upstart                Upstart is an event-based replacement for ...   7

    cmfatih/phantomjs             PhantomJS [ phantomjs 1.9.7, casperjs 1.1....   5                    [OK]

    dockerfile/ubuntu-desktop     Trusted Ubuntu Desktop (LXDE) (http://lxde...   5                    [OK]

    lukasz/docker-scala           Dockerfile for installing Scala 2.10.3, Ja...   5                    [OK]

    litaio/ruby                   Ubuntu 14.04 with Ruby 2.1.2 compiled from...   5                    [OK]

    엄청나게 많은 이미지가 검색될 것입니다보통 ubuntu, centos, redis  OS나 프로그램 이름을 가진 이미지가 공식 이미지입니다나머지는 사용자들이 만들어 공개한 이미지입니다.

    Docker Hub에서 이미지를 검색한 뒤 해당 이미지의 Tags 탭을 보면 현재 사용할 수 있는 이미지의 버전을 볼 수 있습니다.

    1.2    pull

    우분투 이미지를 받아보겠습니다.

    $ sudo docker pull ubuntu:latest


    docker pull <이미지 이름>:<태그형식입니다. latest를 설정하면 최신 버전을 받습니다. ubuntu:14.04, ubuntu:12.10처럼 태그를 지정해 줄 수도 있습니다.

    이미지 이름에서 pyrasis/ubuntu처럼 / 앞에 사용자명을 지정하면 Docker Hub에서 해당 사용자가 올린 이미지를 받습니다공식 이미지는 사용자명이 붙지 않습니다.

    ________________________________________

    참고

    호스트에 설치된 리눅스 배포판과 Docker 이미지의 배포판의 종류가 달라도 됩니다. CentOS 위에서 우분투 컨테이너를 실행할 수 있습니다.

    ________________________________________

    1.3    images

    이제 받은 이미지의 목록을 출력해보겠습니다.

    $ sudo docker images

    REPOSITORY          TAG                 IMAGE ID            CREATED                  VIRTUAL SIZE

    ubuntu              latest              e54ca5efa2e9        Less than a second ago   276.1 MB

    docker images는 모든 이미지 목록을 출력합니다. docker images ubuntu처럼 이미지 이름을 설정하면 이름은 같지만 태그가 다른 이미지가 출력됩니다.

    1.4    run

    이미지를 컨테이너로 생성한 뒤 Bash Shell을 실행해보겠습니다.

    $ sudo docker run -i -t --name hello ubuntu /bin/bash

    root@6338ce52d07c:/#

    docker run <옵션> <이미지 이름> <실행할 파일형식입니다여기서는 ubunbu 이미지를 컨테이너로 생성한 뒤 ubuntu 이미지 안의/bin/bash를 실행합니다이미지 이름 대신 이미지 ID를 사용해도 됩니다.

    -i(interactive), -t(Pseudo-tty) 옵션을 사용하면 실행된 Bash Shell에 입력 및 출력을 할 수 있습니다그리고 --name 옵션으로 컨테이너의 이름을 지정할 수 있습니다이름을 지정하지 않으면 Docker가 자동으로 이름을 생성하여 지정합니다.

    이제 호스트 OS와 완전히 격리된 공간이 생성되었습니다. cd, ls 명령으로 컨테이너 내부를 한번 둘러봅니다호스트 OS와는 다르다는 것을 알 수 있습니다. exit를 입력하여 Bash Shell에서 빠져나옵니다우분투 이미지에서 /bin/bash 실행 파일을 직접 실행했기 때문에 여기서 빠져나오면 컨테이너가 정지(stop)됩니다.

    ________________________________________

    참고

    CentOS에서 아래와 같은 에러가 발생하면

    unable to remount sys readonly: unable to mount sys as readonly max retries reached

    /etc/sysconfig/docker 파일에서 아래와 같이 --exec-driver=lxc를 추가합니다.

    /etc/sysconfig/docker

    # /etc/sysconfig/docker

    #

    # Other arguments to pass to the docker daemon process

    # These will be parsed by the sysv initscript and appended

    # to the arguments list passed to docker -d


    other_args="--selinux-enabled --exec-driver=lxc"

    Docker 서비스를 재시작합니다.

    $ sudo service docker restart

    ________________________________________

    옵션정리

    -a, --attach=[]: 컨테이너에 표준 입력(stdin), 표준 출력(stdout), 표준 에러(stderr)를 연결합니다.

    --attach=”stdin”

    --add-host=[]: 컨테이너의 /etc/hosts에 호스트 이름과 IP 주소를 추가합니다.

    --add-host=hello:192.168.0.10

    -c, --cpu-shares=0: CPU 자원 분배 설정입니다설정의 기본 값은 1024이며 각 값은 상대적으로 적용됩니다.

    --cpu-shares=2048처럼 설정하면 기본 값 보다 두 배 많은 CPU 자원을 할당합니다.

    이 설정 값은 리눅스 커널의 cgroups에서 사용됩니다.

    --cap-add=[]: 컨테이너에서 cgroups의 특정 Capability를 사용합니다. ALL을 지정하면 모든 Capability를 사용합니다.

    --cap-add=MKNOD --cap-add=NET_ADMIN”처럼 설정합니다모든 Capability 목록은 다음 링크를 참조하기 바랍니다.

    http://linux.die.net/man/7/capabilities

    --cap-drop=[]: 컨테이너에서 cgroups의 특정 Capability를 제외합니다.

    --cidfile=””: cid 파일 경로를 설정합니다. cid 파일에는 생성된 컨테이너의 ID가 저장됩니다.

    --cpuset=””멀티코어 CPU에서 컨테이너가 실행될 코어를 설정합니다.

    --cpuset=0,1”처럼 설정하면 첫 번째두 번째 CPU 코어를 사용합니다.

    --cpuset=0-3”처럼 설정하면 첫 번째 CPU 코어부터 네 번째까지 사용합니다.

    -d, --detach=false: Detached 모드입니다보통 데몬 모드라고 부르며 컨테이너가 백그라운드로 실행됩니다.

    --device=[]: 호스트의 장치를 컨테이너에서 사용할 수 있도록 연결합니다. <호스트 장치>:<컨테이너 장치형식입니다.

    --device=/dev/sda1:/dev/sda1”처럼 설정하면 호스트의 /dev/sda1 블록 장치를 컨테이너에서도 사용할 수 있습니다.

    --dns=[]: 컨테이너에서 사용할 DNS 서버를 설정합니다.

    --dns=”8.8.8.8”

    --dns-search=[]: 컨테이너에서 사용할 DNS 검색 도메인을 설정합니다.

    --dns-search=example.com”처럼 설정하면 DNS 서버에 hello를 질의할 때 hello.example.com을 먼저를 찾습니다.

    -e, --env=[]: 컨테이너에 환경 변수를 설정합니다보통 설정 값이나 비밀번호를 전달할 때 사용합니다.

    -e MYSQL_ROOT_PASSWORD=examplepassword

    --entrypoint=””: Dockerfile ENTRYPOINT 설정을 무시하고 강제로 다른 값을 설정합니다.

    --entrypoint=”/bin/bash”

    --env-file=[]: 컨테이너에 환경 변수가 설정된 파일을 적용합니다.

    --env-file=”/etc/environment”

    --expose=[]: 컨테이너의 포트를 호스트와 연결만 하고 외부에는 노출하지 않습니다.

    --expose=”3306”

    -h, --hostname=””컨테이너의 호스트 이름을 설정합니다.

    -i, --interactive=false: 표준 입력(stdin)을 활성화하며 컨테이너와 연결(attach)되어 있지 않더라도 표준 입력을 유지합니다보통 이 옵션을 사용하여 Bash에 명령을 입력합니다.

    --link=[]: 컨테이너끼리 연결합니다. <컨테이너 이름>:<별칭형식입니다.

    --link=”db:db”

    --lxc-conf=[]: LXC 드라이버를 사용한다면 LXC 옵션을 설정할 수 있습니다.

    --lxc-conf=”lxc.cgroup.cpuset.cpus = 0,1”

    -m, --memory=””메모리 한계를 설정합니다. <숫자><단위형식이며 단위는 b, k, m, g를 사용할 수 있습니다.

    --memory=”100000b”

    --memory=”1000k”

    --memory=”128m”

    --memory=”1g”

    --name=””컨테이너에 이름을 설정합니다.

    --net=bridge컨테이너의 네트워크 모드를 설정합니다.

    bridge: Docker 네트워크 브리지에 새 네트워크를 생성합니다.

    none: 네트워크를 사용하지 않습니다.

    container:<컨테이너 이름, ID>: 다른 컨테이너의 네트워크를 함께 사용합니다.

    host: 컨테이너 안에서 호스트의 네트워크를 그대로 사용합니다호스트 네트워크를 사용하면 D-Bus를 통하여 호스트의 모든 시스템 서비스에 접근할 수 있으므로 보안에 취약해집니다.

    -P, --publish-all=false: 호스트에 연결된 컨테이너의 모든 포트를 외부에 노출합니다.

    -p, --publish=[]: 호스트에 연결된 컨테이너의 특정 포트를 외부에 노출합니다보통 웹 서버의 포트를 노출할 때 주로 사용합니다.

    <호스트 포트>:<컨테이너 포트) -p 80:80

    <IP 주소>:<호스트 포트>:<컨테이너 포트호스트에 네트워크 인터페이스가 여러 개이거나 IP 주소가 여러 개 일 때 사용합니다) -p 192.168.0.10:80:80

    <IP 주소>::<컨테이너 포트호스트 포트를 설정하지 않으면 호스트의 포트 번호가 무작위로 설정됩니다) -p 192.168.0.10::80

    <컨테이너 포트컨테이너 포트만 설정하면 호스트의 포트 번호가 무작위로 설정됩니다) -p 80

    --privileged=false: 컨테이너 안에서 호스트의 리눅스 커널 기능(Capability)을 모두 사용합니다.

    --restart=””컨테이너 안의 프로세스 종료 시 재시작 정책을 설정합니다.

    no: 프로세스가 종료되더라도 컨테이너를 재시작하지 않습니다) --restart=no

    on-failure: 프로세스의 Exit Code 0이 아닐 때만 재시작합니다재시도 횟수를 지정할 수 있습니다횟수를 지정하지 않으면 계속 재시작합니다) --restart=on-failure:10

    always: 프로세스의 Exit Code와 상관없이 재시작합니다) --restart=always

    --rm=false: 컨테이너 안의 프로세스가 종료되면 컨테이너를 자동으로 삭제합니다. -d 옵션과 함께 사용할 수 없습니다.

    --security-opt=[]: SELinux, AppArmor 옵션을 설정합니다.

    --security-opt=”label:level:TopSecret”

    --sig-proxy=true: 모든 시그널을 프로세스에 전달합니다(TTY 모드가 아닐 때도).  SIGCHLD, SIGKILL, SIGSTOP 시그널은 전달하지 않습니다.

    -t, --tty=false: TTY 모드(pseudo-TTY)를 사용합니다. Bash를 사용하려면 이 옵션을 설정해야 합니다이 옵션을 설정하지 않으면 명령을 입력할 수는 있지만 셸이 표시되지 않습니다.

    -u, --user=””컨테이너가 실행될 리눅스 사용자 계정 이름 또는 UID를 설정합니다.

    -v, --volume=[]: 데이터 볼륨을 설정입니다호스트와 공유할 디렉터리를 설정하여 파일을 컨테이너에 저장하지 않고 호스트에 바로 저장합니다호스트 디렉터리 뒤에 :ro, :rw를 붙여서 읽기 쓰기 설정을 할 수 있으며 기본 값은 :rw입니다자세한 내용은 ‘6.4 Docker 데이터 볼륨 사용하기’를 참조하기 바랍니다.

    <컨테이너 디렉터리) -v /data

    <호스트 디렉터리>:<컨테이너 디렉터리) -v /data:/data

    <호스트 디렉터리>:<컨테이너 디렉터리>:<ro, rw> ) -v /data:/data:ro

    <호스트 파일>:<컨테이너 파일) -v /var/run/docker.sock:/var/run/docker.sock



    --volumes-from=[]: 데이터 볼륨 컨테이너를 연결하며 <컨테이너 이름, ID>:<ro, rw> 형식으로 설정합니다기본적으로 읽기 쓰기 설정은 -v 옵션의 설정을 따릅니다자세한 내용은 ‘6.5 Docker 데이터 볼륨 컨테이너 사용하기’를 참조하기 바랍니다.

    --volumes-from=”hello”

    --volumes-from=hello:ro”처럼 설정하면 데이터 볼륨을 읽기 전용으로 사용합니다.

    --volumes-from=hello:rw”처럼 설정하면 데이터 볼륨에 읽기 쓰기 모두 할 수 있습니다.

    -w, --workdir=””컨테이너 안의 프로세스가 실행될 디렉터리를 설정합니다.

    --workdir=”/var/www”


    1.5    ps

    아래 명령을 입력하여 모든 컨테이너 목록을 출력합니다.

    $ sudo docker ps -a

    CONTAINER ID  IMAGE          COMMAND    CREATED        STATUS                             PORTS  NAMES

    6338ce52d07c  ubuntu:latest  /bin/bash  4 seconds ago  Exited (0) Less than a second ago         hello


    docker ps 형식입니다. -a 옵션을 사용하면 정지된 컨테이너까지 모두 출력하고옵션을 사용하지 않으면 실행되고 있는 컨테이너만 출력합니다.

    우리는 앞에서 컨테이너를 생성할 때 이름을 hello로 지정했으므로 컨테이너 목록에서도 hello로 표시됩니다.

    1.6    start

    방금 정지한 컨테이너를 다시금 시작해보겠습니다.

    $ sudo docker start hello

    docker start <컨테이너 이름형식입니다컨테이너 이름 대신 컨테이너 ID를 사용해도 됩니다.

    아래 명령을 입력하여 실행된 컨테이너 목록을 출력합니다.

    $ sudo docker ps

    CONTAINER ID  IMAGE          COMMAND    CREATED         STATUS                        PORTS  NAMES

    6338ce52d07c  ubuntu:latest  /bin/bash  15 minutes ago  Up 3 seconds                         hello

    hello 컨테이너가 시작되었습니다.

    restart

    OS 재부팅처럼 컨테이너를 재시작해보겠습니다.

    $ sudo docker restart hello

    docker restart <컨테이너 이름형식입니다컨테이너 이름 대신 컨테이너 ID를 사용해도 됩니다.

    1.7    attach

    이제 시작한 컨테이너에 접속해보겠습니다아래 명령을 실행한 뒤 엔터를 한번 더 입력하면 Bash Shell이 표시됩니다.

    $ sudo docker attach hello

    root@6338ce52d07c:/#

    docker attach <컨테이너 이름형식입니다컨테이너 이름 대신 컨테이너 ID를 사용해도 됩니다.

    우리는 /bin/bash를 실행했기 때문에 명령을 자유롭게 입력할 수 있지만, DB나 서버 어플리케이션을 실행하면 입력은 할 수 없고 출력만 보게 됩니다.

    Bash Shell에서 exit 또는 Ctrl+D를 입력하면 컨테이너가 정지됩니다여기서는 Ctrl+P, Ctrl+Q를 차례대로 입력하여 컨테이너를 정지하지 않고컨테이너에서 빠져나옵니다.

    1.8    exec

    현재 컨테이너가 /bin/bash로 실행된 상태입니다이번에는 /bin/bash를 통하지 않고 외부에서 컨테이너 안의 명령을 실행해보겠습니다.

    $ docker exec hello echo "Hello World"

    Hello World

    docker exec <컨테이너 이름> <명령> <매개 변수형식입니다컨테이너 이름 대신 컨테이너 ID를 사용해도 됩니다컨테이너가 실행되고 있는 상태에서만 사용할 수 있으며 정지된 상태에서는 사용할 수 없습니다.

    컨테이너 안의 echo 명령을 실행하고 매개 변수로 "Hello World"를 지정했기 때문에 Hello World가 출력됩니다. docker exec 명령은 이미 실행된 컨테이너에 apt-get, yum 명령으로 패키지를 설치하거나각종 데몬을 실행할 때 활용할 수 있습니다.

    1.9    stop

    이번에는 컨테이너를 정지해보겠습니다먼저 실행된 컨테이너 목록을 출력합니다.

    $ sudo docker ps

    CONTAINER ID  IMAGE         COMMAND    CREATED         STATUS                       PORTS  NAMES

    6338ce52d07c  ubuntu:latest /bin/bash  51 minutes ago  Up 2 minutes                        hello

    아래 명령으로 컨테이너를 정지합니다.

    $ sudo docker stop hello

    docker stop <컨테이너 이름형식입니다컨테이너 이름 대신 컨테이너 ID를 사용해도 됩니다.

    실행된 컨테이너 목록을 출력합니다.

    $ sudo docker ps

    CONTAINER ID  IMAGE         COMMAND    CREATED         STATUS                       P
    [ 추가 정보 ... 더보기) ]
    뷰PDF 1,2



    office view

    관련자료

    댓글목록

    등록된 댓글이 없습니다.

    목록

    새창 작성 수정 목록 링크 Edit G카랜다 HDD HDD HDD 게시물 주소 복사




    Total 1,684 / 81 Page
    [ filestation에서 디랙토리가 삭제되지 안음 해결 ]

    11q.kr 는 네이버/구글에서 검색 찾아오세요\r\n----------------------------------------------file…

    [ 림스모바일 2.6.3 검색이 되지 안되네요 (1/14일 버전 해결) ] 댓글 2

    심봉사 \r\n감사 합니다 새롭게 업데이트 하여 금일 림스모바일 2.6.3 버전 설치 하였습니다 찾기가 되지 않아 문의 드립니다 림스 모바일 홈…

    [ 배추빌더 lite 전체 업데이트 하기 ]

    배추빌더 lite 전체 업데이트 하기\r\n\r\n.Shims HomePage[https://11q.kr 홈피] .\n[이 게시물은 관리자님에 …

    [ 게시판 공유 카카오톡으로 링크 공유 하기_성공 20150109 ] 댓글 1

    >https://developers.kakao.com/docs/js카카오톡개발가이드에 접속 / 카카오톡 링크 에서1.원본 아래 소스를 게시…

    [ 시놀로지 nas 서버 접속한 ip추적 북한/중국/러시아연방 ip차단 설정하기 /ip 추적 사이트/차단리스트 ] 댓글 2

    ♠ 웹서버가 접속이 지연되고 특정ip가 지속적으로 접속 시도되어\r\n ip추척 검색하여 지도로 확인하니 중국서버에서 접속 시도하고 있습니다\r…

    [ view 페이지에서 PDF 파일 뿌려주기 ]

    홈 > 아미나빌더 > 활용팁\r\n활용팁\r\n\r\n view 페이지에서 PDF 파일 뿌려주기\r\n\r\n\r\n3하늘™ 기타 5…

    [ dsm 5.2 헤놀로지/시놀로지 5967 업데이트 사용기 ] 댓글 5

    헤놀로지/시놀로지 dsm 5967 업데이트 XPEnoboot 5.2-5644.5 DS3615xs 와 dsm 5967을 적용 가능하네요제장비에 업…

    [ vmware 스냅샷 설정값 백업 (자료구굴링 ) ]

    주) 스냅샷을 사용하면 설정 백업을 할수 있으나 용량이 2씩 증가하여 hdd 용량증가에 문제 발생\r\n 설정값에서 제외 사용중입니다 .\r\n…

    [ 이메일 스펨)발송자차단 및 서버 메일 릴레이 차단 방법??시놀로지 이상한 저의 이메일 도용 메일 발송 어디가… ] 댓글 17

    이메일 스펨)발송자차단 및 서버 메일 릴레이 차단 방법??\r\n시놀로지 이상한 저의 이메일 도용 메일 발송 어디가 문제인지 혹인좀 부탁 합니다…

    [ 자료펌)시놀로지 NAS로 워드프레스 운영 5개월… 그간의 최적화 팁 ]

    시놀로지 NAS로 워드프레스 운영 5개월… 그간의 최적화 팁\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n가 가 가 \r\n배운 게 …

    [ [TIP] CMD 명령어를 활용한 시스템 분석 – 여러가지 명령어들 ] 댓글 1

    [TIP] CMD 명령어를 활용한 시스템 분석 – 여러가지 명령어들SharedIT2016년 8월 10일7 Comments<CMD 명령어 모…

    [ showdown 설치성공 )★★★시놀, 헤놀 ds918 showdown 설정/설치 방송 vod 다운로드 설… ] 댓글 15

    showdown 설치성공 )★★★시놀, 헤놀 ds918 showdown 설정/설치 방송 vod 다운로드 설정하기아래 제작자 사이트에서showdo…

    [ 4dosgrub로 iso파일 헤놀로지 자동부팅 1번으로 하기 menu.lst 와 사용 유틸 Grub4dos+… ] 댓글 2

    헤놀로지 부팅을 usb/iso 파일로 부팅하기 입니다4dosgrub로 iso파일 헤놀로지 자동부팅 1번으로 하기첨부Grub4dos+@ Insta…

    [ u5pvr_메모리 풀 조치 해결건 /유닉스 명령어 uptime 이란 ] 댓글 2

    u5pvr_메모리 풀 조치 해결건 카페 공지내용 입니다.해결 펌웨어 다운로드https://cafe.naver.com/mk802/28244파일 U…


    ♥간단_메모글♥


    최근글


    새댓글



    PHP 안에 HTML ☞ 홈페이지 화면갱신 시간은 ♨
    ▶ 2024-07-05 23:40:52

    오늘의 홈 현황


    • 현재 접속자♨ 682 명
    • 오늘 가입자※ 3 명
    • 어제 가입자※ 8 명
    • 주간 가입자※ 17 명
    • 오늘 방문자 1,977 명
    • 어제 방문자 2,205 명
    • 최대 방문자 13,042 명
    • 전체 방문자 4,415,480 명
    • 전체 게시물※ 8,677 개
    • 전체 댓글수※ 24,838 개
    • 전체 회원수 11,092 명

    QR코드


    ☞ QR코드 스캔은 kakao앱 자체 QR코드

    알림 0








    최신글↑