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