일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- Access denied for user ''@'localhost'
- 도커파일
- spring framework
- Docker
- DB
- install
- Dockerfile
- root
- 설치
- jar배포
- ps
- mac mariadb
- sts
- docker container
- 도커
- springboot jar
- mysql
- sudo
- react map error
- 파일 시스템
- systemd
- brew install mariadb
- jar deploy
- 관리
- mysql error
- map is not a function
- jdk
- springboot
- join
- Oracle
- Today
- Total
Yoon.s
Docker 시작하기[2] -Ubuntu편 <컨테이너 생성, 목록, 접속> 본문
2020/07/16 - [분류 전체보기] - Docker 시작하기 - Ubuntu편 <도커 설치, 이미지>
ubuntu에 도커를 설치하시고 이번 내용을 따라하시길 바랍니다!!
Docker Container
정의 : Docker image를 실행한 상태
특징 : 하나의 이미지로 여러 개의 container 생성
1. 컨테이너 생성
docker run <옵션><이미지><실행 app>
옵션.
-i(interactive), -t(terminal mode), -d(daemon)형으로 백그라운드에서 동작
--name 컨테이너 이름
--rm 컨테이너 삭제
-v host_dir : container_dir host.dir.에 data 저장
- docker run -itd --name ex ubuntu /bin/bash : 백그라운드에서 동작하도록 하고, ubnutu 이미지를 가지고 bash 셸에서 컨테이너 이름은 ex로 해서 컨테이너 생성
2. 컨테이너 목록
docker ps <옵션>
: 기본 출력은 실행 중인 컨테이너만 출력
옵션.
-a : 정지된 컨테이너 포함
-q : 컨테이너 id만 보여줌
↑ 위의 출력 결과에서 ex이라는 컨테이너를 만들었는데 docker ps로 목록을 확인했을 때 출력되지 않았습니다.
그 이유는 생성될 때 별도로 바로 실행하라는 옵션을 주지 않았기 때문에 docker ps 의 경우 실행중인 컨테이너만 출력되고 있고, ps -a 명령을 줘야 정지(Exited)된 컨테이너를 포함한 결과를 출력할 수 있습니다!!
3. 컨테이너 시작
docker [start|restart|stop|...] <컨테이너 id | name>
- start : 컨테이너 시작
- restart : 컨테이너 재시작
- stop : 컨테이너 종료
- pause : 일시 정지
- unpause : 일시 정지 해제
↑ start 했지만 왜 exited 상태인가?
ex를 만들때 옵션 -itd를 주지 않았기 때문에 실행과 동시에 끝나는 컨테이너이다! (ps 목록에도 당연히 안나타남)
4. 컨테이너 제거
docker rm <컨테이너 id | name>
- rm : 정지된 컨테이너가 제거
↑ 삭제할 때는 해당 컨테이너가 중지된 상태이어야 삭제가 가능합니다!! (up상태면 삭제 불가능)
5. 컨테이너 접속
docker attach <컨테이너 id | name>
↑생성하고 바로 실행되도록 하기위해,
컨테이너 생성(run)할 때 -itd를 추가하여 백그라운드에서 실행되도록 합니다!
그 후 docker attach를 통해 컨테이너에 접속합니다!! 접속한 상태에서는 docker명령이 적용되지 않아용
exit를 실행하여 컨테이너를 종료합니다. (이때, 컨테이너가 종료되면서 접속도 해제됩니다.)
하지만, 컨테이너가 종료되지 않고 접속 해제하기 위해서는
^P (Ctrl+P) -> ^Q (Ctrl+Q) 를 연달아 눌러줍니다!! (백그라운드에서 진행하는 것처럼)
docker run -it <이미지><실행 app>
-d 옵션이 없기 때문에 포어그라운드에서 컨테이너가 생성되면서 그 안의 내용이 진행중이다.
그렇기에 docker 명령어들은 적용되지 않고 ps 등의 명령만 실행 가능
exit 실행해 컨테이너 종료하면 접속도 해제된다.
위와 동일하게 컨테이너가 종료되지 않고 접속 해제하기 위해서는
^P (Ctrl+P) -> ^Q (Ctrl+Q) 를 연달아 눌러줍니다!!
docker exec <컨테이너 id | name><command><argument>
: 위의 2방식과는 다르게 컨테이너에 접속 없이 명령을 실행하기 때문에 가장 많이 사용하는 방법입니다!
↑ 컨테이너에 접속 없이 host에서 컨테이너에 명령을 실행 (대신, 컨테이너는 실행중이어야 함)
백그라운드에서 ex2가 실행중이기 때문에 ps명령을 보면, 현재 login(hostname)으로 실행중이다.
또한 접속은 하였지만 백그라운드로 빠져나온 상태이기에 docker명령이 적용되는 것을 확인 할 수 있다.
'인프라 > Docker' 카테고리의 다른 글
Docker container [1] 이미지 전송/복사 (0) | 2020.07.22 |
---|---|
Dockerfile [3] VOLUME (0) | 2020.07.21 |
Dockerfile[2] COPY, ADD, RUN, USER (0) | 2020.07.21 |
Dockerfile [1] 구성요소, FROM, CMD, ENTRYPOINT, ENV (0) | 2020.07.17 |
Docker 시작하기 - Ubuntu편 <도커 설치, 이미지> (0) | 2020.07.16 |