docke基础
0. 基础概念
- 容器是随时创建,随时删除的,轻量级,每次docker run 都会生成新的容器记录
1. 安装docker
# 删除旧版本的docker
yum remove docker*
# 指定docker-ce源
wget -O /etc/yum.repos.d/docker-ce.repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 安装
yum install -y docker-ce
# 启动docker
systemctl start docker
# 编辑配置文件 /etc/docker/daemon.json
{
"registry-mirrors": [
"https://1nj0zren.mirror.aliyuncs.com",
"https://docker.mirrors.ustc.edu.cn",
"http://f1361db2.m.daocloud.io",
"https://registry.docker-cn.com"
]
}
# 测试hello-world
docker run -it hello-world
2. docker仓库
- 使用官方的 registry 镜像来启动私有仓库。
- 默认情况下,仓库会被创建在容器的 /var/lib/registry 目录下。
- 可以通过 -v 参数来将镜像文件存放在本地的指定路径。
搭建私有 docker 仓库流程
# 1. 宿主机port:docker的port
# --privileged=true,docker容器的安全机制:设置特权级运行的容器
# --restart=always,仓库挂掉会重启
docker run --privileged=true --restart=always -d -p 5000:5000 -v /opt/data/registry:/var/lib/registry registry
# 2. 修改 /etc/docker/daemon.json
{
# 镜像加速器
"registry-mirrors": [
"https://1nj0zren.mirror.aliyuncs.com",
"https://docker.mirrors.ustc.edu.cn",
"http://f1361db2.m.daocloud.io",
"https://registry.docker-cn.com"
],
# 本地仓库地址
"insecure-registries":["172.16.44.142:5000"]
}
# 3. 修改docker的启动文件
vim /lib/systemd/system/docker.service
[Service]
EnvironmentFile=-/etc/docker/daemon.json
# 4. 修改了docker配置文件,重新加载docker
systemctl daemon-reload
# 5. 重启docker服务
systemctl restart docker
# 6. 修改名称,push镜像
docker tag redis-test 172.16.44.142:5000/redis
docker push 172.16.44.142:5000/redis
# 7. 查看
curl 172.16.44.142:5000/v2/_catalog
3. docker-compose
- docker编排工具:swarms,docker-compose
- yml/yaml 语法
# 安装docker-compose
pip install docker-compose
# yml可以用来做配置文件,后缀名:yml,yaml,数据类型string,int,list,dict...
vim docker-compose.yml
version: "3" # 和docker版本相对应
services:
web:
build:
context: . # 指定dockerfile文件目录
dockerfile: "dockerfile文件" # 指定dockerfile文件名
ports:
- "3000:5000
redis:
image: "redis" # 镜像名称
:wq
# 启动
docker-compose up
# flask应用
from flask import Flask
app = Flask(__name__)
@app.route('/')
def index():
return 'Hello Flask'
if __name__ = '__main__':
app.run('0.0.0.0', 5000)
# dict类型,冒号、- 后面都必须有空格, 严格要求缩进
name: 'henry'
age: 19
addr:
- 'haidian'
- 'beijing'
4. 常用命令
# 删除 stoped 的容器
docker-compose rm
# 重新构建容器,自动调用当前目录 .yml文件
docker-compose build
# 查看容器状态
docker-compose ps
# 查看 镜像
docker-compose images