Docker 설치 및 이미지와 컨테이너의 일반적인 작업

목차

1. 도커 설치

1.1 전제조건

1.2.yum 도커 설치

1.3.Docker 시작 및 중지 작업

1.4.Docker 이미지 소스 변경 

1.5 도커 시작 이미지 확인

2. Docker 일반 작업

2.1 미러 관련 작업

이미지 나열

이미지 찾기

이미지 가져오기

이미지 라벨 설정

이미지 삭제

2.2 컨테이너 관련 운영

컨테이너 만들기

컨테이너 보기

컨테이너 네트워크 포트 매핑 보기

컨테이너 시작/중지/다시 시작 

컨테이너를 입력하세요

컨테이너 로그 보기

컨테이너 삭제


1. 도커 설치

1.1 전제조건

Docker는 CentOS 배포판의 커널에서만 지원됩니다.

Docker는 CentOS 7에서 실행됩니다. 이를 위해서는 시스템이 64비트이고 시스템 커널 버전이 3.10 이상이어야 합니다.

Docker는 CentOS-6.5 이상에서 실행됩니다. 이를 위해서는 시스템이 64비트여야 하고 시스템 커널 버전이 2.6.32-431 이상이어야 합니다.

현재 시스템 커널 버전을 보는 데 사용됩니다  uname -r . 현재 데모 버전은 CentOS7입니다.

uname -r

1.2.yum 도커 설치

CentOS는 Docker와 함께 제공되며 직접 설치할 수 있습니다.

yum -y install docker

설치가 완료되면 아래 그림과 같이

1.3.Docker 시작 및 중지 작업

#启动Docker
systemctl start docker
#停止Docker
systemctl stop docker
#重启Docker
systemctl restart docker
#查看Docker运行状态
systemctl status docker
#查看Docker版本
docker version

1.4.Docker 이미지 소스 변경 

/etc/docker/daemon.json 파일을 다음 형식으로 생성하거나 수정합니다.

vim /etc/docker/daemon.json

daemon.json 파일을 현재 NetEase 미러 소스로 설정된 국내 미러 소스로 수정합니다.

{"registry-mirrors": ["http://hub-mirror.c.163.com"] }

구성 파일을 다시 로드하고 Docker를 다시 시작하세요.

#重载配置文件
systemctl daemon-reload
#重启docker
systemctl restart docker

국내 가속 주소는 다음과 같습니다.

1.5 도커 시작 이미지 확인

docker run hello-world

로컬에는 hello-world 이미지가 없으므로 hello-world 이미지가 다운로드되어 컨테이너에서 실행됩니다.

2. Docker 일반 작업

2.1 미러 관련 작업

  • 이미지 나열

docker images

 매개변수 설명

  • REPOSTITORY: 이미지의 웨어하우스 소스를 나타냅니다.

  • TAG: 이미지의 태그

  • 이미지 ID: 이미지 ID

  • 생성됨: 이미지 생성 시간

  • 크기: 이미지 크기

  • 이미지 찾기

nginx 찾기와 같은 구문 docker search [OPTIONS]

docker search nginx

 매개변수 설명

  • NAME: 미러 웨어하우스 소스의 이름
  • DESCRIPTION: 이미지에 대한 설명
  • STARS: 좋아요/컬렉션 수
  • 공식: docker가 공식적으로 출시되었나요?
  • 자동화: 자동으로 구축됩니다.
  • 이미지 가져오기

docker pull [OPTIONS]  구문 , 예를 들어 nginx 가져오기, 기본 버전 이미지 가져오기(기본 쿼리의 맨 위에 있는 첫 번째 이미지)

docker pull nginx

버전이나 지정된 이미지를 지정해야 하는 경우 버전이나 지정된 이미지를 기준으로 가져올 수 있습니다.

#拉取指定版本镜像
docker pull nginx:1.18
#拉取指定镜像,参数即search的NAME
docker pull docker.io/bitnami/nginx

  • 이미지 라벨 설정

구문 docker 태그 SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG] , 이미지에 새 태그 추가

docker tag 9c7a54a9a43c hello-world.test

  •  이미지 삭제

구문 docker rmi [OPTIONS] IMAGE [IMAGE...] , 하나 이상의 이미지를 삭제합니다. 매개변수는 이미지 ID 또는 NAMES일 수 있으며, 여러 이미지는 공백으로 구분됩니다.

매개변수가 REPOSTITORY인 경우 동일한 이름의 REPOSTITORY는 기본적으로 최신 버전을 삭제하며, 지정된 버전을 삭제해야 하는 경우 버전 번호를 추가하세요.

매개변수가 IMAGE ID인 경우 지정된 이미지가 직접 삭제됩니다.

2.2 컨테이너 관련 운영

  • 컨테이너 만들기

구문 docker run [OPTIONS] IMAGE [COMMAND] [ARG...] , run 명령을 통해 새 컨테이너를 생성합니다.

포트 80으로 nginx 만들기

#简易启动一个nginx
docker run -p 80:80 -d nginx

공통 옵션 설명

-d, --detach=false, 컨테이너가 포그라운드에서 실행되는지 아니면 백그라운드에서 실행되는지 지정합니다. 기본값은 false입니다.
-i, --interactive=false, 콘솔 상호 작용을 위해 STDIN을 엽니다.
-t, --tty=false, tty 장치를 할당합니다. , 이는 터미널 로그인을 지원할 수 있으며 기본값은 false입니다.
-u, --user="", 컨테이너 사용자 지정
-a, --attach=[], 컨테이너에 로그인(docker로 시작되는 컨테이너여야 함) -d)
-w, --workdir="" 실행, 컨테이너의 작업 디렉터리 지정
-c, --cpu-shares=0, 컨테이너 CPU 가중치 설정,
-e, --env=[] 사용 CPU 공유 시나리오, 컨테이너에서 사용할 수 있는 환경 변수 지정 이 환경 변수 사용
-m, --memory="", 컨테이너의 메모리 제한 지정
-P, --publish-all=false, 포트 지정 컨테이너에 의해 노출
-p, --publish=[], 컨테이너에 의해 노출된 포트 지정
-h, --hostname="", 컨테이너의 호스트 이름 지정
-v, --volume=[], 마운트 스토리지 볼륨을 컨테이너에 마운트하고, 이를 컨테이너
--volumes-from=[]의 디렉토리에 마운트하고, 컨테이너가 다른 컨테이너에 볼륨을 마운트하고, 이를 컨테이너 --cap-add=[]의 디렉토리에 마운트하고
, 권한을 추가합니다. 권한의 자세한 목록은 http://linux.die.net/man/7/capability
- -cap-drop=[], 권한 삭제를 참조하세요. 권한의 자세한 목록은 http:를 참조하세요. //linux.die.net/man/7/capability
--cidfile="", 컨테이너를 실행한 후 지정된 파일에 컨테이너 PID 값을 작성합니다. 일반적인 모니터링 시스템 사용입니다.
--cpuset="", 컨테이너가 사용할 수 있는 CPU를 설정합니다. 이 매개변수는 컨테이너에서 사용할 수 있습니다. CPU를 독점하려면
--device=[], 호스트 장치를 컨테이너에 추가합니다. 이는 장치 통과
--dns=[]와 동일하며, 컨테이너의 DNS 서버를 지정합니다
--dns-search=[], 컨테이너의 DNS 검색 도메인 이름을 지정하고 이를 컨테이너 /etc/resolv.conf 파일에 씁니다.
--entrypoint="", 이미지의 진입점을 재정의하고
--env-file=[], 환경 변수를 지정합니다. 파일의 경우 파일 형식은 한 줄에 하나의 환경 변수입니다.
--expose=[], 컨테이너 노출 포트 지정, 즉 이미지의 노출된 포트 수정
--link=[], 컨테이너 간의 연결 지정, IP 사용 , env 및 다른 컨테이너의 기타 정보
--lxc-conf=[], 지정된 경우에만 컨테이너의 구성 파일을 지정합니다. --exec-driver=lxc인 경우 --name=""을 사용하고,
컨테이너 이름을 지정합니다. 나중에 이 이름을 사용하여 컨테이너를 관리할 수 있습니다. 링크 기능
에는 --net="bridge"라는 이름이 필요합니다. 컨테이너 네트워크 설정:
브리지는 docker 데몬을 사용하여 지정됩니다. 브리지
호스트 //컨테이너는 호스트의 네트워크
컨테이너:NAME_or_ID를 사용합니다. >/ /다른 컨테이너의 네트워크를 사용하여 IP, PORT 등의 네트워크 리소스를 공유합니다
. 없음 컨테이너는 자체 네트워크를 사용하지만(--net=bridge와 유사) 구성하지는 않습니다.
--privileged=false, 컨테이너가 권한 있는 컨테이너이고 권한 있는 컨테이너에 모든 기능이 있는지 여부를 지정합니다.
--restart="no", 컨테이너가 중지된 후 다시 시작 전략을 지정합니다. no: 컨테이너가 종료
될 때 다시 시작하지 않습니다.
-failure: 컨테이너 종료에 실패합니다(반환 값이 0이 아닐 때 항상 다시 시작)
: 컨테이너가 종료될 때 항상 다시 시작
--rm=false, 컨테이너가 중지된 후 자동으로 삭제되도록 지정합니다(docker run으로 시작된 컨테이너 -d는 지원되지 않음)
--sig-proxy=true, 설정 프록시는 신호를 수락하고 처리하지만 SIGCHLD, SIGSTOP 및 SIGKILL은 프록시할 수 없습니다.

  • 컨테이너 보기

구문 docker ps [OPTIONS] , 컨테이너 목록 보기

#查看运行中的容器
docker ps
#查看所有容器
docker ps -a

매개변수 설명 

  • CONTAINER ID: 컨테이너 ID.
  • IMAGE: 사용된 이미지입니다.
  • COMMAND: 컨테이너를 시작할 때 실행할 명령입니다.
  • CREATED: 컨테이너가 생성된 시간입니다.
  • 상태: 컨테이너 상태.
    • 7가지 상태가 있습니다.
      생성됨(생성됨)
      다시 시작 중(다시 시작 중)
      실행 중(실행 중)
      제거 중(마이그레이션 중)
      일시 중지됨(일시 중지됨)
      종료됨(중지됨) 중단됨
      (죽음)
  • PORTS: 컨테이너의 포트 정보와 사용된 연결 유형(tcp\udp)입니다.
  • NAMES: 자동으로 할당된 컨테이너 이름

  • 컨테이너 네트워크 포트 매핑 보기

구문 docker port CONTAINER [PRIVATE_PORT[/PROTO]]

#根据容器名称查询映射端口
docker port nervous_feynman
#根据容器id查询映射端口
docker port 48de190154d9

  • 컨테이너 시작/중지/다시 시작 

설명 docker 시작/중지/다시 시작 [OPTIONS] CONTAINER [CONTAINER...]

#根据容器id启停容器
docker stop 48de190154d9
docker start 48de190154d9
docker restart 48de190154d9

#根据容器NAMES启停容器
docker stop nervous_feynman
docker start nervous_feynman
docker restart nervous_feynman

  • 컨테이너를 입력하세요

구문 docker exec [OPTIONS] CONTAINER COMMAND [ARG...] , 실행 중인 컨테이너에만 입력할 수 있습니다.

docker exec -it 48de190154d9 sh
#or
docker exec -it 48de190154d9 /bin/bash

각 컨테이너는 가상 머신으로 간주될 수 있으며, 종료는 컨테이너를 종료합니다.

  • 컨테이너 로그 보기

구문 docker 로그 [OPTIONS] CONTAINER

#根据容器id查询日志
docker logs 48de190154d9
#根据容器names查看日志
docker logs nervous_feynman
  • 컨테이너 삭제

구문 docker rm [OPTIONS] CONTAINER [CONTAINER...] , 하나 이상의 컨테이너를 삭제합니다. 매개변수는 컨테이너 ID 또는 NAMES일 수 있으며, 여러 컨테이너는 공백으로 구분됩니다.

docker rm dfcf491e8547

추천

출처blog.csdn.net/DreamEhome/article/details/131962440