Docker
편집하기
Sam
(
토론
|
기여
)
님의 2022년 10월 17일 (월) 18:10 판
(
→개요
)
(
차이
)
← 이전 판
|
최신판
(
차이
) |
다음 판 →
(
차이
)
둘러보기로 이동
검색으로 이동
경고: 이 문서의 오래된 판을 편집하고 있습니다.
이것을 게시하면, 이 판 이후로 바뀐 모든 편집이 사라집니다.
경고:
로그인하지 않았습니다. 편집을 하면 IP 주소가 공개되게 됩니다.
로그인
하거나
계정을 생성하면
편집자가 사용자 이름으로 기록되고, 다른 장점도 있습니다.
스팸 방지 검사입니다. 이것을 입력하지
마세요
!
=개요= 반가상화 기술. == 설치 == == 윈도우 == {| class="wikitable" !OS !설명 !방법 |- |윈도우10 이상 |도커 데스크톱을 발표. 윈도우 10 이상에서만 가능하다. {| class="wikitable" !조건 !설명 !비고 |- |가상화 지원 |작업관리자에서>성능>CPU>가상화에 '사용'이라고 뜨면 만족. |바이오스 설정 등으로 가상화를 사용하게끔 할 수 있다. |- |WSL2 설치 |도커의 설치를 마치면 윈도우 버전에 따라 WSL2 설치 메시지가 뜬다. 메시지를 따라 가면 문제 없이 됨. |https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi |} |https://docs.docker.com/desktop/windows/install/ |} ==우분투== {| class="wikitable" !과정 !설명 !방법 |- |설치 | #업데이트 #HTTPS를 통해 패키지를 사용할 수 있게끔 설치. #도커 저장소용 GPG 키를 추가. #APT 소스에 도커 저장소 추가. #적용사항 반영. #도커 설치. | #sudo apt update #sudo apt install -y apt-transport-https ca-certificates curl software-properties-common #curl -fsSL <nowiki>https://download.docker.com/linux/ubuntu/gpg</nowiki> | sudo apt-key add - #sudo add-apt-repository "deb [arch=amd64] <nowiki>https://download.docker.com/linux/ubuntu</nowiki> bionic stable" #sudo apt update #sudo apt install -y docker-ce |- |확인 | #이것저것 뜨면 설치가 된 것. #active가 뜬다면 서비스 가동중. |docker --version docker-compose --version #apt-cache policy docker-ce 혹은 sudo systemctl status docker #sudo systemctl status docker |- |유저추가 |도커 관련 명령어를 사용할 때마다 sudo를 사용해야 한다. 이를 방지하기 위한 과정. 이거 적용하고 sudo service docker restart 재시작. 그리고 유저도 로그아웃했다 들어와야 한다. |sudo usermod -aG docker $USER |- |권한부여 |소켓파일의 권한을 이용할 수 있게 소유자를 docker그룹으로 바꾼다. 이걸 안하면 다음과 같은 에러가 난다.<ref>Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock:.......</ref> |sudo chown root:docker /var/run/docker.sock |- |자동구동 |부팅 시에 자동 구동되게끔. |service docker start systemctl enable docker |} == 이외 설치 == {| class="wikitable" !과정 !설명 !방법 |- |포테이너 설치 (선택사항) |아무래도 GUI 환경보단 직관적인 게 좋지...? 이후 대충 localhost로 접속해서 계정 생성하고 사용하면 된다. --restart=always 옵션은 docker를 재시작 해도 자동으로 구동하라는 옵션. |sudo docker run -d -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data --restart=always portainer/portainer |} =기본 사용= ===기본설정=== {| class="wikitable" !과정 !설명 !방법 |- |도커파일 저장경로 확인 |공간이 넉넉한 파티션에 저장하는 편이 옳다. | |- |부팅 시 컨테이너 자동실행 | |<code>docker update --restart=always <container-id></code> |- |부팅 시 컨테이너 자동실행 |서버가 꺼졌다 다시 시작될 때 컨테이너가 자동 시작되게끔. rc.local 안에 다음의 내용을 담아준다.<syntaxhighlight lang="bash"> #!/bin/bash docker start $(docker ps -a -q) # 모든 컨테이너 실행. </syntaxhighlight> |vi /etc/rc.local chmod 755 /etc/rc.local systemctl enable rc-local.service systemctl start rc-local.service |} ==이미지 관련== {| class="wikitable" !과정 !설명 !방법 |- |이미지 확인 |이미지리스트를 본다. 용량과 태그, ID, 생성날짜, 크기를 볼 수 있다. |docker images |- |이미지 삭제 |이미지에서 파생된 컨테이너를 삭제해야 삭제할 수 있다. 컨테이너가 있어 삭제가 안될 경우, -f 옵션으로 컨테이너까지 삭제. |docker rmi 이미지:태그 |- |모든 이미지 삭제 | |docker rmi $(docker images -q) |- |이미지 히스토리 |이미지의 변경 히스토리를 조회한다. |docker history 이미지:태그 |- | | | |} ==컨테이너 관련== ===확인=== {| class="wikitable" !과정 !설명 !방법 |- |현재 실행 컨테이너 확인 | -a 옵션을 붙이면 종료된 컨테이너도 볼 수 있다. |docker ps |}<br /> {| class="wikitable" !과정 !설명 !방법 |- |생성 |가능하면 옵션들은 이미지 이름 앞에 두는 편이 좋다. {| class="wikitable" !옵션 !설명 |- | -v 호스트경로:컨테이너경로 |호스트의 파일을 컨테이너에 연결한다.(-v옵션 여러 개 사용 가능) |- | --expose 포트번호 |다른 컨테이너에서 접속할 수 있는 포트번호를 설정한다. |- | --link 컨테이너:별칭 |컨테이너를 다른 컨테이너와 연결해서 실행한다.(연결할 것이 실행되어 있어야 함) 호스트파일에 IP주소가 설정되어 별칭으로 접속할 수 있다. /별칭:포트번호/연결한컨테이너하위디렉터리 (포트번호는 docker ps로 확인 가능) |- | -p 호스트포트:컨테이너포트 |포트를 연결한다. |- | -d |데몬으로 실행(백그라운드에서 실행) |- |<code>--privileged</code> |모든 기능을 사용할 수 있게끔, 권한을 부여한다는 의미. IP주소 등 네트워크 설정을 만질 수 있다. |- | -e |환경변수 설정. 보통 다음과 같이 UTF-8로 인코딩함을 알려주기 위해 사용. -e LANG=ko_KR.UTF-8 |} 로컬에 이미지가 없으면 자동으로 이미지를 받아온다. |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를 입력하게 된다. <code>docker push 계정/이미지이름</code>을 입력하면 도커허브에 올라간다. | |} {| class="wikitable" !과정 !설명 !방법 |- |호스트에서 컨테이너로 |호스트의 파일을 컨테이너로 옮긴다. |docker cp 호스트경로 컨테이너:컨테이너경로 |- |컨테이너에서 호스트로 |컨테이너의 파일을 호스트로 옮긴다. |docker cp 컨테이너:컨테이너경로 호스트경로 |} ===컨테이너를 이미지화=== 보통 컨테이너를 돌리고 있는데 여기에 포트를 추가하거나 볼륨을 추가하고 싶을 때 거쳐야 한다. <br /> {| class="wikitable" !과정 !설명 !방법 |- |이미지로 저장 |변경사항을 이미지로 생성한다. {| class="wikitable" !옵션 !설명 |- | -a, --author="생성자" |생성자 정보를 기입한다. |- | -m, --message="코멘트" |코멘트를 단다. |- | | |} <code>docker images</code>로 확인한다. 예시) docker commit -a "id8436" -m "JHwiki" 94b5dde4a907 id8436/jhwiki |docker commit 옵션 컨테이너 이미지:태그 이미지, 태그는 소문자로만 가능하다. |}<br /> ==저장공간 사용== {| class="wikitable" !과정 !설명 !방법 |- |이미지 올리기 |레지스트리 서버에 이미지를 올린다. 192.000.000.000:포트번호 형태로 개인저장소에 올라간 이미지를 받아올 수도 있다. |docker push |- |이미지 받기 |서버에서 이미지를 받는다. localhost:포트번호 형식으로 개인저장소에 올릴 수도 있다. |docker pull 레지스트리URL/이미지:태그 |} =다양한 활용= ===포트, 볼륨 추가하기=== 기존 사용중인 컨테이너에 포트, 볼륨을 추가하려면 새로 만드는 방법밖에 없다. #컨테이너를 이미지로 만든다.(방법은 기본 사용법 참조) #기존 컨테이너를 지운다. #필요한 포트, 볼륨옵션을 주어 다시 실행. ==컨테이너에 접속하기== 컨테이너 내부로 접속한다. docker exec -it 컨테이너명 /bin/bash [[분류:도커]] <references />
요약:
학교의 모든 지식. SMwiki에서의 모든 기여는 크리에이티브 커먼즈 저작자표시-비영리-동일조건변경허락 라이선스로 배포된다는 점을 유의해 주세요(자세한 내용에 대해서는
학교의 모든 지식. SMwiki:저작권
문서를 읽어주세요). 만약 여기에 동의하지 않는다면 문서를 저장하지 말아 주세요.
또한, 직접 작성했거나 퍼블릭 도메인과 같은 자유 문서에서 가져왔다는 것을 보증해야 합니다.
저작권이 있는 내용을 허가 없이 저장하지 마세요!
취소
편집 도움말
(새 창에서 열림)
이 문서에서 사용한 틀:
틀:Docker
(
편집
)
둘러보기 메뉴
개인 도구
로그인하지 않음
토론
기여
로그인
이름공간
문서
토론
한국어
보기
읽기
편집
원본 편집
역사 보기
더 보기
검색
둘러보기
대문
최근 바뀜
임의의 문서로
미디어위키 도움말
도구
여기를 가리키는 문서
가리키는 글의 최근 바뀜
특수 문서 목록
문서 정보