백업

 

docker exec <CONTAINER> /usr/bin/mysqldump -u root — password=root <DATABASE> > backup.sql

 

 

복구

 

cat backup.sql | docker exec -i <CONTAINER> /usr/bin/mysql -u root --password=root <DATABASE>

반응형

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

[Docker] 기본 명령어  (0) 2020.04.03
블로그 이미지

조이풀 라이프

Lift is short, enjoy the life

,

개요

docker hub에서 저장된 이미지를 하나하나 사용할 수 있지만 자신이 필요한 이미지를 만들기 위해서는 도커 이미지의 커스텀이 필요합니다.

이러한 도커 이미지를 커스텀하기 위한 Dockerfile에 대해서 알아보겠습니다.

Dockerfile

Dockerfile은 도커 이미지 설정 파일으로 내용대로 이미지를 생성해주는 도커 도구로 바로 테스트 프로젝트를 통해서 도커파일에 대해서 알아보겠습니다.

사전 작업

mkdir docker-node-app
cd docker-node-app

도커 파일 생성을 위해서 폴더를 하나 만들어줍니다.

package.json

{ 
 “name”: “docker_web_app”, 
 “version”: “1.0.0”, 
 “description”: “Node.js on Docker”, 
 “author”: “First Last <first.last@example.com>”, 
 “main”: “server.js”, 

“scripts”: { 
 “start”: “node server.js 
}, 
“dependencies”: { 
 “express”: “^4.16.1” 
 } 
}

테스트를 위해서 간단한 node.js 앱을 생성하겠습니다.

위와 같이 package.json을 만들고 npm install을 실행하여 앱을 만들어줍니다.

server.js

'use strict'; 

const express = require('express'); 

// 상수 
const PORT = 8080; 
const HOST = '0.0.0.0'; 

// 앱 
const app = express(); 
app.get('/', (req, res) => { 
  res.send('Hello World'); 
}); 

app.listen(PORT, HOST); 
console.log(`Running on http://${HOST}:${PORT}`);

웹서버 실행 확인을 위해서 server.js를 생성합니다.

Dockerfile 생성

​touch Dockerfile

Dockerfile

FROM node:12 

# 앱 디렉터리 생성 
WORKDIR /usr/src/app 

# 앱 의존성 설치 
COPY package*.json ./ 

RUN npm install 
# 프로덕션을 위한 코드를 빌드하는 경우 
# RUN npm ci —only=production 

# 앱 소스 추가 
COPY . . 

EXPOSE 8080 
CMD [ "node", "server.js" ]

위와 같이 Dockerfile을 생성하고 같은 폴더에 .dockerignore 파일을 만듭니다.

.dockerignore

node_modules
npm-debug.log

 

도커파일에 위와 같이 로컬 모듈과 디버깅 로그를 복사하는 것을 막아서 이미지 내에서 설치한 모듈을 덮어쓰지 않도록 해줍니다.

docker build -t <your username>/node-web-app .

Dockerfile이 있는 폴더에서 위와 같은 명령어로 도커 이미지를 생성합니다.

이미지 실행

-d로 이미지를 실행하면 분리 모드로 컨테이너를 실행해서 백그라운드에서 컨테이너가 돌아가도록 합니다. -p 플래그는 공개 포트를 컨테이너 내의 비공개 포트로 리다이렉트합니다. 앞에서 만든 이미지를 실행하세요.

docker run -p 49160:8080 -d <your username>/node-web-app

생성된 이미지를 실행해주면 웹서버가 실행된 것을 볼 수 있습니다.

​앱 로그 출력

# 컨테이너 아이디를 확인합니다
$ docker ps # 앱 로그를 출력합니다
$ docker logs <container id> # 예시 Running on http://localhost:8080

컨테이너 안에 들어가 봐야 한다면 exec 명령어를 사용할 수 있습니다.

# 컨테이너에 들어갑니다
$ docker exec -it <container id> /bin/bash

테스트

앱을 테스트하려면 Docker 매핑된 앱 포트를 확인합니다.

$ docker ps 

# 예시 
ID            IMAGE                                COMMAND    ...   PORTS 
ecce33b30ebf  /node-web-app:latest  npm start  ...   49160->8080

위 예시에서 Docker가 컨테이너 내의 8080 포트를 머신의 49160 포트로 매핑했습니다.

이제 curl로 앱을 호출할 수 있습니다.(필요하다면 sudo apt-get install curl로 설치하세요.)

$ curl -i localhost:49160 

HTTP/1.1 200 OK 
X-Powered-By: Express 
Content-Type: text/html; charset=utf-8 
Content-Length: 12 
ETag: W/"c-M6tWOb/Y57lesdjQuHeB1P/qTV0" 
Date: Mon, 13 Nov 2017 20:53:59 GMT 
Connection: keep-alive 

Hello world

 

Cheat Sheet

- FROM : 도커를 구성할 기반 이미지 설정

| Docker Documentation

- RUN : 이미지 생성 중 명령 실행

| Docker Documentation

- CMD : 컨테이너 시작 후 명령 실행

| Docker Documentation

- EXPOSE : 포트 노출

| Docker Documentation

- ENV : 환경 변수 설정

| Docker Documentation

- WORKDIR : 작업 폴더 설정

| Docker Documentation

- COPY : 지정된 폴더에 파일 복사

| Docker Documentation

반응형
블로그 이미지

조이풀 라이프

Lift is short, enjoy the life

,

개요

도커에 대한 기본 명령어를 치트시트 형태로 보기 쉽게 정리합니다.

 

Containers

Lifecycle

- docker create : 도커 컨테이너 생성

docker create | Docker Documentation

- docker rename : 도커 컨테이너 이름 변경

docker rename | Docker Documentation

- docker run : 도커 컨테이너 시작

docker run | Docker Documentation

- docker rm : 도커 컨테이너 삭제

docker update | Docker Documentation

- docker update : 도커 컨테이너 업데이트

docker update | Docker Documentation

Start and Stop

- docker start : 도커 컨테이너 시작

docker update | Docker Documentation

- docker stop : 도커 컨테이너 정지

docker update | Docker Documentation

- docker restart : 도커 컨테이너 재시작

docker restart | Docker Documentation

- docker pause : 도커 컨테이너 정지

docker restart | Docker Documentation

- docker unpause : 정지된 도커 컨테이너 재시작

docker unpause | Docker Documentation

- docker kill : 도커 컨테이너 종료

docker kill | Docker Documentation

- docker exec : 도커 컨테이너 실행

docker exec | Docker Documentation

Info

- docker ps : 실행 중인 도커 컨테이너 확인

docker ps | Docker Documentation

- docker logs : 도커 컨테이너 로그 확인

docker logs | Docker Documentation

- docker stats : 도커 컨테이너 상태 확인

docker logs | Docker Documentation

Images

Lifecycle

- docker images : 도커 이미지 보기

docker images | Docker Documentation

- docker build : Dockerfile으로 구성된 도커 이미지 생성

docker build | Docker Documentation

- docker commit : 도커 컨테이너를 이미지로 변환

docker commit | Docker Documentation

- docker rmi : 도커 이미지 제거

docker rmi | Docker Documentation

Info

- docker history : 도커 이미지의 변화 내역 보기

docker history | Docker Documentation

- docker tag : 도커 이미지에 태그 설정

docker tag | Docker Documentation

Docker Repository

- docker login : 도커 저장소 로그인

docker login | Docker Documentation

- docker search : 도커 이미지 검색

docker search | Docker Documentation

- docker pull : 도커 이미지 가져오기

docker pull | Docker Documentation

- docker push : 도커 이미지 저장소에 저장

docker push | Docker Documentation

반응형
블로그 이미지

조이풀 라이프

Lift is short, enjoy the life

,

Docker Hub 이미지를 이용한 Spark 설치하기

 

Apacher Spark 이미지

Docker Hub 이미지 중 가장많은 별포인트를 받은 아래의 Spark 이미지를 설치한다.

[Docker Hub] https://hub.docker.com/r/jupyter/all-spark-notebook/

[Git Hub] https://github.com/jupyter/docker-stacks

 

아래 명령어로 docker hub에서 이미지를 가져온다.


sudo docker pull jupyter/all-spark-notebook  


위의 명령어를 실행하면 아래와 같이 이미지를 다운받고 extract 하는 과정을 볼 수가 있다.

 

 

Image 다운이 다 되었으면, 아래의 명령어를 통해 다운 받은 Docker Image를 확인할 수가 있다.

 

sudo docker images


 

제대로 설치가 되었다면 아래와 유사한 목록 리스트가 나타나야 한다.

 

sudo docker images

 

 

컨테이너를 만들고 실행시키기 위해서 아래의 명령어를 이용한다.

 

sudo docker run -d -p [외부포트]:[컨테이너내부포트] -e GRANT_SUDO=yes --name [컨테이너 이름] jupyter/all-spark-notebook

ex) sudo docker run -d -p 8888:8888 -e GRANT_SUDO=yes --name test_spark jupyer/all-spark-notebook

ex) sudo docker run -d -p 8888:8888 jupyter/all-spark-notebook


 

docker ps 명령을 통해 해당 컨테이너가 잘 실행되었는지를 확인하자.

 

sudo docker ps


방금 만든 컨테이너가 보인다면, 해당 서비스가 잘 구동되어 있음을 나타내는 것이다.

이제 웹상에서 해당 machine의 ip와 port(ex) 8888)를 친후 ipython-notebook을 실행해보자.

 

[Docke Hub] https://hub.docker.com/r/sequenceiq/spark/

Apache Spark on Docker

 

This repository contains a Docker file to build a Docker image with Apache Spark. This Docker image depends on our previous Hadoop Docker

image, available at the SequenceIQ GitHub page.
The base Hadoop Docker image is also available as an official Docker image.

##Pull the image from Docker Repository

 

docker pull sequenceiq/spark:1.6.0

Building the image

docker build --rm -t sequenceiq/spark:1.6.0 .

Running the image

  • if using boot2docker make sure your VM has more than 2GB memory
  • in your /etc/hosts file add $(boot2docker ip) as host 'sandbox' to make it easier to access your sandbox UI
  • open yarn UI ports when running container
    docker run -it -p 8088:8088 -p 8042:8042 -h sandbox sequenceiq/spark:1.6.0 bash
    
    or
    docker run -d -h sandbox sequenceiq/spark:1.6.0 -d

Versions

Hadoop 2.6.0 and Apache Spark v1.6.0 on Centos

 

Testing

There are two deploy modes that can be used to launch Spark applications on YARN.

YARN-client mode

In yarn-client mode, the driver runs in the client process, and the application master is only used for requesting resources from YARN.

# run the spark shell
spark-shell \
--master yarn-client \
--driver-memory 1g \
--executor-memory 1g \
--executor-cores 1

# execute the the following command which should return 1000
scala> sc.parallelize(1 to 1000).count()

 

YARN-cluster mode

In yarn-cluster mode, the Spark driver runs inside an application master process which is managed by YARN on the cluster, and the client can go away after initiating the application.

Estimating Pi (yarn-cluster mode):

# execute the the following command which should write the "Pi is roughly 3.1418" into the logs
# note you must specify --files argument in cluster mode to enable metrics
spark-submit \
--class org.apache.spark.examples.SparkPi \
--files $SPARK_HOME/conf/metrics.properties \
--master yarn-cluster \
--driver-memory 1g \
--executor-memory 1g \
--executor-cores 1 \
$SPARK_HOME/lib/spark-examples-1.6.0-hadoop2.6.0.jar

Estimating Pi (yarn-client mode):

# execute the the following command which should print the "Pi is roughly 3.1418" to the screen
spark-submit \
--class org.apache.spark.examples.SparkPi \
--master yarn-client \
--driver-memory 1g \
--executor-memory 1g \
--executor-cores 1 \
$SPARK_HOME/lib/spark-examples-1.6.0-hadoop2.6.0.jar
반응형

'IT > Apache Spark' 카테고리의 다른 글

Docker Jupyter Notebook Python, Scala, R, Spark, Mesos Stack  (0) 2016.06.06
블로그 이미지

조이풀 라이프

Lift is short, enjoy the life

,

Docker 설치 및 기본 사용 방법

간단한 설치 방법 및 기본 사용 방법에 대해 설명하도록 하겠습니다.

 

Amazon Web Services(AWS) EC2(Ubuntu)를 생성

(기본으로 AWS의 EC2에서는 docker 패키지를 사용 가능)


docker 설치

$ sudo apt-get install docker.io


서비스 등록

$ sudo update-rc.d docker.io defaults


Docker Engine 정보 확인

$ sudo docker.io info

Containers: 0

Images: 0

Storage Driver: devicemapper

 Pool Name: docker-202:1-18845-pool

 Data file: /var/lib/docker/devicemapper/devicemapper/data

 Metadata file: /var/lib/docker/devicemapper/devicemapper/metadata

 Data Space Used: 291.5 Mb

 Data Space Total: 102400.0 Mb

 Metadata Space Used: 0.7 Mb

 Metadata Space Total: 2048.0 Mb

Execution Driver: native-0.1

Kernel Version: 3.13.0-24-generic

WARNING: No swap limit support



docker 명령어로 사용하기 위한 심볼릭 링크 생성

$ sudo ln -sf /usr/bin/docker.io /usr/local/bin/docker


docker 명령어에 대한 권한 부여 (ubuntu도 사용할 수 있도록)

$ sudo usermod -G docker ubuntu


ubuntu 사용자로 logout->login하고 docker info 명령어 실행

$ docker info

Containers: 0

Images: 0

Storage Driver: devicemapper

 Pool Name: docker-202:1-18845-pool

 Data file: /var/lib/docker/devicemapper/devicemapper/data

 Metadata file: /var/lib/docker/devicemapper/devicemapper/metadata

 Data Space Used: 291.5 Mb

 Data Space Total: 102400.0 Mb

 Metadata Space Used: 0.7 Mb

 Metadata Space Total: 2048.0 Mb

Execution Driver: native-0.1

Kernel Version: 3.13.0-24-generic

WARNING: No swap limit support



Dicker 클라이언트 / 서버 확인

$ docker version

Client version: 0.9.1

Go version (client): go1.2.1

Git commit (client): 3600720

Server version: 0.9.1

Git commit (server): 3600720

Go version (server): go1.2.1

Last stable version: 1.0.0, please update docker




ubuntu 이미지 Docker Hub Regstry에서 다운로드

$ docker pull ubuntu:latest

Pulling repository ubuntu

ad892dd21d60: Download complete

511136ea3c5a: Download complete

e465fff03bce: Download complete

23f361102fae: Download complete

9db365ecbcbb: Download complete 



다운로드 이미지 확인

$ docker images

REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE

ubuntu              latest              ad892dd21d60        7 days ago          275.4 MB 



Docker Container 생성 및 실행

$ docker run [옵션] [--name {컨테이너명}] {이미지명}[:{태그명}] [컨테이너로 실행할 명령어] [변수]


중요 옵션

-d : 백그라우드 실행. 

-i : 컨터이너의 표준 입력. /bin/bash등으로 컨테이너를 조작할 때 지정.

-t : tty(단말 디바이스)를 확보. /bin/bash등으로 컨테이너를 조작할 때 지정.

-p {호스트 포트번호} : {컨테이너 포트번호}  : Docker서버의 호스트와 포트 맵핑을 구성



ubuntu이미지에서 ubuntu1 컨테이너를 생성

$ docker run -it --name ubuntu1 ubuntu /bin/bash

root@b5c2f7a3f4de:/# 



nginx 설치 및 확인

root@b5c2f7a3f4de:/# apt-get update

root@b5c2f7a3f4de:/# apt-get install -y nginx


root@b5c2f7a3f4de:/# dpkg -l nginx

Desired=Unknown/Install/Remove/Purge/Hold

| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend

|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)

||/ Name                                                 Version                         Architecture                    Description

+++-====================================================-===============================-===============================-==============================================================================================================


ii  nginx                                                1.4.6-1ubuntu3                  all                             small, powerful, scalable web/proxy server

root@b5c2f7a3f4de:/# 


[Ctrl]+[d]로 bash 종료

- 종료하면 컨테이너 ubuntu1은 정지 상태가 된다.



Docker 컨테이너 리스트 확인

$ docker ps -a

CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

b5c2f7a3f4de        ubuntu:latest       /bin/bash           12 minutes ago      Exit 0                                ubuntu1  


STATUS 항목 - 실행중 = UP {실행시간} / 정지 = Exit {종료코드}



Docker 이미지 생성

$ docker commit {컨테이너명}|{컨테이너 ID} [{사용자명}/]{이미지명}


$ docker commit ubuntu1 park/nginx

948a317510591c8af2ca49e205cc0558141ce5e18acc98c0e834cc8e93cf86cd



생성된 이미지 확인

$ docker images

REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE

park/nginx          latest              948a31751059        2 minutes ago       295.9 MB

ubuntu              latest              ad892dd21d60        7 days ago          275.4 MB



Docker 컨테이너를 백그라운드에서 실행

$ docker run -d -p 80:80 --name nginx1 park/nginx /usr/sbin/nginx -g 'daemon off;' -c /etc/nginx/nginx.conf

06f09849c046f5a949e7d82f52b140cfecd85b2d5f813a12c0adb431a5ea7a52




컨테이너 실행 상태 확인

$ docker ps

CONTAINER ID        IMAGE               COMMAND                CREATED             STATUS              PORTS                NAMES

06f09849c046        park/nginx:latest   /usr/sbin/nginx -g d   27 seconds ago      Up 25 seconds       0.0.0.0:80->80/tcp   nginx1




웹 서비스 기동 상태 확인

$ curl localhost:80



Docker 컨테이너 정지

$ docker stop {컨테이너명}|{컨테이너 ID}


$ docker stop nginx1

nginx1


$ docker ps

CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES



Docker 컨테이너 삭제 및 이미지 삭제

$ docker rm {컨테이너명}|{컨테이너 ID} => 컨테이너 삭제

$ docker rmi {이미지명}|{이미지ID} => 이미지 삭


$ docker ps -a

CONTAINER ID        IMAGE               COMMAND                CREATED             STATUS              PORTS               NAMES

06f09849c046        park/nginx:latest   /usr/sbin/nginx -g d   17 minutes ago      Exit 0                                  nginx1

b5c2f7a3f4de        ubuntu:latest       /bin/bash              40 minutes ago      Exit 0                                  ubuntu1



컨테이너 삭제

$ docker rm nginx1

nginx1


$ docker ps -a

CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

b5c2f7a3f4de        ubuntu:latest       /bin/bash           40 minutes ago      Exit 0                                  ubuntu1


$ docker images

REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE

park/nginx          latest              948a31751059        25 minutes ago      295.9 MB

ubuntu              latest              ad892dd21d60        7 days ago          275.4 MB



이미지 삭제

$ docker rmi park/nginx

Untagged: park/nginx:latest

Deleted: 948a317510591c8af2ca49e205cc0558141ce5e18acc98c0e834cc8e93cf86cd



$ docker images

REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE

ubuntu              latest              ad892dd21d60        7 days ago          275.4 MB



Docker 컨테이너 실행

$ docker start [-i] {컨테이너명}|{컨테이너 ID}

$ docker start -i ubuntu1

ubuntu1

       root@b5c2f7a3f4de:/#


반응형
블로그 이미지

조이풀 라이프

Lift is short, enjoy the life

,