Docker compose/dockerfile/docker harbor

317 阅读2分钟

这是我参与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