Docker 入門

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)
  • yml文件語法
# dict類型,冒號、- 後面都必須有空格, 嚴格要求縮進
name: 'henry'
age: 19
addr:
- 'haidian'
- 'beijing'

4. 經常使用命令

# 刪除 stoped 的容器
docker-compose rm
# 從新構建容器,自動調用當前目錄 .yml文件
docker-compose build 
# 查看容器狀態
docker-compose ps
# 查看 鏡像
docker-compose images
相關文章
相關標籤/搜索