기본 명령어 정리
docker run -it ubuntu:14.04
- 이미지를 받음과 동시에 컨테이너 생성 후
cli
진입
- 이미지를 받음과 동시에 컨테이너 생성 후
docker pull centos:7
- 이미지를 받는 또다른 방법
docker create -i -t --name mycentos centos:7
- 컨테이너 빌드
docker start name
- 컨테이너 실행
docker attach name
- 내부로 들어가기
- 내부 진입에서 빠져나오는 방법 2가지
exit
: 컨테이너 종료 후 빠져나옴Ctrl+P,Q
: 컨테이너를 종료 시키지 않고 내부에서만 빠져나옴
docker ps
- 실행중인 컨테이너 목록 확인
docker ps -a
- 전체 컨테이너 목록 확인
docker rename before after
- 컨테이너 이름 변경
docker rm name
- 컨테이너 삭제, 실행중인 컨테이너는 중지 후 삭제
docker rm -f name
- 실행중인 컨테이너 삭제
docker stop name
- 컨테이너 중지
컨테이너 애플리케이션 구축
docker run -i -t --name mywebserver -p 80:80 ubuntu:14.04
-p
: 컨테이너의 포트를 호스트의 포트와 바인딩[호스트의 포트]
:[컨테이너의 포트]
wordpress
+mysql
mysql
설치docker run -d --name wordpressdb -e MYSQL_ROOT_PASSWORD=password -e MYSQL_DATABASE=wordpress mysql:5.7
wordpress
설치docker run -d -e WORDPRESS_DB_PASSWORD=password --name wordpress --link wordpressdb:mysql -p 80 wordpress:wq
1
2
3
4
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
bbe628b7632a wordpress "docker-entrypoint.s…" 11 seconds ago Up 10 seconds 0.0.0.0:55318->80/tcp wordpress
af37fb7c59ea mysql:5.7 "docker-entrypoint.s…" About a minute ago Up About a minute 3306/tcp, 33060/tcp wordpressdb
b85463cd9339 ubuntu:14.04 "/bin/bash" 6 minutes ago Up 6 minutes 0.0.0.0:80->80/tcp mywebserver
docker port name
- 컨테이너의 연결 포트를 확인 가능
error establishing a database connection
참고 : 해당 도커 예제는
시작하세요! 도커/쿠버네티스
책으로 진행.mysql
,wordpress
,ubuntu
설치하여 진행중 최종 wordpress 실행시error establishing a database connection
에러가 발생.
wordperss
내부로 진입하여wp-config.php
파일 확인 결과 설정된db
설정이 잘못되어 수정후 진행(wordpressdb 정보로)docker exec -it wordpress /bin/bash
- 추후 컨테이너로 올릴때에는
docker run -d -e WORDPRESS_DB_NAME=wordpress -e WORDPRESS_DB_USER=root -e WORDPRESS_DB_PASSWORD=password --name wordpress_hostvolume --link wordpressdb_hostvolume:mysql -p 80 wordpress
- 해당 설정 사용, DB 설정에 필요한 환경변수를 모두 넣어주어서 실행
docker volume, 호스트 볼륨 공유 방식
- 위에서 생성된
wordpress
와database
의 데이터들은 컨테이너 삭제시 없어진다는 단점이 있음. 어떻게 하면 좋을까?volume
사용.
docker run -d --name wordpressdb_hostvolume -e MYSQL_ROOT_PASSWORD=password -e MYSQL_DATABASE=wordpress -v E:\docker\volume:/var/lib/mysql mysql:5.7
-v /home/wordpress_db:/var/lib/mysql mysql:5.7
- 호스트의 /home/wordpress_db 디렉터리와 컨테이너의 /var/lib/mysql 디렉터리를 공유.
- 책에서는
/home/wordpress_db
폴더를 생성하였지만 실습에서는E:\docker\volume
경로에 볼륨을 지정.- 파일 확인
- 동기화 되는 개념이 아니라 완전 같은 디렉토리를 바라보게 된다!
-v
옵션을 통한 호스트 볼륨 공유는 호스트의 디렉터리를 컨테이너의 디렉터리에 마운트하는 개념.