这是我参与11月更文挑战的第27天,活动详情查看:2021最后一次更文挑战
Docker Compose
下载
https://github.com/docker/compose
mv /data/docker-compose-linus-86_64 /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
docker-compose version
rm -rf /usr/local/bin/docker-compose
配置文件
Docker compose使用YAML文件定义多服务的应用。YAML是JSON的一个子集, 因此也可以使用JSON。默认文件名docker-compose.yml。也可以使用-f参数指定具体文件。YAML文件包含4个一级key: version, services, networks, volumes
- version必须指定, 总是位于文件的第一行, 定义Compose文件格式的版本。并非定义Docker Compose或Docker引擎的版本号
- services 用于定义不同的应用服务。
- networks用于指引Docker创建新的网络。默认创建bridge网络,使用driver来指定不同的网络类型。
- volumes用于指引Docker来创建新的卷
version: '3'
services:
mysql:
build:
context: ./mysql
environment:
MYSQL_ROOT_PASSWORD: admin
restart: always
container_name: own_mysql
volumes:
/data/mysql: /var/lib/mysql
image: mysql:5.7
ports:
- 3306:3306
networks:
own
networks:
own:
volumes:
own-vol:
参考地址
https://docs.docker.com/compose/reference/build/
常用命令
启动服务
docker-compose up -d
列出所有正在运行的容器
docker-compose ps
查看服务日志
docker-compose logs
构建服务
docker-compose build
启动服务
docker-compose start
停止服务
docker-compose stop
Docker Harbor
下载
官网地址
https://doharbor.io/
vim harbor.yml
hostname: ip
habor_admin_password: Harbor12345
data_volume: /data/harborvolume
./install.sh
配置
vim /etc/docker/daemon.json
"insecure-registries":["192.168.198.10:5000"]
systemctl daemon-reload
systemctl restart daemon
docker login -u admin -p Harbor12345 dockerHarborIp:dockerHarborPort
docker pull dockerHarborIp:dockerHarborPort/imageName:imageTag
Dockerfille
docker commit nginx -m "update message" -a "author" imageName:imageTag
基本结构
Dockerfile是用来搭建Docker镜像的命令集合。Docker通过读取Dockerfile指令自动生成映像。
docker builld命令从Dockerfille构建镜像。dockerfile由一行行命令语句组成,支持以# 开头的注释行。主要分为四部分: 基础镜像信息, 维护者信息, 镜像操作指令和容器启动执行指令。
dockerfie 从上到下执行执行, 第一条指令是FROM
- FROM: 指定基础镜像
- MAINTAINER: 维护者信息
- ENV: 设置环境变量
- RUN: 构建镜像执行命令
- CMD: 构建容器后调用,容器启动的时候才会调用
- ENTRYPOINT: 覆盖CMD参数,区别是docker run 执行的命令不会覆盖ENTRYPOINT, docker run 指定的任何参数,都会被当做参数再次传递给ENTRYPOINT。Dockerfile只有一个ENTRYPOINT命令,多指定时会覆盖前面的设置,只执行最后的指令
- ADD: 将本地文件添加到容器中, tar类型文件会自动解压,可以访问玩过资源
- COPY: 类似ADD,不会自动解压文件,不能访问网络资源
- WORKDIR: 工作目录,类似cd命令
- ARG: 用于指定传递给构建运行时的变量
- VOLUMN: 用于指定持久化目录
- EXPOSE: 指定外界交互的端口
- USER: 指定运行容器的用户名或UID