设为首页 收藏本站
查看: 668|回复: 0

[经验分享] docker 命令整理

[复制链接]

尚未签到

发表于 2018-5-27 07:41:47 | 显示全部楼层 |阅读模式
  docker 命令整理
  

  安装Docker:
  ubuntu安装:curl -s https://get.docker.io/ubuntu/ | sudo sh
  镜像管理
  docker images:列出本地所有镜像
  docker search <IMAGE_ID/NAME>:查找image
  docker pull <IMAGE_ID>:下载image
  docker push <IMAGE_ID>:上传image
  docker rmi <IMAGE_ID>:删除image
  

  容器管理
  docker run -i -t <IMAGE_ID> /bin/bash:-i:标准输入给容器    -t:分配一个虚拟终端    /bin/bash:执行bash脚本
  -d:以守护进程方式运行(后台)
  -P:默认匹配docker容器的5000端口号到宿主机的49153 to 65535端口
  -p <HOT_PORT>:<CONTAINER_PORT>:指定端口号
  - -name: 指定容器的名称
  - -rm:退出时删除容器
  

  

  docker stop <CONTAINER_ID>:停止container
  docker start <CONTAINER_ID>:重新启动container
  docker ps - Lists containers.
  -l:显示最后启动的容器
  -a:同时显示停止的容器,默认只显示启动状态
  

  docker attach <CONTAINER_ID> 连接到启动的容器
  docker logs <CONTAINER_ID>  : 输出容器日志
  -f:实时输出
  docker cp <CONTAINER_ID>:path hostpath:复制容器内的文件到宿主机目录上
  docker rm <CONTAINER_ID>:删除container
  docker rm `docker ps -a -q`:删除所有容器
  docker kill `docker ps -q`
  docker rmi `docker images -q -a`
  docker wait <CONTAINER_ID>:阻塞对容器的其他调用方法,直到容器停止后退出
  

  docker top <CONTAINER_ID>:查看容器中运行的进程
  docker diff <CONTAINER_ID>:查看容器中的变化
  docker inspect <CONTAINER_ID>:查看容器详细信息(输出为Json)
  -f:查找特定信息,如docker inspect -f '` `.`NetworkSettings`.`IPAddress `'
  docker commit -m "comment" -a "author" <CONTAINER_ID>  ouruser/imagename:tag
  

  docker extc -it <CONTAINER> <COMMAND>:在容器里执行命令,并输出结果
  

  

  网络管理
  docker run -P:随机分配端口号
  docker run -p 5000:5000:绑定特定端口号(主机的所有网络接口的5000端口均绑定容器的5000端口)
  docker run -p 127.0.0.1:5000:5000:绑定主机的特定接口的端口号
  docker run -d -p 127.0.0.1:5000:5000/udp training/webapp python app.py:绑定udp端口号
  docker port <CONTAINER_ID> 5000:查看容器的5000端口对应本地机器的IP和端口号
  使用Docker Linking连接容器:
  Docker为源容器和接收容器创建一个安全的通道,容器之间不需要暴露端口,接收的容器可以访问源容器的数据
  docker run -d -P --name <CONTAINER_NAME> --link <CONTAINER_NAME_TO_LINK>:<ALIAS>
  

  数据管理
  Data Volumes:volume是在一个或多个容器里指定的特殊目录
  数据卷可以在容器间共享和重复使用
  可以直接修改容器卷的数据
  容器卷里的数据不会被包含到镜像中
  容器卷保持到没有容器再使用它
  可以在容器启动的时候添加-v参数指定容器卷,也可以在Dockerfile里用VOLUMN命令添加
  docker run -d -P --name web -v /webapp training/webapp python app.py
  

  也可以将容器卷挂载到宿主机目录或宿主机的文件上,<容器目录或文件>的内容会被替换为<宿主机目录或文件>的内容,默认容器对这个目录有可读写权限
  docker run -d -P --name web -v <宿主机目录>:<容器目录> training/webapp python app.py
  

  可以通过指定ro,将权限改为只读
  docker run -d -P --name web -v <宿主机目录>:<容器目录>:ro training/webapp python app.py
  

  在一个容器创建容器卷后,其他容器便可以通过--volumes-from共享这个容器卷数据,如下:
  docker run -d -v /dbdata --name db1 training/postgres echo Data-only container for postgres
  

  首先启动了一个容器,并为这个容器增加一个数据卷/dbdata,然后启动另一个容器,共享这个数据卷
  docker run -d --volumes-from db1 --name db2 training/postgres
  

  此时db2使用了db1的容器卷,当容器db1被删除时,容器卷也不会被删除,只有所有容器不再使用此容器卷时,才会被删除
  docker rm -v:删除容器卷
  

  除了共享数据外,容器卷另一个作用是用来备份、恢复和迁移数据
  docker run --volumes-from db1 -v /home/backup:/backup ubuntu tar cvf /backup/backup.tar /dbdata
  

  启动一个容器数据卷使用db1容器的数据卷,同时新建立一个数据卷指向宿主机目录/home/backup,将/dbdata目录的数据压缩为/backup/backup.tar
  docker run -v /dbdata --name dbdata2 ubuntu /bin/bash
  docker run --volumes-from dbdata2 -v /home/backup:/backup busybox tar xvf /backup/backup.tar
  启动一个容器,同时把backup.tar的内容解压到容器的backup
  

  仓库管理
  docker login:登录
  

  

  

  

  保存对容器的修改(commit)
  当你对某一个容器做了修改之后(通过在容器中运行某一个命令),可以把对容器的修改保存下来,这样下次可以从保存后的最新状态运行该容器。
  ?
  1
  2
  # 保存对容器的修改; -a, --author="" Author; -m, --message="" Commit message
  $docker commit ID new_image_name
  

  # 列出一个容器里面被改变的文件或者目录,list列表会显示出三种事件,A 增加的,D 删除的,C 被改变的
  $docker diff Name/ID
  # 显示一个运行的容器里面的进程信息
  $docker top Name/ID
  # 从容器里面拷贝文件/目录到本地一个路径
  $docker cp Name:/container_path to_path
  $docker cp ID:/container_path to_path
  # 重启一个正在运行的容器; -t, --time=10 Number of seconds to try to stop for before killing the container, Default=10
  $docker restart Name/ID
  

  

  保存和加载镜像(save、load)
  当需要把一台机器上的镜像迁移到另一台机器的时候,需要保存镜像与加载镜像。
  

  

  

  

  

  # 保存镜像到一个tar包; -o, --output="" Write to an file
  $docker save image_name -o file_path
  # 加载一个tar包格式的镜像; -i, --input="" Read from a tar archive file
  $docker load -i file_path
  # 机器a
  $docker save image_name > /home/save.tar
  # 使用scp将save.tar拷到机器b上,然后:
  $docker load < /home/save.tar
  登录registry server(login)
  ?
  1
  2
  # 登陆registry server; -e, --email="" Email; -p, --password="" Password; -u, --username="" Username
  $docker login
  

  

  详解修改docker时区及docker常用命令
  

  docker cp /etc/localtime:【容器ID或者NAME】/etc/localtime
  

  apk add tzdata
  ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
  echo "Asia/Shanghai" > /etc/timezone
  

  ENV TZ=Asia/Shanghai
  RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
  

  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-481573-1-1.html 上篇帖子: docker没有关闭,重启服务器报错,解决方案 下篇帖子: docker容器时区与宿主机不一致的解决方法
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表