目录
官方文档:Get started with Docker Compose | Docker Documentation
官方文档:Get started with Docker Compose | Docker Documentation
---------To download and install the Compose CLI plugin, run:
1.下载并且安装compose的命令行插件
[root@localhost _data]# DOCKER_CONFIG=${DOCKER_CONFIG:-$HOME/.docker}
[root@localhost _data]# echo $DOCKER_CONFIG
/root/.docker
[root@localhost _data]# mkdir -p $DOCKER_CONFIG/cli-plugins
[root@localhost _data]#
在香港的服务器上去下载,然后xftp传回长沙,然后分享给大家 curl -SL https://github.com/docker/compose/releases/download/v2.7.0/docker-compose-linux-x86_64 -o docker-compose
1) 上传docker-compose程序
上传docker-compose程序到自己的linux宿主机里,存放到/root/.docker/cli-plugins/
[root@localhost ~]# mv docker-compose /root/.docker/cli-plugins/
[root@localhost ~]# cd /root/.docker/cli-plugins/
[root@localhost cli-plugins]# ls
docker-compose
[root@localhost cli-plugins]# chmod +x docker-compose 授予可执行权限
[root@localhost cli-plugins]#
2) 测试compose是否可以使用
[root@localhost cli-plugins]# docker compose version
Docker Compose version v2.7.0
[root@localhost cli-plugins]#
2、 使用compose --- 配置文件内容
Get started with Docker Compose | Docker Documentation
1) vim app.py
[root@docker-1 composetest]# pwd
/composetest
[root@docker-1 composetest]# cat app.py
import time
import redis
from flask import Flask
app = Flask(__name__)
cache = redis.Redis(host='redis', port=6379)
def get_hit_count():
retries = 5
while True:
try:
return cache.incr('hits')
except redis.exceptions.ConnectionError as exc:
if retries == 0:
raise exc
retries -= 1
time.sleep(0.5)
@app.route('/')
def hello():
count = get_hit_count()
return 'Hello World! I have been seen {} times.\n'.format(count)
2) vim requirements.txt
[root@docker-1 composetest]# cat requirements.txt
flask
redis
[root@docker-1 composetest]#
3)vim Dockerfile
[root@docker-1 composetest]# cat Dockerfile
#syntax=docker/dockerfile:1
FROM python:3.7-alpine
WORKDIR /code
ENV FLASK_APP=app.py
ENV FLASK_RUN_HOST=0.0.0.0
RUN apk add --no-cache gcc musl-dev linux-headers
COPY requirements.txt requirements.txt
RUN pip install -r requirements.txt
EXPOSE 5000
COPY . .
CMD ["flask", "run"]
4)docker-compose.yml
[root@docker-1 composetest]# lsof -i|grep 8000
[root@docker-1 composetest]# ###确保8000端口是空闲的
[root@docker-1 composetest]# cat docker-compose.yml
version: "3.9"
services:
web:
build: .
ports:
- "8000:5000"
redis:
image: "redis:alpine"
[root@docker-1 composetest]#
5) docker compose up
docker compose ps
[root@docker-1 composetest]# docker compose up -d
[+] Running 3/3
⠿ Network composetest_default Created 0.0s
⠿ Container composetest-redis-1 Started 0.7s
⠿ Container composetest-web-1 Started 0.8s
[root@docker-1 composetest]# pwd
/composetest
[root@docker-1 composetest]# docker compose ps
NAME COMMAND SERVICE STATUS PORTS
composetest-redis-1 "docker-entrypoint.s…" redis running 6379/tcp
composetest-web-1 "flask run" web running 0.0.0.0:8000->5000/tcp, :::8000->5000/tcp
[root@docker-1 composetest]#
浏览器查看
-
docker compose 是一台机器上进行容器编排的工具
-
docker swarm 是docker 官方推出的进行多台宿主机上进行容器编排的工具--》docker 集群里进行容器编排,跨宿主机了
-
k8s 是 云原生基金会(google主导)推出的进行多台宿主机上进行容器编排的工具--》集群里进行容器编排,跨宿主机了
3. compose and WordPress
Quickstart: Compose and WordPress | Docker Documentation
1) docker-compose.yml
[root@docker-1 /]# cd my_wordpress/
[root@docker-1 my_wordpress]# ls
docker-compose.yml
[root@docker-1 my_wordpress]# cat docker-compose.yml
services:
db:
# We use a mariadb image which supports both amd64 & arm64 architecture
image: mariadb:10.6.4-focal
# If you really want to use MySQL, uncomment the following line
#image: mysql:8.0.27
command: '--default-authentication-plugin=mysql_native_password'
volumes:
- db_data:/var/lib/mysql
restart: always
environment:
- MYSQL_ROOT_PASSWORD=sc123456
- MYSQL_DATABASE=wordpress
- MYSQL_USER=wordpress
- MYSQL_PASSWORD=wordpress
expose:
- 3306
- 33060
wordpress:
image: wordpress:latest
ports:
- 80:80
restart: always
environment:
- WORDPRESS_DB_HOST=db
- WORDPRESS_DB_USER=wordpress
- WORDPRESS_DB_PASSWORD=wordpress
- WORDPRESS_DB_NAME=wordpress
volumes:
db_data:
2)、docker compose up -d
浏览器访问主机ip:80,查看是否操作成功
WordPress 缺点:
只能在一台宿主机上编排容器
git,GitHub,GitLab它们的区别?
gitlab --》可以在公司内部搭建一个属于公司自己人在内部使用的代码托管平 台 私有云 The One DevOps Platform | GitLab github --》基于git的代码托管平台---》代码托管的网站--》git+网站=github --》国外的一个代码托管平台--》微软收购了 在公网上使用 公有云 git --》版本控制软件--》linux内核的作者linus gitee --》码云--》基于git的代码托管平台---》代码托管的网站--》git+网站=github --》国内的一个代码托管平台
常用容器编排工具:
1.compose
2.swarm
3.k8s