내 연락처 정보
우편메소피아@프로톤메일.com
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
환경을 준비합니다.
- VM웨어17
- Ubuntu18.04(LTS):https://releases.ubuntu.com/18.04/ubuntu-18.04.6-desktop-amd64.iso
도커 관련 문서:
- 도커 공식 홈페이지 주소: https://www.docker.com/
- 도커 문서 주소: https://docs.docker.com/
- 도커 이미지 창고: https://hub.docker.com/
1. 도커란: 컨테이너를 쉽게 관리할 수 있는 오픈소스 컨테이너 엔진으로, 샌드박스 메커니즘을 사용해 컨테이너를 서로 격리시킨다.
2. Docker가 해결하는 문제: 소프트웨어 환경의 마이그레이션 문제를 해결합니다.
3. 컨테이너와 가상 머신의 차이점:
4. 도커 저장소:
-v /宿主机目录:容器目录
数据卷:容器目录
5. Docker 네트워크: 안정적인 도메인 이름으로 호스트 이름 액세스를 달성하기 위해 사용자 정의 네트워크를 만듭니다. (동일한 네트워크에 있는 컨테이너간 통신 가능)
#示例
#自定义网络
docker network create mynet
#主节点
docker run -d -p 6379:6379
-v /app/rd1:/bitnami/redis/data
-e REDIS_REPLICATION_MODE=master
-e REDIS_PASSWORD=123456
--network mynet --name redis01
bitnami/redis
#从节点
docker run -d -p 6380:6379
-v /app/rd2:/bitnami/redis/data
-e REDIS_REPLICATION_MODE=slave
-e REDIS_MASTER_HOST=redis01
-e REDIS_MASTER_PORT_NUMBER=6379
-e REDIS_MASTER_PASSWORD=123456
-e REDIS_PASSWORD=123456
--network mynet --name redis02
bitnami/redis
이 글은 Ubuntu 환경 설치를 기준으로 작성되었습니다. 권한이 부족할 경우 앞에 sudo만 추가하시면 됩니다.
1. 방화벽을 끕니다. (이후 외부 액세스를 위해 포트를 수동으로 노출할 필요가 없으므로 테스트에 편리합니다.)
sudo ufw disable
#关闭防火墙:sudo ufw disable
#查看防火墙状态:sudo ufw status
#开启防火墙:sudo ufw enable
2. 도커 설치
#卸载旧版docker
sudo apt-get remove docker docker-engine docker.io containerd runc
#更新软件包
sudo apt-get update
#安装一些工具
sudo apt-get install
apt-transport-https
ca-certificates
curl
gnupg-agent
software-properties-common
#安装docker
sudo apt install docker.io
#验证dokcer是否安装成功
docker --version
#启动& 开机启动docker; enable + start 二合一
sudo systemctl enable docker --now
#配置阿里云镜像加速
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://82m9ar63.mirror.aliyuncs.com"]
}
EOF
#重新加载配置
sudo systemctl daemon-reload
#重启docker服务
sudo systemctl restart docker
1. 도커 서비스 상태 관리:
2. 도커 이미지 관리:
3. 도커 컨테이너 관리:
4. Docker 데이터 볼륨:
데이터 볼륨: docker에서 관리하는 폴더입니다.
데이터 볼륨 사용: 데이터 볼륨을 컨테이너의 경로에 바인딩하여 컨테이너와 호스트 간의 양방향 자동 파일 전송을 실현할 수 있습니다.
파일을 호스트의 데이터 볼륨에 넣습니다. docker는 자동으로 파일을 컨테이너에 동기화합니다.
컨테이너의 파일이 변경되면 docker는 해당 파일을 호스트의 데이터 볼륨에 자동으로 동기화합니다.
데이터 볼륨 작업 명령:
데이터 볼륨 나열: docker Volume ls
데이터 볼륨 생성: docker 볼륨 데이터 볼륨 이름 생성
데이터 볼륨 세부 정보 보기(실제 경로): docker 볼륨 검사 데이터 볼륨 이름
데이터 볼륨 삭제: docker 볼륨 rm 데이터 볼륨 이름
컨테이너를 생성하고 데이터 볼륨을 바인딩합니다.
docker run -di --name=컨테이너 이름 -v 데이터 볼륨 이름: 컨테이너 이미지 이름의 경로: 태그
docker run -di --name=컨테이너 이름 -v 호스트의 경로: 컨테이너 이미지 이름의 경로: 태그
참고: -v 매개변수의 모든 경로는 절대 경로여야 합니다.
5. 미러 백업:
문서: https://docs.docker.com/reference/dockerfile/
Dockerfile 역할: 사용자 정의 이미지를 생성합니다.
Dockerfile은 기본 이미지를 기반으로 일련의 도커 명령어를 작성하며, 각 명령어는 이러한 명령어를 레이어별로 구축하여 최종적으로 대상 이미지를 구축합니다.
일반적인 지침 | 효과 |
---|---|
에서 | 이미지 기반 환경 지정 |
달리다 | 사용자 정의 명령 실행 |
커맨드 | 컨테이너 시작 명령 또는 매개변수 |
상표 | 맞춤 라벨 |
폭로하다 | 노출된 포트 지정 |
환경 | 환경 변수 |
추가하다 | 이미지에 파일 추가 |
복사 | 이미지에 파일 복사 |
진입 지점 | 컨테이너 고정 시작 명령 |
용량 | 데이터 볼륨 |
사용자 | 사용자 및 사용자 그룹 지정 |
작업 방향 | 기본 작업 디렉터리 지정 |
아르그 | 빌드 매개변수 지정 |
예:
#编写dockerfile文件
vim Dockerfile
FROM openjdk:17
LABEL author=aopmin
COPY app.jar /app.jar #把jar包复制到容器的根目录下
EXPOSE 8080
ENTRYPOINT ["java","-jar","app.jar"] #运行命令
# 构建镜像
docker bulid -f Dockerfile -t 镜像名:tag .
서비스 오케스트레이션 또는 컨테이너 오케스트레이션: 특정 비즈니스 규칙에 따라 컨테이너를 일괄적으로 관리합니다.
Docker Compose는 여러 Docker 컨테이너를 정의하고 실행하기 위한 오케스트레이션 도구입니다.
하나의 명령으로 여러 컨테이너를 시작할 수 있습니다. 주로 컨테이너를 관리하고 조정하는 방법에 대한 문제를 해결합니다.
Docker Compose를 사용하는 세 단계는 다음과 같습니다.
docker-compose.yml
애플리케이션을 구성하는 서비스 정의docker-compose up -d
신청 시작docker-compose를 설치합니다.
# 下载docker compose
curl -L https://github.com/docker/compose/releases/download/1.22.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
# 设置权限
chmod +x /usr/local/bin/docker-compose
# 查看版本
docker-compose -version
docker-compose를 제거하려면 다음 명령을 실행할 수 있습니다.
# docker compose是二进制包方式安装的,删除二进制文件即可
rm /usr/local/bin/docker-compose
docker-compose의 일반적인 명령:
# !!!注意:必须先切换到`docker-compose.yaml`文件所在的目录后,才可以执行以下命令!!!
#创建容器并后台启动
docker-compose up -d
#直接启动容器
docker-compose start
#其它命令:
docker-compose help # 查看帮助
docker-compose stop # 停止容器
docker-compose start # 启动容器
docker-compose restart # 重启容器
docker-compose rm # 删除已停止的容器
docker-compose down # 停止并删除容器
예:
1. docker-compose 디렉터리 생성
mkdir ~/docker-compose
cd ~/docker-compose
2. 쓰기docker-compose.yaml
문서
version: "3.0"
services:
redis:
container_name: redis
image: redis:5.0
ports:
- 6379:6379
nginx:
container_name: nginx
image: nginx:1.14.2
ports:
- 80:80
volumes:
- /root/volumes/nginx/html:/usr/share/nginx/html
tomcat:
container_name: tomcat
image: tomcat:8.5.88
ports:
- 8080:8080
volumes:
- /root/volumes/tomcat/webapps:/usr/local/tomcat/webapps
3. 시작
# !!!注意:必须先切换到有`docker-compose.yaml`文件所在的目录后,才可以执行以下命令!!!
cd ~/docker-compose
# docker-compose up -d 以守护进程方式创建并启动容器
docker-compose up -d