-
[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