[docker] Docker 입문부터 실천 노트까지
기본 개념
미러링
미러 가져오기
docker pull --help
미러를 실행하여 컨테이너 가져오기
docker run --help
미러 목록
docker image ls
미러 이미지 띄우기
docker image prune #
중간 레이어 대칭복사
docker image ls -a #
부분 미러 표시
docker image ls [repo:tag]
미러 id 표시
docker image ls -q
로컬 미러 제거
docker image rm --help # tag
미러링 실행 컨테이너 사용자 정의
docker run --name webserver -d -p 81:80 nginx
// nginx webserver, 80 , http://localhost:81 (-p : )
// docker exec -it webserver bash
// exit
// docker diff webserver
// ( )docker commit
미러 사용자 정의
docker commit --help
// ( )
미러 내역 보기
docker history [repo:tag]
용기.
부팅 컨테이너
두 가지 방식
docker run ubuntu:18.04 /bin/echo 'Hello world'
// “Hello World”, 。
docker run -t -i ubuntu:18.04 /bin/bash
//-t Docker (pseudo-tty)
//-i 。
docker run의 백엔드 논리
docker container start
백그라운드 실행
#
docker run ubuntu:18.04 /bin/sh -c "while true; do echo hello world; sleep 1; done"
#-d , docker logs
docker run -d ubuntu:18.04 /bin/sh -c "while true; do echo hello world; sleep 1; done"
컨테이너 종료
#
docker container ls -a
#
docker container stop
#
docker container start
#
docker container restart
용기에 들어간다
#attach
docker run -dit ubuntu
docker attach xxx // stdin exit, 。
#exec
docker run -dit ubuntu
docker exec -it 69d1 bash // stdin exit,
#
docker exec --help
가져오기 내보내기 컨테이너
컨테이너 내보내기
#
docker export 7691a814370e > ubuntu.tar
컨테이너 스냅샷 가져오기
# docker import
cat ubuntu.tar | docker import - test/ubuntu:v1.0
docker image ls
# URL
docker import http://example.com/exampleimage.tgz example/imagerepo
컨테이너 삭제 및 정리
#
docker container rm trusting_newton
#
docker container rm -f xxxx //docker SIGKILL 。
#
docker container prune
창고.
Docker Hub
Docker 공식적으로 15000개 이상의 미러가 포함된 공용 창고 Docker Hub을 유지 관리합니다.
일반 명령
docker search //
docker pull //
docker push // Docker Hub
자동 생성
자동 생성(Automated Builds) 기능은 미러 내부 프로그램을 자주 업그레이드해야 하는 경우에 편리합니다.
개인 창고
용기에서 데이터를 관리하는 두 가지 경로
데이터 볼륨의 사용은 리눅스에서 디렉터리나 파일을 mount하는 것과 유사하며, 거울에 있는 마운트 지점으로 지정된 디렉터리의 파일은 숨겨지고 마운트된 데이터 볼륨을 볼 수 있다.
일반 작업
# my-vol
docker volume create my-vol
#
docker volume ls
#
docker volume inspect my-vol
#
# web , /webapp 。
docker run -d -P --name web --mount source=my-vol,target=/webapp \ training/webapp \
python app.pyc
docker run
#
# web
docker inspect web // "Mounts" Key
#
docker volume rm my-vol
#
docker volume prune
호스트 디렉터리를 데이터 볼륨으로 마운트합니다. - mount 표시는 로컬 호스트를 마운트하는 디렉터리를 용기에 마운트할 수 있습니다.
# /src/webapp /opt/webapp
docker run -d -P --name web --mount type=bind,source=/src/webapp,target=/opt/webapp \
training/webapp \
python app.py
# read only
docker run -d -P --name web --mount type=bind,source=/src/webapp,target=/opt/webapp,read
only \
training/webapp \
python app.py
# web
docker inspect web
데이터 볼륨으로 로컬 호스트 파일 마운트
-- mount 태그는 호스트에서 개별 파일을 컨테이너에 마운트할 수도 있습니다.
docker run --rm -it --mount type=bind,source=$HOME/.bash_history,target=/root/.bash_history \
ubuntu:18.04 \
bash
#
네트워크 기능
Docker는 외부 액세스 컨테이너나 컨테이너를 통해 네트워크 서비스를 제공할 수 있습니다.
외부 액세스 컨테이너
-P(대문자) 매핑
#
docker run -d -P training/webapp python app.py
#
docker container ls -l
#
docker logs -f nostalgic_morse
-p(소문자) 매핑
#
#hostPort:containerPort 5000 5000
docker run -d -p 5000:5000 training/webapp python app.py
# 。
#
#ip:hostPort:containerPort ,
localhost 127.0.0.1
docker run -d -p 127.0.0.1:5000:5000 training/webapp python app.py
#
#ip::containerPort localhost 5000 ,
。
docker run -d -p 127.0.0.1::5000 training/webapp python app.py
#
# udp udp
docker run -d -p 127.0.0.1:5000:5000/udp training/webapp pytho
n app.py
포트 구성 보기
docker port을 사용하여 현재 맵의 포트 설정을 볼 수도 있고, 연결된 주소를 볼 수도 있습니다
docker port nostalgic_morse 5000
컨테이너 내부 네트워크 구성 보기
docker run -d \
-p 5000:5000 \
-p 3000:80 \
training/webapp \
python app.py
컨테이너 상호 연결
새 네트워크
docker network create -d bridge my-net
#-d Docker bridge overlay
# overlay Swarm mode
링크 컨테이너
# busybox1, busybox, my-net
docker run -it --rm --name busybox1 --network my-net busybox sh
# busybox2, busybox, my-net
docker run -it --rm --name busybox2 --network my-net busybox sh
#
docker container ls
# , busybox1 ping busybox2
ping busybox2
Docker Compose
여러 컨테이너 간에 상호 연결이 필요한 경우 Docker Compose를 사용하는 것이 좋습니다.
DNS(Domain Name System) 구성
컨테이너의 호스트 이름과 DNS를 설정합니다. Docker는 가상 파일을 이용하여 컨테이너의 3개의 관련 프로필을 마운트합니다. 컨테이너에서 mount를 실행하면 마운트 정보를 얻을 수 있습니다.
$ mount
/dev/disk/by-uuid/1fec...ebdf on /etc/hostname type ext4 ...
/dev/disk/by-uuid/1fec...ebdf on /etc/hosts type ext4 ...
tmpfs on /etc/resolv.conf type tmpfs ...
# DNS , Docker DNS /etc/resolv.conf 。
모든 컨테이너에 대한 DNS 구성
/etc/docker/daemon.json 파일에 다음 내용을 추가해서 설정합니다.
{
"dns" : [
"114.114.114.114",
"8.8.8.8"
]
}
# DNS 114.114.114.114 8.8.8.8
# 。
docker run -it --rm ubuntu:18.04 cat etc/resolv.conf
컨테이너 구성 수동 지정
docker run 명령을 사용하여 컨테이너를 시작할 때 다음과 같은 매개 변수를 추가할 수 있습니다.
주의: 용기를 시작할 때 마지막 두 개의 인자가 지정되지 않으면, Docker는 기본적으로 호스트의/etc/resolv를 사용합니다.conf를 사용하여 컨테이너를 구성합니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Swarm의 도커 비밀이 게시물에서는 Redis를 사용한 실제 시나리오 예제를 제공하여 사용 방법을 보여주고자 합니다. Docker 기술에 대한 기본 지식 Docker Swarm 오케스트레이터에 대한 기본 지식 "Docker Swarm ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.