윈도(Windows)에서 도커 IP 주소 조회

Kubernetes|2018. 6. 20. 18:05

Docker Quickstart Terminal을 실행하고, 다음과 같이 명령을 실행한다.

$ docker-machine url
tcp://192.168.99.100:2376

예를 들면, Postgres를 실행하면서 다음과 같이 5432 포트를 호스트의 5432 포트와 매핑한 경우.

$ docker run -d -p 5432:5432 --name postgres postgres:alpine

192.168.99.100:5432로 DB에 접속할 수 있다.


EOF


댓글()

쿠버네티스 네임스페이스(namespace)의 이름 제약

Kubernetes|2018. 6. 11. 18:13
  • 최대 63자(characters)
  • 알파벳 소문자와 숫자, 하이픈(-)만 허용
  • 하이픈(-)은 맨 앞이나 뒤에 올 수 없음
  • 이름이 틀렸을 경우 다음과 같은 오류 메시지가 나옴(유효성 체크를 위한 regex가 포함됨!)
The Namespace "p.k.t" is invalid: metadata.name: Invalid value: "p.k.t": a DNS-1123 label must consist of lower case alphanumeric characters or '-', and must start and end with an alphanumeric character (e.g. 'my-name',  or '123-abc', regex used for validation is '[a-z0-9]([-a-z0-9]*[a-z0-9])?')


EOF

댓글()

도커(docker) 이미지의 내용이 궁금할 때

Kubernetes|2018. 5. 5. 14:12

도커(docker) 이미지가 어떻게 만들어졌는지 궁금한데 소스가 없는 경우에는 어떻게 할까? 이럴 때는 docker inspect 명령을 사용한다.

면저 분석하려는 이미지를 pull한다.

$ docker pull tensorflow/tensorflow:latest-gpu
latest-gpu: Pulling from tensorflow/tensorflow
d3938036b19c: Pull complete
a9b30c108bda: Pull complete
67de21feec18: Pull complete
817da545be2b: Pull complete
d967c497ce23: Pull complete
5ddeb439bad8: Pull complete
c6496427ad3b: Pull complete
360fde1360ca: Pull complete
1c3227e49e63: Pull complete
ec2edd14d4b6: Pull complete
96c7a24a6f0c: Pull complete
dee49a23eeb6: Pull complete
3c5ca73fbac5: Pull complete
50f4e1802dc1: Pull complete
316fabb600d5: Pull complete
62c1e601d7a6: Pull complete
Digest: sha256:d31c50ce2d31a21cb5396be59fcab4f8dba405dda2fcaf0f747a407ca277c9f0
Status: Downloaded newer image for tensorflow/tensorflow:latest-gpu

inspect 명령으로 상세한 내용을 살펴본다.

$ docker inspect tensorflow/tensorflow:latest-gpu
[
    {
        "Id": "sha256:e93ab8001bbf2743d82ed90e3735e44615aafd23e794f5561cb510379c8ad869",
        "RepoTags": [
            "tensorflow/tensorflow:latest-gpu"
        ],
        "RepoDigests": [
            "tensorflow/tensorflow@sha256:d31c50ce2d31a21cb5396be59fcab4f8dba405dda2fcaf0f747a407ca277c9f0"
        ],
        "Parent": "",
        "Comment": "",
        "Created": "2018-04-28T00:40:03.186381907Z",
        "Container": "e26d7da89405f94fa446e4f03d45a43cbf09e7c26ba544ade272f5570aeab553",
        "Config": {
            "Env": [
                "PATH=/usr/local/nvidia/bin:/usr/local/cuda/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
                "CUDA_VERSION=9.0.176",
                "CUDA_PKG_VERSION=9-0=9.0.176-1",
                "LD_LIBRARY_PATH=/usr/local/cuda/extras/CUPTI/lib64:/usr/local/nvidia/lib:/usr/local/nvidia/lib64",
                "NVIDIA_VISIBLE_DEVICES=all",
                "NVIDIA_DRIVER_CAPABILITIES=compute,utility",
                "NVIDIA_REQUIRE_CUDA=cuda>=9.0"
            ],
            "Cmd": [
                "/run_jupyter.sh",
                "--allow-root"
            ],
            "ArgsEscaped": true,
            "Image": "sha256:3dda217166b30645da5f5a71aad7d1e895b86a2235b62856f54494e9b23f2de4",
            "Volumes": null,
            "WorkingDir": "/notebooks",
            "Entrypoint": null,
            "OnBuild": null,
            "Labels": {
                "com.nvidia.build.id": "63756748",
                "com.nvidia.build.ref": "2b1c8edf8d79830ad811baff9630adb3bcb5db46",
                "com.nvidia.cuda.version": "9.0.176",
                "com.nvidia.volumes.needed": "nvidia_driver",
                "maintainer": "Craig Citro <craigcitro@google.com>"
            }
        },
        "Metadata": {
            "LastTagTime": "0001-01-01T00:00:00Z"
        }
    }
]

비록 소스 파일(Dockerfile)을 얻을 수 있는 건 아니지만 출력된 내용을 잘 보면 충분히 유추가 가능한다.


EOF

댓글()

Minikube의 docker-env 명령 취소

Kubernetes|2018. 5. 4. 19:30

minikube docker-env 명령을 실행하면, minikube VM의 도커(docker) 데몬과 호스트의 도커 클라이언트를 연결하는 명령을 알려준다.

이를 이용한 후에 되돌리려면 아래 명령 실행 후에 출력되는 내용을 참고하면 된다.

docker-machine env

다음은 Windows에서의 실행 결과다.

C:\\Users\\daniel>docker-machine env
SET DOCKER\_TLS\_VERIFY=1
SET DOCKER\_HOST=tcp://192.168.99.101:2376
SET DOCKER\_CERT\_PATH=C:\\Users\\daniel\\.docker\\machine\\machines\\default
SET DOCKER\_MACHINE\_NAME=default
SET COMPOSE\_CONVERT\_WINDOWS\_PATHS=true
REM Run this command to configure your shell:
REM     @FOR /f "tokens=\*" %i IN ('docker-machine env') DO @%i

마지막 줄의 @FOR /f "tokens=\*" %i IN ('docker-machine env -u') DO @%i을 실행하면, 다시 Docker Toolbox의 도커 데몬을 사용하게 된다.

EOF

댓글()

Liquibase - 기존 DB를 이용해서 초기(initial) ChangeSet 만들기

DevOps|2018. 4. 5. 18:12

Generating Change Logs

  • Example
liquibase --driver=oracle.jdbc.OracleDriver \
      --classpath=\path\to\classes:jdbcdriver.jar \
      --changeLogFile=com/example/db.changelog.xml \
      --url="jdbc:oracle:thin:@localhost:1521:XE" \
      --username=scott \
      --password=tiger \
      generateChangeLog
  • default options
liquibase --driver=org.postgresql.Driver --classpath=C:/Users/daniel/.IntelliJIdea2017.3/config/jdbc-drivers/PostgreSQL/42.2.1/postgresql-42.2.1.jar --changeLogFile=db.changelog.xml --url="jdbc:postgresql://localhost:5432/postgres" --username=postgres --password=postgres generateChangeLog
liquibase --driver=org.postgresql.Driver --classpath=C:/Users/daniel/.IntelliJIdea2017.3/config/jdbc-drivers/PostgreSQL/42.2.1/postgresql-42.2.1.jar --changeLogFile=db.data.changelog.xml --url="jdbc:postgresql://localhost:5432/postgres" --username=postgres --password=postgres --diffTypes="data" generateChangeLog
  • all(default + include data)
liquibase --driver=org.postgresql.Driver --classpath=C:/Users/daniel/.IntelliJIdea2017.3/config/jdbc-drivers/PostgreSQL/42.2.1/postgresql-42.2.1.jar --changeLogFile=db.all.changelog.xml --url="jdbc:postgresql://localhost:5432/postgres" --username=postgres --password=postgres --diffTypes="tables, views, columns, indexes, foreignkeys, primarykeys, uniqueconstraints, data" generateChangeLog
  • 데이터베이스 업데이트를 위해 Liquibase가 사용하는 SQL 파일 생성
liquibase --driver=org.postgresql.Driver --classpath=C:/Users/daniel/.IntelliJIdea2017.3/config/jdbc-drivers/PostgreSQL/42.2.1/postgresql-42.2.1.jar --changeLogFile=db.all.changelog.xml --url="jdbc:postgresql://localhost:5432/postgres" --username=postgres --password=postgres --diffTypes="tables, views, columns, indexes, foreignkeys, primarykeys, uniqueconstraints, data" updateSQL  > updateSQL.sql
  • 생성된 ChangeSet은 여러 개로 나뉘어져 있는데, 하나의 ChangeSet으로 병합하는게 좋다.
    • 변경 로그를 하나만 남기기 위해서.
    • 가독성



EOF

댓글()