Docker 처음 사용하기
Docker가 무엇인가?
리눅스 컨테이너 기술을 기반으로 만든 오픈소스 소프트웨어 플랫폼
Container가 무엇인가?
리눅스에서 cgroup과 namespace 기술을 이용하여 만든 프로세스 격리 기술
Docker 설치
?
Docker 서비스 시작
systemctl enable docker
systemctl start docker
Docker 기본 명령어
# docker 정보 확인
docker info
# container 확인
docker ps -a
# container 실행
docker run hello-world
docker run -it ubuntu bash
# docker image 목록
docker images
# docker registry에서 image 가져오기
docker pull <name>
# docker registry로 image 올리기
docker push <name>
# container image에 tag 붙이기
docker tag <source_name> <target_tag_name>
# container 제거
docker rm <container_id>
(container_id는 "docker ps -a"로부터 얻을 수 있다.)
# container image 삭제
docker rmi <image_name>
Docker 사용
# Web service 실행하기
docker pull httpd
(docker images 명령으로 image가 local에 download 됐는지 확인)
docker run httpd
# docker를 background로 실행
docker run -d httpd
("docker ps -a"로 실행 확인)
# network 연결
docker run -d -p 80:80 httpd
(확인: curl localhost 또는 web browser)
웹 페이지 내용 변경은 어디서 할까?
local machine or container?
# container shell 접속
docker exec -ti <container_id> /bin/bash
(root@<container_id>:# cd /usr/local/apache2/htdocs; echo "<html><body><h1>Docker container test</h1></body></html>" > index.html; exit;)
(curl localhost)
Docker build
sample "Dockerfile"
# registry에서 image를 가져온다.
FROM httpd:latest
MAINTAINER sangkyu <sangkyu@kakao.com>
# container 부팅 후 실행하는 명령
RUN echo "<html><body><h1>Docker container test</h1></body></html>
# host에 연결하는 포트
EXPOSE 80
# docker image build
docker build -t myhttpd .
(docker images로 확인)
docker run -d -p 80:80 --name=myweb myhttpd
(docker ps; curl localhost;로 확인)
Docker 통합 관리
# docker-compose 설치
?
# sample docker-compose.yml
version: '3.3'
services:
db:
image: mysql:5.7
volumes:
- /var/lib/mysql:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: passwordpress
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpress
wordpress:
depends_on:
- db
image: wordpress:latest
ports:
- "8000:80"
restart: always
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: wordpress
(원본: https://docs.docker.com/compose/overview)
# 빌드 및 실행
docker-compose -f docker-compose.yml up -d
# 확인
docker-compose ps
# Browser 접속
localhost:8000/wp-admin