Docker: 두 판 사이의 차이
편집 요약 없음 |
편집 요약 없음 |
||
29번째 줄: | 29번째 줄: | ||
|https://docs.docker.com/desktop/windows/install/ | |https://docs.docker.com/desktop/windows/install/ | ||
|} | |} | ||
설치 후엔 CMD를 통해 리눅스에서와 동일하게 사용할 수 있다. | |||
Docker Desktop을 통해 포테이너와 유사한 UI를 제공받는다. | |||
==우분투== | ==우분투== | ||
{| class="wikitable" | {| class="wikitable" |
2022년 10월 17일 (월) 18:32 판
개요
반가상화 기술.
설치
윈도우
OS | 설명 | 방법 | |||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
윈도우10 이상 | 도커 데스크톱을 발표. 윈도우 10 이상에서만 가능하다.
옛날에 그 어렵던 것이 이렇게 간단하게 된다. |
https://docs.docker.com/desktop/windows/install/ |
설치 후엔 CMD를 통해 리눅스에서와 동일하게 사용할 수 있다.
Docker Desktop을 통해 포테이너와 유사한 UI를 제공받는다.
우분투
과정 | 설명 | 방법 |
---|---|---|
설치 |
|
|
확인 |
|
docker --version
docker-compose --version
|
유저추가 | 도커 관련 명령어를 사용할 때마다 sudo를 사용해야 한다. 이를 방지하기 위한 과정.
이거 적용하고 sudo service docker restart 재시작. 그리고 유저도 로그아웃했다 들어와야 한다. |
sudo usermod -aG docker $USER |
권한부여 | 소켓파일의 권한을 이용할 수 있게 소유자를 docker그룹으로 바꾼다.
이걸 안하면 다음과 같은 에러가 난다.[1] |
sudo chown root:docker /var/run/docker.sock |
자동구동 | 부팅 시에 자동 구동되게끔. | service docker start
systemctl enable docker |
이외 설치
과정 | 설명 | 방법 |
---|---|---|
포테이너 설치
(선택사항) |
아무래도 GUI 환경보단 직관적인 게 좋지...?
이후 대충 localhost로 접속해서 계정 생성하고 사용하면 된다.
|
sudo docker run -d -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data --restart=always portainer/portainer |
기본 사용
기본설정
과정 | 설명 | 방법 |
---|---|---|
도커파일 저장경로 확인 | 공간이 넉넉한 파티션에 저장하는 편이 옳다. | |
부팅 시 컨테이너 자동실행 | docker update --restart=always <container-id>
| |
부팅 시 컨테이너 자동실행 | 서버가 꺼졌다 다시 시작될 때 컨테이너가 자동 시작되게끔.
rc.local 안에 다음의 내용을 담아준다.#!/bin/bash
docker start $(docker ps -a -q) # 모든 컨테이너 실행.
|
vi /etc/rc.local
chmod 755 /etc/rc.local systemctl enable rc-local.service systemctl start rc-local.service |
이미지 관련
과정 | 설명 | 방법 |
---|---|---|
이미지 확인 | 이미지리스트를 본다.
용량과 태그, ID, 생성날짜, 크기를 볼 수 있다. |
docker images |
이미지 삭제 | 이미지에서 파생된 컨테이너를 삭제해야 삭제할 수 있다.
컨테이너가 있어 삭제가 안될 경우, -f 옵션으로 컨테이너까지 삭제. |
docker rmi 이미지:태그 |
모든 이미지 삭제 | docker rmi $(docker images -q) | |
이미지 히스토리 | 이미지의 변경 히스토리를 조회한다. | docker history 이미지:태그 |
컨테이너 관련
확인
과정 | 설명 | 방법 |
---|---|---|
현재 실행 컨테이너 확인 | -a 옵션을 붙이면 종료된 컨테이너도 볼 수 있다. | docker ps |
과정 | 설명 | 방법 | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
생성 | 가능하면 옵션들은 이미지 이름 앞에 두는 편이 좋다.
로컬에 이미지가 없으면 자동으로 이미지를 받아온다. |
docker run 옵션 이미지이름:태그 | ||||||||||||||||
실행 | 이미 만들어진 컨테이너가 종료되었을 때 다시 실행한다. | docker start 컨테이너 | ||||||||||||||||
종료 | 도커를 재시작 할 때 도커 내부에서 서비스도 함께 종료된다.
systemctl apache2 start, service start mysql와 같은 명령으로 서비스를 실행해주어야 한다. |
docker stop 컨테이너 | ||||||||||||||||
컨테이너에서 파일 꺼내기 | 컨테이너에서 파일을 꺼낸다. | docker cp 컨테이너:경로 호스트경로
docker cp hello:/etc/file.conf ./ # 현재경로로 컨테이너의 파일을 꺼낸다. | ||||||||||||||||
변경파일 확인 | 컨테이너가 실행되며 변경된 파일목록 출력.
기준은 컨테이너를 생성한 이미지 기준. A: 추가된 파일 C: 변경된 파일 D: 삭제된 파일 |
docker diff 컨테이너 | ||||||||||||||||
도커허브에 올리기 | docker login 을 입력하면 ID, PW를 입력하게 된다.
|
과정 | 설명 | 방법 |
---|---|---|
호스트에서 컨테이너로 | 호스트의 파일을 컨테이너로 옮긴다. | docker cp 호스트경로 컨테이너:컨테이너경로 |
컨테이너에서 호스트로 | 컨테이너의 파일을 호스트로 옮긴다. | docker cp 컨테이너:컨테이너경로 호스트경로 |
컨테이너를 이미지화
보통 컨테이너를 돌리고 있는데 여기에 포트를 추가하거나 볼륨을 추가하고 싶을 때 거쳐야 한다.
과정 | 설명 | 방법 | ||||||||
---|---|---|---|---|---|---|---|---|---|---|
이미지로 저장 | 변경사항을 이미지로 생성한다.
예시) docker commit -a "id8436" -m "JHwiki" 94b5dde4a907 id8436/jhwiki |
docker commit 옵션 컨테이너 이미지:태그
이미지, 태그는 소문자로만 가능하다. |
저장공간 사용
과정 | 설명 | 방법 |
---|---|---|
이미지 올리기 | 레지스트리 서버에 이미지를 올린다.
192.000.000.000:포트번호 형태로 개인저장소에 올라간 이미지를 받아올 수도 있다. |
docker push |
이미지 받기 | 서버에서 이미지를 받는다.
localhost:포트번호 형식으로 개인저장소에 올릴 수도 있다. |
docker pull 레지스트리URL/이미지:태그 |
다양한 활용
포트, 볼륨 추가하기
기존 사용중인 컨테이너에 포트, 볼륨을 추가하려면 새로 만드는 방법밖에 없다.
- 컨테이너를 이미지로 만든다.(방법은 기본 사용법 참조)
- 기존 컨테이너를 지운다.
- 필요한 포트, 볼륨옵션을 주어 다시 실행.
컨테이너에 접속하기
컨테이너 내부로 접속한다.
docker exec -it 컨테이너명 /bin/bash
- ↑ Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock:.......