博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
docker学习
阅读量:4510 次
发布时间:2019-06-08

本文共 2429 字,大约阅读时间需要 8 分钟。

docker常用命令

第一本docker书笔记

  • docker run -i -t ubuntu /bin/bash
    • -i 保证容器中的STDIN是开启的
    • -t 为创建的容器分配一个伪tty终端,新容器从而能提供一个交互式shell
    • docker help run
    • 基于ubuntu镜像来创建容器
    • 在新容器中要运行 /bin/bash 命令
    • --restart=always
    • --restart=on-failure:5 由于某种错误导致容器停止运行后,会自动重新启动该容器最多5次
  • docker top XXX

  • docker exec -d XXX touch /etc/new_config_file
    • 在容器的内部额外启动新进程:后台任务 或 交互式任务
    • 在XXX容器内部运行一个后台进程,执行的操作是touch
  • docker exec -it XXXX /bin/bash
    • 在XXX容器中启动一个打开shell的交互式任务
  • 本地镜像保存在 /var/lib/docker/containers

  • (基于已有的基础镜像)构建镜像
    • docker commit contiainerID repositoryName/containerName
    • docker build + Dockerfile
      • 执行步骤
        • Docker 从基础镜像运行一个容器
        • 执行一条指令,对容器做出修改
        • 执行类似docker commit的操作,提交一个新的镜像层
        • Docker再基于刚提交的镜像运行一个容器
        • 执行Dockerfile中的下一条指令,直到所有指令都执行完毕
      • RUN
        • 在当前镜像中运行指定的命令,会创建一个新的镜像层,如果指令执行成功,会将此镜像层提交
        • 默认会在shell里使用命令包装器/bin/sh -c来执行
        • 有exec格式的RUN指令

基本命令

  • 检查容器的主机名
    • hostname
    • cat /etc/hosts
    • ip a

其它笔记

  • 镜像 & 容器
    • 容器 = 镜像 + 可读写层
    • 镜像存储在Docker registry
  • 常用命令1
    • docker create
      • 为指定的镜像创建可读可写层,构成了一个新的容器
      • 创建一个容器但不运行它
    • docker start
      • 为容器文件系统创建了一个进程隔离空间
      • 重新启动一个已停止的容器(docker restart 也可以)
    • docker attach
      • 重新附着到容器的会话上
    • docker run
      • 先是利用镜像创建了一个容器,然后运行这个容器
      • docker create和docker start两个命令的组合
    • docker ps
      • 列出所有运行中的容器
    • docker ps -a
      • 列出所有的容器,不管是运行的,还是停止的
    • docker images
      • 列出所有顶层(top-level)镜像
    • docker images -a
      • 列出了所有的镜像,也可以说是列出了所有的可读层
    • docker stop
    • docker kill
    • docker pause
    • docker rm
  • 常用命令2
    • docker info
      • 验证安装正确
    • docker pull
      • docker pull registry.docker-cn.com/library/centos:7
    • docker help
      • 查看所有命令
    • docker search
      • 查找在registry中的镜像
  • 常用命令3
    • 参考
    • ctrl + p + q 退出登录但不关闭镜像
    • docker attach ID 进入镜像
    • 使用docker start DOCKER-NAME启动容器,docker exec ... 之后做修改,exit退出,再进入容器上次修改还在
  • 常用命令4
    • 启动容器
      • docker run --name DOCKER_NAME -it -v /host_dir:/docker_dir IMAGE_NAME:TAG -p host_port:docker_port /bin/bash IMAGE_NAME顺序在-v之后
      • docker start DOCKER_NAME
      • docker exec -it DOCKER_NAME /bin/bash
    • 退出容器
      • exit
    • 删除容器
      • docker rm
    • 删除镜像
      • docker rmi
    • 编写启动命令
      • alias g2d='docker exec -i -t $(docker ps -l -q) /bin/bash'
      • vi /usr/bin/startDocker
      docker start DOCKER-NAMEdocker exec -it DOCKER-NAME /bin/bash
  • 常用命令5
    • 从主机复制到容器
      • docker cp host_path containerID:container_path
    • 从容器复制到主机
      • docker cp containerID:container_path host_path
  • 常用命令6
    • 保存容器
      • docker commit ID NAME
    • 参考
  • 容器权限控制
    • --privileged
      • 拥有特权:所有cap,获取主机device等
    • --cap-add
    • --cap-drop
  • 在docker中使用gdb以及ptrace
    • docker run --cap-add=SYS_PTRACE --security-opt seccomp=unconfined
    • docker run --cap-add=SYS_PTRACE --security-opt seccomp:unconfined
    • 参考
    • docker run --net=host --privileged --cap-add=SYS_PTRACE --name NAME -it IMAGE_NAME /bin/bash
  • 参考

转载于:https://www.cnblogs.com/wangzhiyi/p/9427840.html

你可能感兴趣的文章
International Conference for Smart Health 2015 Call for Papers
查看>>
面向对象编程的介绍:三大特征:封装性, 继承, 多态.
查看>>
netty是什么?
查看>>
微信小店二次开发功能套餐列表
查看>>
ubuntu常见错误--Could not get lock /var/lib/dpkg/lock解决
查看>>
Java中BIO,NIO,AIO的理解
查看>>
浅谈Sql各种join的用法
查看>>
Durid数据库连接池配置(不使用框架)
查看>>
BarCode128B字符转换函数(PB,SQL)
查看>>
watir学习资料
查看>>
Jmeter属性和变量
查看>>
java并发编程:并发容器之CopyOnWriteArrayList(转)
查看>>
python基础——面向对象进阶下
查看>>
Linux vi 命令详解
查看>>
本地如何搭建IPv6环境测试你的APP
查看>>
oracle、mysql新增字段,字段存在则不处理
查看>>
CAP原理
查看>>
动态加载主题
查看>>
leetcode[125]Valid Palindrome
查看>>
访问一个绝对地址把一个整型数强制转换 (typecast)为一个指针是合法的
查看>>