docker与docker-compose从项目角度出发查看异同
docker
是一个供开发和运维人员开发,测试,部署和运行应用的容器平台。这种用linux container部署应用的方式叫容器化。
http://mirrors.163.com/docker-ce/linux/static/stable/x86_64/
docker-compose
是一个用于运行和管理多个容器化应用的工具(一系列的容器)
https://github.com/docker/compose/releases/download/1.29.2/docker-compose-Linux-x86_64
https://github.com/docker/compose/releases/ #有各种版本
docker和 docker-compose二者对比下:
1.docker是自动化构建镜像,并启动镜像。 docker compose是自动化编排容器。 2.docker是基于Dockerfile得到images,启动的时候是一个单独的container 3.docker-compose是基于docker-compose.yml,通常启动的时候是一个服务,这个服务通常由多个container共同组成,并且端口,配置等由docker-compose定义好。 4.两者都需要安装,但是要使用docker-compose,必须已经安装docker
docker应用实例:
# centos7 # 从阿里云直接下载docker-ce.repo文件 [root@centos7 ~]#wget -P /etc/yum.repos.d/ https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo [root@centos7 ~]#yum repolist [root@centos7 ~]#yum list docker-ce* --showduplicates | sort -r [root@centos7 ~]#yum -y install docker-ce-19.03.13-3.el7 docker-ce-cli-19.03.13-3.el7 # centos安装完后需要手动启动docker [root@centos7 ~]#systemctl enable --now docker #查看版本,验证安装成功 [root@centos7 ~]#docker --version Docker version 19.03.13, build 4484c46d9d
以下docker-compose是重点
docker-compose应用实例(用docker-compose方式管理harbor):
docker ps 启动的容器,都是harbor相关的一系列容器
[root@fp-web-169 harbor]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ce658cd5d04e goharbor/nginx-photon:v1.8.0 "nginx -g 'daemon of…" 4 months ago Up 4 months (healthy) 0.0.0.0:80->80/tcp nginx
5be3c8cd5f4d goharbor/harbor-portal:v1.8.0 "nginx -g 'daemon of…" 4 months ago Up 4 months (healthy) 80/tcp harbor-portal
7c9bfd2d4693 goharbor/harbor-jobservice:v1.8.0 "/harbor/start.sh" 4 months ago Up 4 months harbor-jobservice
50133b195021 goharbor/harbor-core:v1.8.0 "/harbor/start.sh" 4 months ago Up 4 months (healthy) harbor-core
f8c82eb02dcb goharbor/harbor-db:v1.8.0 "/entrypoint.sh post…" 4 months ago Up 4 months (healthy) 5432/tcp harbor-db
748be8a5a061 goharbor/registry-photon:v2.7.1-patch-2819-v1.8.0 "/entrypoint.sh /etc…" 4 months ago Up 4 months (healthy) 5000/tcp registry
de2b1a33cd0c goharbor/redis-photon:v1.8.0 "docker-entrypoint.s…" 4 months ago Up 4 months 6379/tcp redis
039ca1596261 goharbor/harbor-pctl:v1.8.0 "/harbor/start.sh" 4 months ago Up 4 months (healthy) pctl
3d724b925790 goharbor/harbor-log:v1.8.0 "/bin/sh -c /usr/loc…" 4 months ago Up 4 months (healthy) 127.0.0.1:1514->10514/tcp harbor-log
首先安装docker-compose : wget https://github.com/docker/compose/releases/download/1.29.2/docker-compose-Linux-x86_64
harbor相关维护命令:
#启动Harbor
# docker-compose start
停止Harbor
# docker-comose stop
重启Harbor
# docker-compose restart
#################################################################
启动 harbor
docker-compose up -d
关闭 harbor
docker-compose down -v
#################################################################
查看状态
docker-compose ps
查看 log
/var/log/harbor
###在harbor.cfg中设定
#################################################################
在Harbor安装完成之后,在此目录下会生成 docker-compose.yml 配置文件,可以使用docker-compose操作此文件来控制Harbor的启停。
#docker-compose down
##加载配置文件
./prepare
###启动所有后台所有服务
docker-compose up -d
docker-compose配置文件 docker-compose.yml 创建harbor仓库,相关文件
[root@fp-web-169 harbor]# locate docker-compose
/data/harbor/docker-compose.yml
/usr/local/bin/docker-compose
[root@fp-web-169 harbor]# ll /data/harbor
drwxr-xr-x 3 root root 19 May 22 2019 common
-rw-r----- 1 root root 5183 May 27 2019 docker-compose.yml
-rw-r--r-- 1 root root 4866 May 27 2019 harbor.yml
-rwxr-xr-x 1 root root 5088 May 16 2019 install.sh
-rw-r--r-- 1 root root 11347 May 16 2019 LICENSE
-rwxr-xr-x 1 root root 1654 May 16 2019 prepare
drwxr-xr-x 2 root root 79 May 22 2019 ssl
[root@fp-web-169 harbor]# cat docker-compose.yml version: '2.3' services: log: image: goharbor/harbor-log:v1.8.0 ##本地仓库中的镜像 container_name: harbor-log ##容器名 restart: always dns_search: . cap_drop: - ALL cap_add: - CHOWN - DAC_OVERRIDE - SETGID - SETUID volumes: - /var/log/harbor/:/var/log/docker/:z ###harbor日志 - ./common/config/log/:/etc/logrotate.d/:z ##日志 ports: - 127.0.0.1:1514:10514 networks: - harbor registry: image: goharbor/registry-photon:v2.7.1-patch-2819-v1.8.0 container_name: registry restart: always cap_drop: - ALL cap_add: - CHOWN - SETGID - SETUID volumes: - /data/registry:/storage:z - ./common/config/registry/:/etc/registry/:z - type: bind source: /data/secret/registry/root.crt target: /etc/registry/root.crt networks: - harbor dns_search: . depends_on: - log logging: driver: "syslog" options: syslog-address: "tcp://127.0.0.1:1514" tag: "registry" registryctl: image: goharbor/harbor-registryctl:v1.8.0 container_name: registryctl env_file: - ./common/config/registryctl/env restart: always cap_drop: - ALL cap_add: - CHOWN - SETGID - SETUID volumes: - /data/registry:/storage:z - ./common/config/registry/:/etc/registry/:z - type: bind source: ./common/config/registryctl/config.yml target: /etc/registryctl/config.yml networks: - harbor dns_search: . depends_on: - log logging: driver: "syslog" options: syslog-address: "tcp://127.0.0.1:1514" tag: "registryctl" postgresql: image: goharbor/harbor-db:v1.8.0 container_name: harbor-db restart: always cap_drop: - ALL cap_add: - CHOWN - DAC_OVERRIDE - SETGID - SETUID volumes: - /data/database:/var/lib/postgresql/data:z networks: harbor: dns_search: . env_file: - ./common/config/db/env depends_on: - log logging: driver: "syslog" options: syslog-address: "tcp://127.0.0.1:1514" tag: "postgresql" core: image: goharbor/harbor-core:v1.8.0 container_name: harbor-core env_file: - ./common/config/core/env restart: always cap_drop: - ALL cap_add: - SETGID - SETUID volumes: - /data/ca_download/:/etc/core/ca/:z - /data/psc/:/etc/core/token/:z - /data/:/data/:z - ./common/config/core/certificates/:/etc/core/certificates/:z - type: bind source: ./common/config/core/app.conf target: /etc/core/app.conf - type: bind source: /data/secret/core/private_key.pem target: /etc/core/private_key.pem - type: bind source: /data/secret/keys/secretkey target: /etc/core/key networks: harbor: dns_search: . depends_on: - log - registry logging: driver: "syslog" options: syslog-address: "tcp://127.0.0.1:1514" tag: "core" portal: image: goharbor/harbor-portal:v1.8.0 container_name: harbor-portal restart: always cap_drop: - ALL cap_add: - CHOWN - SETGID - SETUID - NET_BIND_SERVICE networks: - harbor dns_search: . depends_on: - log - core logging: driver: "syslog" options: syslog-address: "tcp://127.0.0.1:1514" tag: "portal" jobservice: image: goharbor/harbor-jobservice:v1.8.0 container_name: harbor-jobservice env_file: - ./common/config/jobservice/env restart: always cap_drop: - ALL cap_add: - CHOWN - SETGID - SETUID volumes: - /data/job_logs:/var/log/jobs:z - type: bind source: ./common/config/jobservice/config.yml target: /etc/jobservice/config.yml networks: - harbor dns_search: . depends_on: - redis - core logging: driver: "syslog" options: syslog-address: "tcp://127.0.0.1:1514" tag: "jobservice" redis: image: goharbor/redis-photon:v1.8.0 container_name: redis restart: always cap_drop: - ALL cap_add: - CHOWN - SETGID - SETUID volumes: - /data/redis:/var/lib/redis networks: harbor: dns_search: . depends_on: - log logging: driver: "syslog" options: syslog-address: "tcp://127.0.0.1:1514" tag: "redis" proxy: image: goharbor/nginx-photon:v1.8.0 container_name: nginx restart: always cap_drop: - ALL cap_add: - CHOWN - SETGID - SETUID - NET_BIND_SERVICE volumes: - ./common/config/nginx:/etc/nginx:z networks: - harbor dns_search: . ports: - 80:80 depends_on: - postgresql - registry - core - portal - log logging: driver: "syslog" options: syslog-address: "tcp://127.0.0.1:1514" tag: "proxy" networks: harbor: external: false
[root@fp-web-169 harbor]# locate config.yml
/data/harbor/common/config/registry/config.yml
[root@fp-web-169 harbor]# cat /data/harbor/common/config/registry/config.yml version: 0.1 log: level: info fields: service: registry storage: cache: layerinfo: redis filesystem: rootdirectory: /storage maintenance: uploadpurging: enabled: false delete: enabled: true redis: addr: redis:6379 password: db: 1 http: addr: :5000 secret: placeholder debug: addr: localhost:5001 auth: token: issuer: harbor-token-issuer realm: http://registry.prm.com.cn/service/token rootcertbundle: /etc/registry/root.crt service: harbor-registry validation: disabled: true notifications: endpoints: - name: harbor disabled: false url: http://core:8080/service/notifications timeout: 3000ms threshold: 5 backoff: 1s compatibility: schema1:
核心的环境配置文件
[root@fp-web-169 harbor]# cat /data/harbor/common/config/core/env CONFIG_PATH=/etc/core/app.conf UAA_CA_ROOT=/etc/core/certificates/uaa_ca.pem _REDIS_URL=redis:6379,100, SYNC_REGISTRY=false CHART_CACHE_DRIVER=redis _REDIS_URL_REG=redis://redis:6379/1 PORT=8080 LOG_LEVEL=info EXT_ENDPOINT=http://registry.prm.com.cn //web访问入口 DATABASE_TYPE=postgresql POSTGRESQL_HOST=postgresql POSTGRESQL_PORT=5432 POSTGRESQL_USERNAME=postgres POSTGRESQL_PASSWORD=prm_p15 POSTGRESQL_DATABASE=registry POSTGRESQL_SSLMODE=disable REGISTRY_URL=http://registry:5000 TOKEN_SERVICE_URL=http://core:8080/service/token HARBOR_ADMIN_PASSWORD=prm_p15 MAX_JOB_WORKERS=10 CORE_SECRET=sfk7hclnetyugA81 JOBSERVICE_SECRET=9FgZRk9wINKL6yg2 ADMIRAL_URL= WITH_NOTARY=False WITH_CLAIR=False CLAIR_DB_PASSWORD=prm_p15 CLAIR_DB_HOST=postgresql CLAIR_DB_PORT=5432 CLAIR_DB_USERNAME=postgres CLAIR_DB=postgres CLAIR_DB_SSLMODE=disable CORE_URL=http://core:8080 JOBSERVICE_URL=http://jobservice:8080 CLAIR_URL=http://clair:6060 NOTARY_URL=http://notary-server:4443 REGISTRY_STORAGE_PROVIDER_NAME=filesystem READ_ONLY=false RELOAD_KEY= CHART_REPOSITORY_URL=http://um:9999 REGISTRY_CONTROLLER_URL=http://pctl:8080
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· AI与.NET技术实操系列(六):基于图像分类模型对图像进行分类