zoukankan      html  css  js  c++  java
  • docker 的一些基础概念

    docker command
    systemctl start docker
    systemctl restart docker
    systemctl enable docker
    配置加速镜像
    添加配置
    vi /etc/docker/daemmon.json
    {
    "registry-mirrors":[
    "http://hub-mirror.c.163.com"
    ]
    }
    加载配置
    systemctl daemon-reload
    重启docker
    systemctl restart docker

    docker ps -a 查看所有容器进程
    docker rm xxxxxxxx 移除容器xxxxxxxx
    docker rmi hello-world 移除hello-world镜像

    docker 镜像相关的命令 docker pull --help
    从docker 仓库获取镜像 docker pull [选项]

    docker image ls 列出所有下载过的镜像(docker images)
    [root@pikzas docker]# docker image ls
    REPOSITORY TAG IMAGE ID CREATED SIZE
    ubuntu 16.04 065cf14a189c 4 weeks ago 135MB
    hello-world latest d1165f221234 4 months ago 13.3kB
    ubuntu 096efd74bb89 9 months ago 127MB

    [root@pikzas docker]# docker system df
    TYPE TOTAL ACTIVE SIZE RECLAIMABLE
    Images 3 1 262.3MB 262.3MB (99%)
    Containers 1 0 0B 0B
    Local Volumes 0 0 0B 0B
    Build Cache 0 0 0B 0B

    查看镜像 容器 数据卷所占用空间
    doceker system df
    [root@pikzas docker]# docker system df
    TYPE TOTAL ACTIVE SIZE RECLAIMABLE
    Images 3 1 262.3MB 262.3MB (99%)
    Containers 1 0 0B 0B
    Local Volumes 0 0 0B 0B
    Build Cache 0 0 0B 0B

    仓库名 和标签都为none的镜像为虚悬镜像
    docker image ls -f dangling=true
    [root@pikzas pikzas]# docker images
    REPOSITORY TAG IMAGE ID CREATED SIZE
    f0b57b1e7fd9 22 seconds ago 135MB
    ubuntu 16.04 065cf14a189c 4 weeks ago 135MB
    hello-world latest d1165f221234 4 months ago 13.3kB
    ubuntu 096efd74bb89 9 months ago 127MB

    虚悬镜像是可以直接删除的
    可以用命令 docker image prune来删除掉所有的虚悬镜像

    删除本地镜像
    docker rmi [选项] <镜像1> <镜像2>
    <镜像> 可以是短ID 长ID 镜像名 或者是镜像摘要

    镜像查询用 docker image ls -q
    [root@pikzas pikzas]# docker image ls -q hello-world
    d1165f221234

    于是批量删除可以结合以上两个命令
    docker image rm $(docker image ls -q xxx -f before=xxx:1.0) 删除所有xxx:1.0之前的所有镜像

    docker 容器的操作
    新建并启动 或者启动停止的机器
    docker run
    docker start
    [root@pikzas ~]# docker run -it ubuntu:16.04 bash
    root@4e2a8f71de37:/#

    通过添加-d 参数来开启后台运行
    [root@pikzas ~]# docker run -d hello-world
    c11e78317c1f34b13d1c441a6998980ddce3be23b2b090ed3968ea4fefb5696f

    docker logs 查看后台运行的容器日志
    [root@pikzas ~]# docker logs c11e78317c1f34b13d1c441a6998980ddce3be23b2b090ed3968ea4fefb5696f

    Hello from Docker!
    This message shows that your installation appears to be working correctly.

    docker container stop 停止一个容器
    docker container ls -a 列出所有停止运行的容器
    docker container start 启动一个容器
    docker container restart 重新启动一个
    docker exec 进去运行中的容器

    [root@pikzas ~]# docker exec -it 95d86d0cd867 bash
    root@95d86d0cd867:/# ll
    total 20
    drwxr-xr-x 21 root root 4096 Jul 19 01:30 ./
    drwxr-xr-x 21 root root 4096 Jul 19 01:30 ../
    -rwxr-xr-x 1 root root 0 Jul 19 01:30 .dockerenv*
    drwxr-xr-x 2 root root 4096 Jun 11 23:09 bin/
    drwxr-xr-x 2 root root 6 Apr 12 2016 boot/
    drwxr-xr-x 5 root root 360 Jul 19 01:32 dev/

    docker export > x.zip 将指定的容器导出到x.zip 为一个快照
    docker import 导入快照为本地镜像
    cat x.zip | docker import - 镜像用户/镜像名称:镜像版本
    同样可以通过url 或者目录来导入
    docker import http://study.163.com/image.tgz example/imagerepo

    删除容器(只有终止状态的容易可以被删除,运行状态的不可删除)
    docker container rm ubuntu:16.04
    强行要删除运行状态的容器 需要添加-f 强制停止容器

    删除所有停止状态的容器
    docker container prune
    [root@pikzas ~]# docker container ls -a
    CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
    4e2a8f71de37 ubuntu:16.04 "bash" 2 hours ago Exited (127) About an hour ago focused_pasteur
    971fde08741d hello-world "/hello" 12 hours ago Exited (0) 12 hours ago nostalgic_brahmagupta
    [root@pikzas ~]# docker container prune
    WARNING! This will remove all stopped containers.
    Are you sure you want to continue? [y/N] y
    ^[[ADeleted Containers:
    4e2a8f71de372dcdc8cde4c86eca83c673228b8fe9bd0b07c34e5a32d4cc0b1b
    971fde08741dff0af5760d73f127eb8ad4c7fb9a97aac1220f45e22425d54c1c

    Total reclaimed space: 28B
    [root@pikzas ~]# docker container ls -a
    CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
    [root@pikzas ~]#

    dockfile 定制镜像

    • 就是指定容器每一层需要的配置 然后以配置文件的形式指定具体的细节
      FROM 命令
      RUN 命令
      COPY 命令
      ADD 命令
      CMD 命令
      ENV 命令 设置环境变量
      ARG 命令
      VOLUMN 命令 VOLUMN <路径> docker 不推荐直接在容器内部写文件数据
      EXPOSE <端口> 声明映射的端口
      WORKDIR <工作路径> 指定当前工作的路径
      ONBUILD
      docker save

    docker hub 搭建私有仓库
    docker-registry
    curl 127.0.0.1:5000/v2/_catalog查看本地安装的docker 内有哪些镜像

    Dockerfile 默认就是该文件为配置
    docker build -t myimage:1.0 .
    构建当前目录下的Dockerfile 为一个新的镜像并命名为myimage版本为1.0

    DOCKER 创建数据卷
    docker三种写入数据的方式
    数据卷 挂载主机目录 内存

    创建数据卷
    docker volumn create my-volumn
    docker volumn ls
    docker volumn inspect my-volumn

    docker run 使用--mount

    docker run --name session-web -d -p 8888:8080 --mount type=bind,source=/src/webapp,target=/opt/webapp session-web:latest

    删除数据卷
    docker volumn rm test
    一般情况下删除容器不会删除这些容器所使用的数据卷
    但是还是可以通过docker rm -v 再删除容器的同时候 一起删除掉所使用的数据卷

    docker volume prune 可以删除无容器引用的数据卷

    docker compose的使用

    docker 的监控工具
    类似于ELK 可以用CAdvisor + InfluxDB + Grafana
    Grafana UI展示界面
    InfluxDB 开源的时序化存储的DB 用来存储docker 运行的监控数据
    CAdvisor 收集容器运行时的数据

    部署InfluxDB 服务
    docker run -d --name influxdb -p 8086:8086 -v /data/influxdb:/var/lib/influxdb --hostname=influxdb influxdb

    访问管理的客户端
    http://ip:8083

    docker exec -it influxdb influx

    CREATE DATABASE "test"
    CREATE USER "root" WITH PASSWORD 'root' WITH ALL PRIVILEGES

    部署CAdvisor 服务
    部署Granfana 服务
    docker run -d -p 3000:3000 -v /data/grafana:/var/lib/grafana --link=influxdb:influxdb --name grafana grafana/grafana

    言之有物
  • 相关阅读:
    从B树、B+树、B*树谈到R 树
    1.红黑树和自平衡二叉(查找)树区别 2.红黑树与B树的区别
    红黑树 Java实现
    自平衡二叉(查找树/搜索树/排序树) binary search tree
    从零开始: 二叉查找
    深入理解JAVA虚拟机JVM
    java中的变量各占得字节数
    java中new两个对象,在堆中开辟几个对象空间
    Spring面试,IoC和AOP的理解, @Transactional原理及使用
    EasyUI Tabs + Yii2.0实现iframe方式打开页面(解决共用静态文件引入加载的问题)
  • 原文地址:https://www.cnblogs.com/Pikzas/p/15058267.html
Copyright © 2011-2022 走看看