|
|
| (사용자 2명의 중간 판 24개는 보이지 않습니다) |
| 1번째 줄: |
1번째 줄: |
| ==개요==
| | {{Docker}} |
| | |
| | =개요= |
| 반가상화 기술. | | 반가상화 기술. |
| <br />
| |
|
| |
| =설치=
| |
|
| |
|
| ==리눅스에서 설치== | | =기본 사용= |
|
| |
|
| ===우분투=== | | ===기본설정=== |
| {| class="wikitable" | | {| class="wikitable" |
| !과정 | | !과정 |
| 13번째 줄: |
12번째 줄: |
| !방법 | | !방법 |
| |- | | |- |
| |설치 | | |도커파일 저장경로 확인 |
| | | | |공간이 넉넉한 파티션에 저장하는 편이 옳다. |
| #업데이트
| |
| #HTTPS를 통해 패키지를 사용할 수 있게끔 설치.
| |
| #도커 저장소용 GPG 키를 추가.
| |
| #APT 소스에 도커 저장소 추가.
| |
| #도커 설치.
| |
| | | | | |
| #sudo apt update
| |
| #sudo apt install 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 install docker-ce
| |
| |- | | |- |
| |확인 | | |부팅 시 컨테이너 자동실행 |
| |
| |
| #이것저것 뜨면 설치가 된 것.
| |
| #active가 뜬다면 서비스 가동중.
| |
| | | | | |
| #apt-cache policy docker-ce 혹은 sudo systemctl status docker
| | |<code>docker update --restart=always <container-id></code> |
| #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>
| | rc.local 안에 다음의 내용을 담아준다.<syntaxhighlight lang="bash"> |
| |sudo chown root:docker /var/run/docker.sock
| | #!/bin/bash |
| |}
| |
| | |
| =기초 사용=
| |
|
| |
|
| ==이미지 관련==
| | docker start $(docker ps -a -q) # 모든 컨테이너 실행. |
| | </syntaxhighlight>다른 방법 |
| {| class="wikitable" | | {| class="wikitable" |
| !과정 | | !과정 |
| !설명 | | !설명 |
| !방법
| |
| |- | | |- |
| |이미지 확인 | | |systemd 서비스 파일 생성 |
| |이미지리스트를 본다. | | |아래 예시처럼 system 디렉토리 안에 .service 파일을 생성한다. |
| | <code>sudo vim /etc/systemd/system/mydocker.service</code> |
| | |- |
| | |내용 작성 |
| | |<syntaxhighlight lang="bash"> |
| | [Unit] |
| | Description=My Docker Container |
| | Requires=docker.service |
| | After=docker.service |
| | |
| | [Service] |
| | Restart=always |
| | ExecStart=/usr/bin/docker start -a 컨테이너이름 |
| | ExecStop=/usr/bin/docker stop -t 2 컨테이너이름 |
|
| |
|
| 용량과 태그, ID, 생성날짜, 크기를 볼 수 있다.
| | [Install] |
| |docker images
| | WantedBy=multi-user.target |
| |-
| | </syntaxhighlight> |
| |이미지 삭제
| |
| |
| |
| |docker rmi 이미지:태그
| |
| |-
| |
| |모든 이미지 삭제
| |
| |
| |
| |docker rmi $(docker images -q)
| |
| |-
| |
| |이미지 히스토리
| |
| |이미지의 변경 히스토리를 조회한다.
| |
| |docker history 이미지:태그
| |
| |-
| |
| |
| |
| |
| |
| |
| |
| |} | | |} |
| | |vi /etc/rc.local |
| | chmod 755 /etc/rc.local |
| | |
| | systemctl enable rc-local.service |
|
| |
|
| == 컨테이너 관련 ==
| | systemctl start rc-local.service |
| {| class="wikitable"
| |
| !과정
| |
| !설명
| |
| !방법
| |
| |-
| |
| |실행
| |
| |
| |
| {| class="wikitable"
| |
| !옵션
| |
| !설명
| |
| |-
| |
| | -v 호스트경로:컨테이너경로
| |
| |호스트의 파일을 컨테이너에 연결한다.(-v옵션 여러 개 사용 가능)
| |
| |-
| |
| | -link
| |
| |
| |
| |-
| |
| | -p 호스트포트:컨테이너포트
| |
| |포트를 연결한다.
| |
| |} | | |} |
| 로컬에 이미지가 없으면 자동으로 이미지를 받아온다.
| |
| |docker run
| |
| |-
| |
| |컨테이너에서 파일 꺼내기
| |
| |컨테이너에서 파일을 꺼낸다.
| |
| |docker cp 컨테이너:경로 호스트경로
| |
| docker cp hello:/etc/file.conf ./ # 현재경로로 컨테이너의 파일을 꺼낸다.
| |
| |-
| |
| |변경파일 확인
| |
| |컨테이너가 실행되며 변경된 파일목록 출력.
| |
| 기준은 컨테이너를 생성한 이미지 기준.
| |
|
| |
|
| A: 추가된 파일
| |
|
| |
|
| C: 변경된 파일
| | =에러= |
|
| |
|
| D: 삭제된 파일
| | ===docker: Error response from daemon: Get "<nowiki>https://registry-1.docker.io/v2/</nowiki>": dial tcp: lookup registry-1.docker.io: Temporary failure in name resolution.=== |
| |docker diff 컨테이너
| | sudo vi /etc/resolv.conf를 통해 <code>nameserver 8.8.8.8</code>을 등록한다.(구글 DNS를 등록.) |
| |-
| |
| |이미지로 저장
| |
| |변경사항을 이미지로 생성한다.
| |
| {| class="wikitable"
| |
| !옵션
| |
| !설명
| |
| |-
| |
| | -a
| |
| |
| |
| |-
| |
| | -m "코멘트"
| |
| |코멘트를 단다.
| |
| |-
| |
| |
| |
| |
| |
| |}
| |
| |docker commit 옵션 컨테이너 이미지:태그
| |
| |-
| |
| |
| |
| |
| |
| |
| |
| |}
| |
|
| |
|
| == 저장공간 사용 == | | =주석= |
| {| class="wikitable"
| |
| !과정
| |
| !설명
| |
| !방법
| |
| |-
| |
| |이미지 올리기
| |
| |레지스트리 서버에 이미지를 올린다.
| |
| 192.000.000.000:포트번호 형태로 개인저장소에 올라간 이미지를 받아올 수도 있다.
| |
| |docker push
| |
| |-
| |
| |이미지 받기
| |
| |서버에서 이미지를 받는다.
| |
| localhost:포트번호 형식으로 개인저장소에 올릴 수도 있다.
| |
| |docker pull 레지스트리URL/이미지:태그
| |
| |}
| |
| ==포테이너 설치==
| |
| {| class="wikitable"
| |
| !과정
| |
| !설명
| |
| !방법
| |
| |-
| |
| |볼륨 생성
| |
| |사용할 volume을 생성한다.
| |
| |docker volume create portainer_data
| |
| |-
| |
| |생성
| |
| | --restart=always 옵션은 docker를 재시작 해도 자동으로 구동하라는 옵션.
| |
| |docker run -d -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data --restart=always portainer/portainer
| |
| |}
| |
| [[분류:도커]] | | [[분류:도커]] |
| <references /> | | <references /> |
- 틀:Docker
- Docker
- 도커:설치
- 사용법
- 도커:이미지 관련
- 도커:컨테이너 관련
반가상화 기술.
| 과정
|
설명
|
방법
|
| 도커파일 저장경로 확인
|
공간이 넉넉한 파티션에 저장하는 편이 옳다.
|
|
| 부팅 시 컨테이너 자동실행
|
|
docker update --restart=always <container-id>
|
| 부팅 시 컨테이너 자동실행
|
서버가 꺼졌다 다시 시작될 때 컨테이너가 자동 시작되게끔.
rc.local 안에 다음의 내용을 담아준다.#!/bin/bash
docker start $(docker ps -a -q) # 모든 컨테이너 실행.
다른 방법
| 과정
|
설명
|
| systemd 서비스 파일 생성
|
아래 예시처럼 system 디렉토리 안에 .service 파일을 생성한다.
sudo vim /etc/systemd/system/mydocker.service
|
| 내용 작성
|
[Unit]
Description=My Docker Container
Requires=docker.service
After=docker.service
[Service]
Restart=always
ExecStart=/usr/bin/docker start -a 컨테이너이름
ExecStop=/usr/bin/docker stop -t 2 컨테이너이름
[Install]
WantedBy=multi-user.target
|
|
vi /etc/rc.local
chmod 755 /etc/rc.local
systemctl enable rc-local.service
systemctl start rc-local.service
|
docker: Error response from daemon: Get "https://registry-1.docker.io/v2/": dial tcp: lookup registry-1.docker.io: Temporary failure in name resolution.
[편집 | 원본 편집]
sudo vi /etc/resolv.conf를 통해 nameserver 8.8.8.8을 등록한다.(구글 DNS를 등록.)