Docker 실행
sudo service docker start
redis 설치
docker run -p 6379:6379 --name skan-redis -d redis:latest
aerospike-service 설치
docker run -tid --name aerospike -p 3000:3000 -p 3001:3001 -p 3002:3002 -p 3003:3003 aerospike/aerospike-server
mysql 설치
docker run --name adteck-mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=skan2018 -e MYSQL_ROOT_HOST=% -d mysql:5.7.21 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
--------------------------------------------------------------------------
docker 컨테이너 삭제
> docker rm {컨테이너ID}
docker 컨테이너 모두 삭제
> docker rm 'docker ps -a -q'
docker 이미지 삭제
> docker rmi {이미지ID}
docker 컨테이너 모두 삭제
> docker rm 'docker ps -a -q'
> docker ps -q -a | xargs docker rm
none image 삭제
> docker rmi $(docker images | grep “^<none>” | awk ‘{print $3}’)
docker logs [option] {containerid}
------------------------------------------------------------------
docker 실행
docker start
docker run [OPTIONS] IMAGE[:TAG|@DIGEST] [COMMAND] [ARG...]
옵션 설명
-d detached mode 흔히 말하는 백그라운드 모드
-p 호스트와 컨테이너의 포트를 연결 (포워딩)
-v 호스트와 컨테이너의 디렉토리를 연결 (마운트)
-e 컨테이너 내에서 사용할 환경변수 설정
–name 컨테이너 이름 설정
–rm 프로세스 종료시 컨테이너 자동 제거
-it -i와 -t를 동시에 사용한 것으로 터미널 입력을 위한 옵션
–link 컨테이너 연결 [컨테이너명:별칭]
docker run -p 8080:8080 -t springio/gs-spring-boot-docker
컨테이너 생성 실행 후 bash 접속
docker run -i -t --name skan_jenkins skan/jenkins:basic /bin/bash
80 : port
docker run --name skan_jenkins -d -p 8080:8080 -p 50000:50000 skan/jenkins:basic
docker container 접속 방법 [exec]
실행 중인 docker 정보 확인
docker ps -a
docker exec 로 컨테이너 접속
docker exec -it [CONTAINER ID] /bin/bash
shh 쉘 접속후 필요한 파일 및 설정
mysql 접속
docker exec -it adteck-mysql mysql -uroot -p
--------------------------------------------------------------------------------------------
docker image 생성
docker commit <옵션> <컨테이너 이름> <이미지 이름>:<태그>
$ docker commit -m "{commit message}" -a "{master_user}" {container_id} {image_name}:{tag}
$ docker commit -m "initial commit" -a "sangkil.an@cj.net" dc7cf848887a skan/jenkins:0.1
$ docker commit -a "Foo Bar <foo@bar.com>" m "add hello.txt" hello-nginx hello:0.2
-a "Foo Bar <foo@bar.com>"과 -m "add hello.txt" 옵션으로 커밋한 사용자와 로그 메시지를 설정합니다.
hello-nginx 컨테이너를 hello:0.2 이미지로 생성합니다.
---------------------------------------------------------------------------------------------
docker tag/push
docker tag skanmedia/adserver:latest adverserver:0.1
docker tag <이미지 이름>:<태그> <Docker 레지스트리 URL>/<이미지 이름>:<태그> 형식입니다.
docker push <Docker 레지스트리 URL>/<이미지 이름>:<태그> 형식입니다.
* Linux 개인 저장소 생성
1.환경 설정 변경
sudo docker -d --insecure-registry localhost:5000
vim /etc/init.d/docker
DOCKER_OPTS=--insecure-registry localhost:5000
sudo service docker restart
* window Docker 개인 저장소 생성 (localhost)
기본 HTTPS로 통신 하기 때문에 안전한 내트워크 상에 있는 곳 에서는 HTTP를 이용할수 있다.
이를 사용하기 위해 설정을 추가 한다.
1. Configration 변경
edit C:/Users/Username/.docker/machine/default/config.json
add the registry : "InsecureRegistry": ["x.x.x.x:port"]
restart docker with > docker-machine.exe restart default (didn't work)
restart windows (there must be a better way ;-)
docker login x.x.x.x:port
2. docker registry 실행
docker run -d -p 5000:5000 --restart=always --name registry registry:2
* push 이미지 확인
1. 이미지 확인하기
$ curl -X GET http://192.168.99.100:5000/v2/_catalog
#출력 {"repositories":["hello-world"]}
2. 태그 정보 확인하기
$ curl -X GET http://192.168.99.100:5000/v2/hello-world/tags/list
# 출력 {"name":"hello-world","tags":["latest"]}
* 외부에서 pull 받기
외부에서 pull 받기 위해서는 docker Image tag 를 가지고 있는 서버의 IP를 configuration 에 등록 한다.
---------------------------------------------------------------------------------------------
######################################
# Spring Boot Docker
######################################
# Docker build/deploy/run 실행
## docker file Sample
Spring boot [.Dockerfile] Smapme URL : https://spring.io/guides/gs/spring-boot-docker/
### 1. Docker Console 접속
cd {PROJECT_HOME_PATH}
mvn clean package
mvn dockerfile:build
> docker repository 명은 maven plug in 파일에 정의 되어 있다. (pom.xml)
### 2. docker run 방법
docker run -d --name "nettyApiServer" -p 80:8080 -t skanmedia/adserver
case.1 백그라운드 모드
docker run -e "SPRING_PROFILES_ACTIVE=prod" -d --name "nettyApiServer" -p 80:8080 -t skanmedia/adserver
case.2 일반 실행
docker run -e "SPRING_PROFILES_ACTIVE=prod" --name "nettyApiServer" -p 80:8080 -t skanmedia/adserver
### 3. docker Start
docker start nettyApiServer
### 4. docker upload
docker login
docker tag skanmedia/adserver:latest localhost:5000/adverserver:0.1
docker push {IP/HOSTS}:{PORT}/adverserver:0.1
### 5. docker pull
docker pull {IP/HOSTS}:{PORT}/adverserver:0.1
---------------------------------------------------------------------------------------------
https://docs.microsoft.com/ko-kr/dotnet/standard/microservices-architecture/multi-container-microservice-net-applications/multi-container-applications-docker-compose
Docker Compose
다중 컨테이너 응용 프로그램 배포 , 필요에 따라 사용자 지정 Docker 이미지를 사용 할수도 있다.
기본적으로 배포하려는 각 컨테이너와 컨터이너에 대한 특정 특성을 정의 한다.
#볼륨 리스트 확인
> docker volume ls
#볼륨 상세 정보 확인
> docker volume inspect {volume_id or volume_name}
#볼륨 삭제
docker volume rm {volume_id or volume_name}
#도커 머신 내부 접속
> docker-machine ssh
# 도커컴포저 컨네이너 시작 중지
docker-compose start/stop
# 도커컴포저 컨네이너 빌드
> docker-compose build
(yml 값이 변경되면 build 명령으로 rebuild 한다)
# 도커컴포저 컨네이너 삭제후 재빌드
> docker-compose up -d --force-recreate --build
#기타
> docker-compose ps # lists all services (id, name)
> docker-compose stop <id/name> #this will stop only the selected container
> docker-compose rm <id/name> # this will remove the docker container permanently
> docker-compose up # builds/rebuilds all not already built container
# 컨테이너 아이피 확인 방법
> docker inspect -f "{{.NetworkSettings.IPAddress}}" CONTAINER_ID
> docker exec CONTAINER_ID ip addr show eth0
> docker exec -it CONTAINER_ID /bin/bash
'devops > docker' 카테고리의 다른 글
Dockerfile command / Attribute 명령어 설명 (0) | 2019.06.21 |
---|---|
docker 기본 명령어 및 설명 (1) | 2019.06.21 |
docker- compose [cassandra / mysql] (0) | 2019.06.05 |
docker mysql timezone 기준 시간대 변경 (0) | 2018.10.12 |
Docker 설치 & Docker Sonarqube 설치 (0) | 2017.09.04 |