ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [docker] 명령어
    CLOUD/Docker 2021. 7. 19. 21:04
    반응형

    create

    docker create <옵션> <이미지이름 , ID> <명령> <매개변수>
    uroot@jskang:~$ docker container ls -a
    CONTAINER ID   IMAGE     COMMAND       CREATED          STATUS                      PORTS     NAMES
    99c98336ce85   test      "/bin/bash"   43 seconds ago   Created                               myubuntu
    
    uroot@jskang:~$ docker create -it --name myubuntu test /bin/bash
    99c98336ce85e40309197de45fd760c2841459aa9d35887a0c59d606c660faf4
    
    
    uroot@jskang:~$ docker container ls -a
    CONTAINER ID   IMAGE     COMMAND       CREATED          STATUS                      PORTS     NAMES
    99c98336ce85   test      "/bin/bash"   43 seconds ago   Created                               myubuntu
    

    run : pull (이미지가 없을때) - create - start - attach (-i, -t옵션 사용했을때)

    create : pull(이미지가 없을때) - create

    컨테이너 노출

    컨테이너는 가상 IP주소를 할당 받는다. (172.17.0.x 순차적 할당)

    root@99c98336ce85:/# ifconfig
    eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
            inet 172.17.0.2  netmask 255.255.0.0  broadcast 172.17.255.255
            ether 02:42:ac:11:00:02  txqueuelen 0  (Ethernet)
            RX packets 27  bytes 3201 (3.2 KB)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 0  bytes 0 (0.0 B)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    
    lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
            inet 127.0.0.1  netmask 255.0.0.0
            loop  txqueuelen 1000  (Local Loopback)
            RX packets 0  bytes 0 (0.0 B)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 0  bytes 0 (0.0 B)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    
    

    172.17.0.2할당받은 것을 볼 수 있음

    docker run -it --name network_test -p 80:80 ubuntu:14.04

    -p 옵션을 통한 호스트와 컨테이너 포트 연결

    -d 데몬모드 (백그라운드 수행 후 id 반환 )

    -e 환경변수 설정

    --link : 다른 컨테이너와 연결

    inspect

    컨테이너와 이미지의 세부 정보를 JSON형태로 출력

    volume

    -v 옵션으로 !

    container삭제시 휘발성으로 데이터가 사라지는데, 호스트에 데이터를 저장하거나 컨테이너 끼리 데이터를 공유할때 사용

    방법 1

    uroot@jskang:~/dev$ docker run -it --name myvolume -v myvolume:/home/uroot/dev/docker_volume/ test /bin/bash
    
    uroot@jskang:~/dev/docker_volume$ docker inspect --type volume myvolume
    [
        {
            "CreatedAt": "2021-07-19T17:40:16+09:00",
            "Driver": "local",
            "Labels": {},
            "Mountpoint": "/var/lib/docker/volumes/myvolume/_data",
            "Name": "myvolume",
            "Options": {},
            "Scope": "local"
        }
    ]
    uroot@jskang:~/dev/docker_volume$ docker volume ls
    DRIVER    VOLUME NAME
    local     myvolume
    
    
    uroot@jskang:~/dev/docker_volume$ cat /var/lib/docker/volumes/myvolume/_data/hello.txt 
    hello
    

    /var/lib/docker/volumes/ 에 hash값을 가지는 디렉터리가 생성되고, _data 디렉토리 안에 컨테이너의 지정한 디렉토리가 매핑

    컨테이너 myvolume:/home/uroot/dev/docker_volume/ 여기에 뭔가 생성하면 /var/lib/docker/volumes/myvolume/_data/ 여기에 같은게 생성됨

    방법2

    호스트의 특정 디렉토리,파일을 컨티에너와 매핑

    볼륨의 위치를 정할 수 있어서 데이터를 찾기 쉬움

    
    uroot@jskang:~/dev/docker_volume$ docker run -it -v /home/uroot/dev/docker_volume:/home/uroot/dev/docker_volume test /bin/bash
    
    root@2c43ea0cbd16:/# cd /home/uroot/dev/docker_volume/
    root@2c43ea0cbd16:/home/uroot/dev/docker_volume# ls
    root@2c43ea0cbd16:/home/uroot/dev/docker_volume# vim test1.txt
    root@2c43ea0cbd16:/home/uroot/dev/docker_volume# exit
    exit
    uroot@jskang:~/dev/docker_volume$ ls
    test1.txt
    uroot@jskang:~/dev/docker_volume$ cat test.txt
    cat: test.txt: 그런 파일이나 디렉터리가 없습니다
    uroot@jskang:~/dev/docker_volume$ cat test1.txt
    hello testest
    
     docker run -it -v (호스트 디렉토리):(컨테이너의 volume 디렉토리) (이미지) /bin/bash

    방법3

    여러개의 컨테이너에서 파일을 공유하고자할때

    호스트의 같은 디렉토리 파일을 -v 옵션으로 volume으로 지정

    도커 네트워크

    내부에 eth0, lo 네트워크 인터페이스가 생성되어있음

    veth

    컨테이너 내부에 eth0와 연결된 veth가 호스트 네트워크 인터페이스로 생성되면서 외부에서 접근할 수 있음

    # ctrl+p+q해서 나온뒤 호스트에서 ifconfig했을때 veth 생성되어있는걸 볼 수 있다.
    
    vethc7c4630: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
            inet6 fe80::f89c:48ff:fe05:6d43  prefixlen 64  scopeid 0x20<link>
            ether fa:9c:48:05:6d:43  txqueuelen 0  (Ethernet)
            RX packets 0  bytes 0 (0.0 B)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 18  bytes 2293 (2.2 KB)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    
    

    도커 네트워크 기능

    docker0 브리지를 통해 외부와 통신할 수 있는 환경 제공

    기본이 bridge라서 성능이 중요한 프로그램의 경우 --net=host 옵션 고려

    사용자에 선택에 따라 bridge, host none, container, overlay, (3rd-party로 weave, flannel, 등) 사용 가능

    -net host: host 네트워크환경 그대로 사용

    -net none : 네트워크 사용x

    출처 :

    https://subicura.com/2017/01/19/docker-guide-for-beginners-1.html

    landvibe 깃허브

    'CLOUD > Docker' 카테고리의 다른 글

    [Docker] Dockerfile  (0) 2021.08.10
    [Docker] 3. 이미지만들고 배포  (0) 2021.02.23
    [Docker] 2 설치.컨테이너 실행  (0) 2021.02.23
    도커란 무엇인가  (0) 2021.02.23

    댓글

Designed by Tistory.