Docker-02

컨테이너 기반 가상화 플랫폼 도커의 이해 2강

Mac 에서는 xhyve, Window에서는 Hyper-V 로 사용

Docker Meetup 9/17/14  Docker Client, Server, and Containers  client server  docker run ... docker -d  init  grandchild  G...

https://www.slideshare.net/SaiedKazemi/lpc-docker-container-cr-with-criu

client-server

//1. client
$docker run ~~~~ 


//2. host
$docker daemon

//3. client (output)
$output

Run Command

옵션 설명
-d Detached mode 백그라운드모드
-p 호스트와 컨테이너의 포트를 연결(포트 포워딩)
예제) localport: hostport
-v 호스트와 컨테이너의 디렉토리를 연결(마운트)
-e 컨테이너 내에서 사용할 환경 변수 설정
예제) -e PARAM_NAME test
--name 컨테이너 이름
--rm 프로세스 종료시 컨테이너 자동 제거
-it -i 와 -t를 동시에 사용한것으로 터미널입력을 위한 옵션
--network 네트워크 연결

컨테이너 실행

CentOs 실행

$docker run centos:7
Unable to find image 'centos:7' locally
7: Pulling from library/centos
d8d02d457314: Pull complete
Digest: sha256:307835c385f656ec2e2fec602cf093224173c51119bbebd602c53c3653a3d6eb
Status: Downloaded newer image for centos:7

이미지 파일이 있으면 실행하고 없으면 pull 로 이미지를 받아온뒤 centos:7 이미지 를 실행

bash 접속

$docker run --rm -it centos:7 /bin/bash
[root@7bead8a2b28b /]#ls
anaconda-post.log  dev  home  lib64  mnt  proc  run   srv  tmp  var
bin                etc  lib   media  opt  root  sbin  sys  usr

--it : 터미널로 입력을 하겠다는 의믜 (input terminal 인가??)

--rm : 터미널종료가 되면 컨테이너가 자동으로 종료됨

Redis

메모리에 key value를 사용하여 쓸수있는 메모리

$docker run --name=kdy_redis -d -p 1234:6379 redis
Unable to find image 'redis:latest' locally
latest: Pulling from library/redis
1ab2bdfe9778: Pull complete
966bc436cc8b: Pull complete
c1b01f4f76d9: Pull complete
8a9a85c968a2: Pull complete
8e4f9890211f: Pull complete
93e8c2071125: Pull complete
Digest: sha256:9755880356c4ced4ff7745bafe620f0b63dd17747caedba72504ef7bac882089
Status: Downloaded newer image for redis:latest
747b5ec128b3c79e54a1e7e1b49bdf9fe06542fa2dcc1824038812149da491cf
$

실행은 됬는데

텔넷으로 접속 redis

redis접속 하기 위해서 다시 telnet이미지 설치

별도로 설치 하지않고 이미지를 사용해서 command 라인 프로그램 사용 가능

$docker run --rm -it mikesplain/telnet docker.for.mac.localhost 1234

Unable to find image 'mikesplain/telnet:latest' locally
latest: Pulling from mikesplain/telnet
[DEPRECATION NOTICE] registry v2 schema1 support will be removed in an upcoming release. Please contact admins of the docker.io registry NOW to avoid future disruption.
c52e3ed763ff: Pull complete
a3ed95caeb02: Pull complete
Digest: sha256:11fa2b96776f5d34511452ad2b76eafad69321e456ac6653482eadb9d98c52a7
Status: Downloaded newer image for mikesplain/telnet:latest

keys * // 키의 모든것을 보여주라는 것
*0
set hello morris // key value설정
+OK
get hello //가지고오기
$6
morris//가지고 온 value

docker run --rm -it mikesplain/telnet docker.for.mac.localhost 1234

이미지의 호스트에 아이피가 필요한데 이것을 모르기 때문에 도커에서 제공하는 docker.for.mac.localhost 라는 dns을 사용해서 접속 가능하다.

docker.for.win.localhost 는 윈도우 설정

logs 확인하기

이미지에 대한 로그 확인하기

$docker logs [option] [container_id]

$docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
747b5ec128b3        redis               "docker-entrypoint.s…"   9 minutes ago       Up 9 minutes        0.0.0.0:1234->6379/tcp   kdy_redis

$docker logs -f 747
1:C 27 Aug 2019 12:07:51.161 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
1:C 27 Aug 2019 12:07:51.161 # Redis version=5.0.5, bits=64, commit=00000000, modified=0, pid=1, just started
1:C 27 Aug 2019 12:07:51.161 # Warning: no config file specified, using the default config. In order to specify a config file use redis-server /path/to/redis.conf

이미지확인

도커 이미지 확인 하기

$docker images

이미지 다운로드

$docker pull [name]

이미지 삭제

$docker rmi [name]

컨테이너가 실행 중일때는 삭제가 되지 않는다.

네트워크 만들기

$docker network create [option] NETWORK

네트워크를 만들어서 이미지를 실행할때 아래와같은 네트워크이름을 입력하면된다.

$docker run --name=centos_morris -it --network=[docker_network_name] centos:7 /bin/bash

아이피를 모르더라도 네트워크의 이름만으로도 해결이 가능하다.

Docker Compose

운영 환경에서 많이 사용

$docker-compose version
docker-compose version 1.24.1, build 4667896b
docker-py version: 3.7.3
CPython version: 3.6.8
OpenSSL version: OpenSSL 1.1.0j  20 Nov 2018

하나하나 이미지를 실행했던 것을 하나의 파일에서 환경변수, volumnes , port 등의 여러이미지에 대한 설정을 한번에 실행

docker-compose.yml 파일을 만들어서 내용 입력(이미지, 이미지에 대한 옵션을 설정으로 입력)

해당하는 파일을 읽어서 컨테이너를 실행함

$docker-compose up

해당파일을 읽어서 컨테이너 종료 및 삭제

$docker-compose down

Q : docker compose 사용할때 무조건 docker-compose.yml 의 이름으로 실행해야하는건지?

기본적으로는 docker-compose.yml , docker-compose.yaml 파일을 찾지만

-f 옵션을 사용하여 특정 파일을 지정해 줄수 있음

$docker-compose -f 파일이름 up

강의 내용
youtube.com/watch?v=RlezLB66KPg&list=PL9mhQYIlKEhfw7ZKPgHIm9opAm2ZpmzDq&index=3&t=2423s

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

도커 명령어  (1) 2020.02.09
컨테이너 기반 가상화 플랫폼 '도커(Docker)' 의 이해 1강  (0) 2019.08.26
[docker] MySQL 접속하기 (2)  (0) 2019.06.30
[Docker] install Mysql  (0) 2019.06.23

+ Recent posts