Docker 入门

Posted henryw

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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

以上是关于Docker 入门的主要内容,如果未能解决你的问题,请参考以下文章

Docker 入门

Docker部署Rstudio Server【一】:Docker入门

Docker入门教程Docker Registry

Docker入门

Docker Compose 入门(V3)

docker入门教程(搭建docker看)