sitelink1 | https://blog.naver.com/pjt3591oo/221350092204 |
---|---|
sitelink2 | |
sitelink3 | |
extra_vars6 |
$ docker pull - 이미지를 받아온다
- syntax : $ docker pull 이미지:태그
pull은 이미지를 받아올 때 사용한다(git에서 pull과 같다)
태그는 버전을 의미한다, 태그는 생략가능하며 생략할 경우 latest가 기본값이 된다
<컨테이너 다운로드 예제>
$ docker pull centos
$ docker images -
$ docker run - 컨테이너 생성 및 실행
- syntax : $ docker run [OPTIONS] IMAGE[:TAG|@DIGEST] [COMMAND] [ARG...]
- ex> docker run 이미지:태그
run 옵션을 이용하면 이미지를 통해 컨테이너 생성이 가능
태그는 버전을 의미하며 생략시 latest가 기본값이다
run에 대한 자세한 옵션은 "$ docker run --help" 명령어로 살펴볼 수 있다
<주요 옵션 목록>
-i -t 해당 컨테이너에 접속해서 명령어를 사용해야 된다면 옵션을 주어야 한다
‑d detached mode 흔히 말하는 백그라운드 모드
‑p 호스트와 컨테이너의 포트를 연결 (포워딩)
‑v 호스트와 컨테이너의 디렉토리를 연결 (마운트하여 저장소를 공유)
‑e 컨테이너 내에서 사용할 환경변수 설정
‑‑name 컨테이너 이름 설정
‑‑rm 프로세스 종료시 컨테이너 자동 제거
‑it ‑i와 ‑t를 동시에 사용한 것으로 해당 컨테이너에 접속해서 터미널 입력 명령어 사용을 위한 옵션
‑‑network 네트워크 연결
<컨테이너 실행 예제>
$ docker run -i -t --name test.container ubuntu:latest /bin/bash
> ubuntu:latest를 이용하여 컨테이너를 생성하는것을 의미
> 컨테이너가 생성되면 /bin/bash를 실행하여 컨테이너의 bash쉘로 진입
> --name에서 test.container를 주었기 때문에 test.container 이름으로 생성
$ docker run -i -t --name test.container -p 3000:3000 -e TEST_ENV=10 -v /Users/bagjeongtae/Desktop/docker_test/:/home ubuntu:latest /bin/bash
> -e는 환경변수를 설정하는 옵션
> -v는 호스트 계정의 File OR Directory를 공유하는 옵션
> -p는 포트포워딩을 의미합니다. 호스트로 들어온 포트를 컨테이너가 몇번 포트로 받을지를 설정
> run을 이용하여 컨테이너를 생성할 때 해당 이미지가 없더라고 에러가 발생하지 않고 이미지를 pull한 후 컨테이너를 생성
$ docker ps
run을 이용하여 컨테이너를 생성 후 ps -a 옵션을 통해서 생성된 모든 컨테이너를 볼 수 있다
예> $ docker ps -a
$ docker start
start는 단순히 컨테이너 상태를 up으로 만들어서 실행하는 것을 의미 (아직 해당 컨테이너한 것이 아님)
$ docker restart
컨테이너를 다시 시작
$ docker stop
stop은 컨테이너 상태를 exited로 만듬
$ docker rm - 이미지를 지울 때 사용
$ docker attach
attach를 이용하면 해당 컨테이너에(started) 접속한다
예> $ docker attach test.container
$ docker exec
exec를 이용하면 원하는 해당 컨테이너의(started) 프로그램을 실행할 수 있다
하지만 /bin/bash 같은 경우는 명령어를 주고받아야 하기 때문에 -i -t 옵션을 줘야 정상적으로 실행가능
예> $ docker exec -t -i test.container /bin/bash
※ attach와 exec 차이점
attach는 하나의 세션만 생성 가능하다
즉, 다수가 한 컨테이너를 attach로 접속하면 하나의 명령어만 실행된다
쉽게 설명하면 터미널을 2개를 띄우고 2개의 터미널에서 attach를 이용하여 컨테이너를 접속했다고 가정해본다
첫번째 터미널에서 cd /var을 하게되면 두번째 터미널도 /var로 이동된다
exec는 /bin/bash를 실행한 후 attach 처럼 접속을 하더라도 모든 세션이 독립적으로 동작하게 된다
exec는 동작중인 컨테이너(STATUS가 UP 상태를 의미)에서 프로세스(프로그램)의 실행 명령어이다