백업
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 |
|---|
백업
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>
| [Docker] 기본 명령어 (0) | 2020.04.03 |
|---|
docker hub에서 저장된 이미지를 하나하나 사용할 수 있지만 자신이 필요한 이미지를 만들기 위해서는 도커 이미지의 커스텀이 필요합니다.
이러한 도커 이미지를 커스텀하기 위한 Dockerfile에 대해서 알아보겠습니다.
Dockerfile은 도커 이미지 설정 파일으로 내용대로 이미지를 생성해주는 도커 도구로 바로 테스트 프로젝트를 통해서 도커파일에 대해서 알아보겠습니다.
mkdir docker-node-app
cd docker-node-app
도커 파일 생성을 위해서 폴더를 하나 만들어줍니다.
{
“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을 실행하여 앱을 만들어줍니다.
'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를 생성합니다.
touch 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 파일을 만듭니다.
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
- FROM : 도커를 구성할 기반 이미지 설정
- RUN : 이미지 생성 중 명령 실행
- CMD : 컨테이너 시작 후 명령 실행
- EXPOSE : 포트 노출
- ENV : 환경 변수 설정
- WORKDIR : 작업 폴더 설정
- COPY : 지정된 폴더에 파일 복사
개요
도커에 대한 기본 명령어를 치트시트 형태로 보기 쉽게 정리합니다.
- 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
- 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
- docker ps : 실행 중인 도커 컨테이너 확인
docker ps | Docker Documentation
- docker logs : 도커 컨테이너 로그 확인
docker logs | Docker Documentation
- docker stats : 도커 컨테이너 상태 확인
docker logs | Docker Documentation
- 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
- docker history : 도커 이미지의 변화 내역 보기
docker history | Docker Documentation
- docker tag : 도커 이미지에 태그 설정
docker tag | Docker Documentation
- docker login : 도커 저장소 로그인
docker login | Docker Documentation
- docker search : 도커 이미지 검색
docker search | Docker Documentation
- docker pull : 도커 이미지 가져오기
docker pull | Docker Documentation
- docker push : 도커 이미지 저장소에 저장
| [Dokcer] [Mysql or MariaDB] 백업과 복구 from Docker Mysql 컨테이너 (1) | 2020.11.29 |
|---|
아래 명령어로 docker hub에서 이미지를 가져온다.
위의 명령어를 실행하면 아래와 같이 이미지를 다운받고 extract 하는 과정을 볼 수가 있다.
Image 다운이 다 되었으면, 아래의 명령어를 통해 다운 받은 Docker Image를 확인할 수가 있다.
제대로 설치가 되었다면 아래와 유사한 목록 리스트가 나타나야 한다.
컨테이너를 만들고 실행시키기 위해서 아래의 명령어를 이용한다.
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 명령을 통해 해당 컨테이너가 잘 실행되었는지를 확인하자.
방금 만든 컨테이너가 보인다면, 해당 서비스가 잘 구동되어 있음을 나타내는 것이다.
이제 웹상에서 해당 machine의 ip와 port(ex) 8888)를 친후 ipython-notebook을 실행해보자.
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
docker build --rm -t sequenceiq/spark:1.6.0 .
docker run -it -p 8088:8088 -p 8042:8042 -h sandbox sequenceiq/spark:1.6.0 bash
ordocker run -d -h sandbox sequenceiq/spark:1.6.0 -dHadoop 2.6.0 and Apache Spark v1.6.0 on Centos
There are two deploy modes that can be used to launch Spark applications on YARN.
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()
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
| Docker Jupyter Notebook Python, Scala, R, Spark, Mesos Stack (0) | 2016.06.06 |
|---|
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:/#
| [AWS] Bastion 경유 Private RDS DBMS 접속 방법 (0) | 2022.04.26 |
|---|---|
| AWS instance Volume Size 변경 (0) | 2016.07.04 |
| 아마존 AWS 시작하기 (0) | 2016.05.10 |
| AWS EC2 인스턴스 다른 Region 에 복제/이전 (0) | 2016.05.10 |
| 윈도우에서 Putty로 AWS 접속을 위한PEM, PPK 변환 (0) | 2016.05.10 |