Virtual environment/Docker

docker 기본명령어

D4tai1 2018. 7. 16.

아래 명령어 = 컨테이너 이미지를 가져오고 컨테어너 제어 및 상태를 확인하기 위해 알아야 하는 명령어

 

 

 

$ docker run 명령어 = 이미지를 다운받고 이미지에 맞는 컨테이너를 생성하고 실행 후 시작까지 하는 명령어

 

 

시연

 

1. MYSQL 이미지 다운로드 및 생성 후 실행

 

 

2. 컨테이너 생성 시 -v 옵션을 주어 host의 /home에 info_database가 있는지 확인

 

 

3. exec 명령어

-d로 생성하여 detached 모드로 생성되어 백그라운드에서 실행되도록 설정

즉, shell과 입출력 옵션을 주지 않았으므로 exec 명령어를 이용하여 입출력이 가능하도록 shell 실행

 

# mysql -u root -p

명령어로 MYSQL에 접속시도 후

# password

컨테이너 생성 시 MYSQL_ROOT_PASSWORD에 입력한 환경변수의 값을 입력하여 MYSQL에 접속 

> show databases;  명령어로 컨테이너 생성 시 MYSQL_DATABASE에 입력한 데이터베이스가 있는지 확인

 

 

 

4. 컨테이너 생성 시 -v 옵션 확인

컨테이너 내부에서

# ls /var/lib/mysql

경로에 있는 파일과 호스트의

$ /home/info_database

경로에 있는 파일비교

 

 

 

5. info_db라는 컨테이너가 실행 중인지 확인

$ sudo docker ps | grep info*

위 명령어 및 아래 사진의 명령어로 확인

 

 

6. 컨테이너 생성 시 -e 옵션 환경변수 확인

MYSQL서비스를 하는 info_db라는 이름을 가진 컨테이너의 shell 띄우기

컨테이너 내부에서

# echo $MYSQL_ROOT_PASSWORD

명령어로 MYSQL의 root계정 비밀번호를 확인

 

 

7. MYSQL을 사용할 webSite 컨테이너 생성

호스트의 주소의 9999 포트로 접속하면 Web Server 컨테이너의 80번 포트로 접속가능

컨테이너 이름은 webSite

--link 옵션으로 info_db 컨테이너의 주소를 member라는 alias로 저장

ubuntu:16.04 버전 이미지로 생성

 

 

 

8. 컨테이너에서 사용할 명령어

컨테이너는 생성 시 대부분의 기능이 없기 때문에 필요한 패키지는 설치해야 함

 

ping 명령어를 사용할 수 있도록 아래와 같이 설치

 

컨테이너의 ip를 확인하기 위한 ifconfig 명령어를 사용할 수 있도록 아래와 같이 설치

 

alias를 member로 지정한 info_db 컨테이너와 연결 확인

webSite 컨테이너의 ip 확인 

 

9. webSite 컨테이너에서 서비스 할 패키지 설치

 

 

10. webSite 컨테이너의 apache2 Web Service 시작

 

 

11. 호스트의 ip 확인

 

 

12. 같은 네트워크에 있는 클라이언트에서 host의 ip에 webSite컨테이너와 연결된 9999포트 지정 후 접속

 

 

+ 컨테이너 이름이 오타로 인해 잘못기입된 경우 아래와 같이 수정가능

$ docker rename [원래 컨테이너 명] [수정할 컨테이너 명]

 

+ -v옵션으로 볼륨을 공유하는 이유

컨테이너는 추가 및 삭제가 매우 쉽기 때문에 실수로 인해 지워질 경우 복구가 불가능하기 때문에

컨테이너는 삭제되더라도 데이터는 보존하기위해 호스트와 공유 

디렉터리간 동기화되는 것이 아니고 같은 디렉터리 사용.

 

다른 방법인 볼륨컨테이너를 사용하거나 볼륨 도커는

내용이 길어져서 다음 장에 작성

댓글