docker 总结

文章目录

  • 安装
    • wins
    • Ubuntu
  • 常用指令x
    • 全局api --help
    • 具体示例
    • 参考资料
  • docker参数详解
  • 常见问题
  • Dockerfile
    • 总结
    • 常见问题
  • 仓库
  • 资料

安装

wins

  • 安装教程
  • win10 家庭中文版没有Hyper-V,这样一步搞定
  • win7 如何快速下载DockerToolbox?使用国内开源镜像站点

Ubuntu

wget -qO- https://get.docker.com/ | sh
cat /etc/docker/daemon.json<<EOF
{
  "registry-mirrors": ["http://hub-mirror.c.163.com"]
}
EOF
systemctl daemon-reload
systemctl restart docker.service
systemctl enable docker

常用指令x

全局api --help

   - attach      介入到一个正在运行的容器
   - build       根据 Dockerfile 构建一个镜像
   - commit      根据容器的更改创建一个新的镜像
   - cp          在本地文件系统与容器中复制 文件/文件夹
   - create      创建一个新容器
   - exec        在容器中执行一条命令
   - images      列出镜像
   - kill        杀死一个或多个正在运行的容器
   - logs        取得容器的日志
   - pause       暂停一个或多个容器的所有进程
   - ps          列出所有容器
   - pull        拉取一个镜像或仓库到 registry
   - push        推送一个镜像或仓库到 registry
   - rename      重命名一个容器
   - restart     重新启动一个或多个容器
   - rm          删除一个或多个容器
   - rmi         删除一个或多个镜像
   - run         在一个新的容器中执行一条命令
   - search      在 Docker Hub 中搜索镜像
   - start       启动一个或多个已经停止运行的容器
   - stats       显示一个容器的实时资源占用
   - stop        停止一个或多个正在运行的容器
   - tag         为镜像创建一个新的标签
   - top         显示一个容器内的所有进程
   - unpause     恢复一个或多个容器内所有被暂停的进程 

具体示例

  • 查看容器列表
    docker ps [-a] [-l] [-n num]
  • 给容器命名
    docker run --rm --name crxy -t -i centos /bin/bash [--rm一次性运行]
  • 合法的容器名称正则[a-zA-Z0-9_.-]
  • 重新启动已经停止的容器
    docker start 容器名称/容器ID
  • 创建长期运行的容器
    docker run --name daemon_crxy -d centos /bin/bash -c "while true;do echo hello world; sleep 1; done"
  • 获取容器日志
    docker logs [--tail num] [-t] [-f] 容器名称/容器ID(日志位置/var/lib/docker/containers/ID/ID-json.log)
  • 查看容器内的进程
    docker top 容器名称/容器ID
  • 附着到一个容器上
    docker attach 容器名称/容器ID
  • 在容器内部运行进程(docker1.3之后才支持)
    docker exec -d daemon_crxy touch /etc/crxy_file
    docker exec -t -i daemon_crxy /bin/bash
  • 停止容器
    docker stop 容器名称/容器ID
    docker kill 容器名称/容器ID
  • 获取容器详细信息
docker inspect  [--format | -f] 容器名称/容器ID
- 例子:docker inspect --format='{{.State.Running}}' crxy
- 容器存储位置:/var/lib/docker/containers
  • 删除容器
    docker rm 容器名称/容器ID
    docker rmdocker ps -a -q//所有容器docker rmi --force docker images | grep doss-api | awk '{print $3}' //删除其中doss-api为关键字的容器

  • 容器的导入和导出

  • 导出:docker export 容器ID > my_container.tar

  • 导入:cat mycontainer.tar | docker import - 镜像名称:标签

  • 镜像的保存和加载

  • 保存:docker save 镜像ID > my_image.tar

  • 加载:docker load< my_image.tar

  • 拉取镜像文件到本地
    docker pull centos

  • 查看本地镜像:
    docker images

  • 查找镜像
    docker search [镜像名称]

  • 构建镜像

  • 使用docker commit 命令
    docker commit 容器名称/ID crxy/centos-tomcat
    docker commit -m="describe" --author="teacher" 容器名称/ID crxy/centos-tomcat:test

  • Docker 查看镜像详细信息
    docker inspect crxy/centos-tomcat:test

  • 使用docker build命令和Dockerfile文件(推荐)
    docker build -t="crxy/centos" .

  • 查看构建的步骤和层级
    docker history 用户ID/镜像名

  • 查看Docker镜像构建的细节每一步
    docker history d7c5abfe8477 --no-trunc=true

参考资料

  • docker容器中文件的上传与下载 - 姑苏慕容复 - 博客园
  • Docker容器开机自动启动 - 简书
  • docker 从一个容器中退出来后, 怎么再进入这个容器_ - wuyangchun的回答 - SegmentFault 思否
  • Docker设置容器开机自启动 - 清晨的第一抹阳光 - 博客园
  • docker push到私有仓库 - 季枫 - 博客园
  • Docker镜像推送(push)到Docker Hub - 纸上得来终觉浅,绝知此事要躬行 - CSDN博客
  • YAML2json
  • YAML快速入门 - 简书

docker参数详解

docker
useage of docker
-D 默认false 允许调试模式(debugmode)
-H 默认是unix:///var/run/docker.sock tcp://[host[:port]]来绑定 或者unix://[/path/to/socket]来使用(二进制文件的时候),当主机ip host=[0.0.0.0],(端口)port=[4243] 或者 path=[/var/run/docker.sock]是缺省值,做为默认值来使用
-api-enable-cors 默认flase 允许CORS header远程api
-b 默认是空,附加在已存在的网桥上,如果是用’none’参数,就禁用了容器的网络
-bip 默认是空,使用提供的CIDR(ClasslessInter-Domain Routing-无类型域间选路)标记地址动态创建网桥(dcoker0),和-b参数冲突
-d 默认false 允许进程模式(daemonmode)
-dns 默认是空,使docker使用指定的DNS服务器
-g 默认是"/var/lib/docker":作为docker使用的根路径
-icc 默认true,允许inter-container来通信
-ip 默认"0.0.0.0":绑定容器端口的默认Ip地址
-iptables 默认true 禁用docker添加iptables规则
-mtu 默认1500 : 设置容器网络传输的最大单元(mtu)
-p 默认是/var/run/docker.pid进程pid使用的文件路径
-r 默认是true 重启之前运行的容器
-s 默认是空 ,这个是docker运行是使用一个指定的存储驱动器
-v 默认false 打印版本信息和退出

docker run命令详解
Usage: docker run [OPTIONS] IMAGE[:TAG] [COMMAND] [ARG…]
Run a command in a new container
-a=map[]: 附加标准输入、输出或者错误输出
-c=0: 共享CPU格式(相对重要)
-cidfile="": 将容器的ID标识写入文件
-d=false: 分离模式,在后台运行容器,并且打印出容器ID
-e=[]:设置环境变量
-h="": 容器的主机名称
-i=false: 保持输入流开放即使没有附加输入流
-privileged=false: 给容器扩展的权限
-m="": 内存限制 (格式:, unit单位 = b, k, m or g)
-n=true: 允许镜像使用网络
-p=[]: 匹配镜像内的网络端口号
-rm=false:当容器退出时自动删除容器 (不能跟 -d一起使用)
-t=false: 分配一个伪造的终端输入
-u="": 用户名或者ID
-dns=[]: 自定义容器的DNS服务器
-v=[]: 创建一个挂载绑定:[host-dir]:[container-dir]:[rw|ro].如果容器目录丢失,docker会创建一个新的卷
-volumes-from="": 挂载容器所有的卷
-entrypoint="": 覆盖镜像设置默认的入口点
-w="": 工作目录内的容器
-lxc-conf=[]: 添加自定义-lxc-conf=“lxc.cgroup.cpuset.cpus = 0,1”
-sig-proxy=true: 代理接收所有进程信号(even in non-tty mode)
-expose=[]: 让你主机没有开放的端口
-link="": 连接到另一个容器(name:alias)
-name="": 分配容器的名称,如果没有指定就会随机生成一个
-P=false: Publish all exposed ports to thehost interfaces 公布所有显示的端口主机接口

docker常用命令总结
docker pull <镜像名:tag> #从官网拉取镜像
docker search <镜像名> #搜索在线可用镜像名

查询容器、镜像、日志
docker top #显示容器内运行的进程
docker images #查询所有的镜像,默认是最近创建的排在最上。
docker ps #查看正在运行的容器
docker ps -l #查看最后退出的容器的ID
docker ps -a #查看所有的容器,包括退出的。
docker logs {容器ID|容器名称} #查询某个容器的所有操作记录。
docker logs -f {容器ID|容器名称} #实时查看容易的操作记录。

删除容器与镜像
docker rmKaTeX parse error: Expected 'EOF', got '#' at position 19: …cker ps -a -q) #̲删除所有容器 docker…(docker images | grep none | awk ‘{print $3}’ | sort -r) #删除所有镜像

启动停止容器
docker stop <容器名or ID> #停止某个容器
docker start <容器名or ID> #启动某个容器
docker kill <容器名or ID> #杀掉某个容器

容器迁器
docker export > /home/export.tar #导出
cat /home/export.tar | sudo docker import - busybox-1-export:latest # 导入export.tar文件
docker save debian> /home/save.tar #将debian容器打包
docker load< /home/save.tar #在另一台服务器上加载打包文件
save和export的对比参考地址:http://www.fanli7.net/a/bianchengyuyan/C__/20140423/452256.html

常见问题

  • Docker为什么刚运行就退出了 - 焦国峰的随笔日记 - 博客园
  • Docker中latest标签引发的困惑 - DockOne.io
  • Ubuntu下docker使用非root权限运行docker - lynnyq - CSDN博客
  • docker run -v 挂载数据卷异常,容器状态一直是restarting - henghenghalala的博客 - CSDN博客
  • docker compose 一直 restarting , is restarting, wait until the container is running
  • _var_lib_docker_overlay2 占用很大,清理Docker占用的磁盘空间,迁移 _var_lib_docker 目录 - 七爷OK - CSDN博客
    可见排查/清理/迁移-磁盘空间过程文章

Dockerfile

  • Dockerfile文件详解 - 百衲本 - 博客园

总结

  • COPY 和 ADD 命令具有相同的特点:只复制目录中的内容而不包含目录自身。
  • RUN,CMD,ENTRYPOINT命令区别 :
    1. run在buide的时候就运行了,如果在这里启动服务将永远无法buide
    2. CMD容器启动后默认执行的命令及其参数,但CMD设置的命令能够被docker run命令后面的命令行参数替换
    3. ENTRYPOINT配置容器启动时的执行命令(不会被忽略,一定会被执行,即使运行 docker run时指定了其他命令),只会在命令后面追加。
# 以这种形式写的话,有空格就得""包起来。
# ENTRYPOINT ["java","-Xbootclasspath/a:./ -noverify","-jar","$WAR_NAME"] 运行报错。
ENTRYPOINT ["java","-Xbootclasspath/a:./","-noverify","-jar","$WAR_NAME"]

常见问题

  • Dockerfile 中的 COPY 与 ADD 命令 - sparkdev - 博客园
  • Dockerfile RUN,CMD,ENTRYPOINT命令区别 - 简书
  • Dockerfile RUN 同时执行多条命令 - 要坚持,要认真。 - CSDN博客

仓库

Harbor仓库介绍与搭建过程-运维生涯-51CTO博客;docker私有仓库

资料

  • docker官方文档翻译.pdf
  • docker讲义第二版.pdf
  • docker课程.ppt
  • Dockerfile.docx

你可能感兴趣的:(#,远舢智能,#,docker)