当前位置: 首页 > news >正文

docker操作使用

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

Ubuntu Docker 安装

Docker 支持以下的 Ubuntu 版本:

  • Ubuntu Precise 12.04 (LTS)
  • Ubuntu Trusty 14.04 (LTS)
  • Ubuntu Wily 15.10
  • 其他更新的版本……

    前提条件

    Docker 要求 Ubuntu 系统的内核版本高于 3.10 ,查看本页面的前提条件来验证你的 Ubuntu 版本是否支持 Docker。

    通过 uname -r 命令查看你当前的内核版本

    runoob@runoob:~$ uname -r

    15152838_7oCg.png

    使用脚本安装 Docker

    1、获取最新版本的 Docker 安装包

    runoob@runoob:~$ wget -qO- https://get.docker.com/ | sh

    15152838_IKc9.png

    输入当前用户的密码后,就会下载脚本并且安装Docker及依赖包。

    15152838_XIQy.png

    15152838_OREz.png

    安装完成后有个提示:

        If you would like to use Docker as a non-root user, you should now consider
        adding your user to the "docker" group with something like:
    
        sudo usermod -aG docker runoob
       Remember that you will have to log out and back in for this to take effect!

    当要以非root用户可以直接运行docker时,需要执行 sudo usermod -aG docker runoob 命令,然后重新登陆,否则会有如下报错

    15152838_L04L.png

    2、启动docker 后台服务

    runoob@runoob:~$ sudo service docker start

    15152838_GLh6.png

    3、测试运行hello-world

    runoob@runoob:~$ docker run hello-world

    镜像加速

    鉴于国内网络问题,后续拉取 Docker 镜像十分缓慢,我们可以需要配置加速器来解决,我使用的是网易的镜像地址:http://hub-mirror.c.163.com。

    新版的 Docker 使用 /etc/docker/daemon.json(Linux) 或者 %programdata%\docker\config\daemon.json(Windows) 来配置 Daemon。

    请在该配置文件中加入(没有该文件的话,请先建一个):

    {
      "registry-mirrors": ["http://hub-mirror.c.163.com"]
    }

一、创建

  • docker create:创建容器,处于停止状态。 
    这里写图片描述

    • centos:latest:centos容器:最新版本(也可以指定具体的版本号)。
    • 本地有就使用本地镜像,没有则从远程镜像库拉取。
    • 创建成功后会返回一个容器的ID。
  • docker run:创建并启动容器。

交互型容器:运行在前台,容器中使用exit命令或者调用docker stop、docker kill命令,容器停止。

如下图已经在前台开启一个docker容器: 
这里写图片描述

  • i:打开容器的标准输入。
  • t:告诉docker为容器建立一个命令行终端。
  • name:指定容器名称,可以不填(随机),建议根据具体使用功能命名,便于管理。
  • centos:告诉我们使用什么镜像来启动容器。
  • /bin/bash:告诉docker要在容器里面执行此命令。

后台型容器:运行在后台,创建后与终端无关,只有调用docker stop、docker kill命令才能使容器停止。

这里写图片描述

  • d:使用-d参数,使容器在后台运行。
  • c: 通过-c可以调整容器的CPU优先级。默认情况下,所有的容器拥有相同的CPU优先级和CPU调度周期,但你可以通过Docker来通知内核给予某个或某几个容器更多的CPU计算周期。比如,我们使用-c或者–cpu-shares =0启动了C0、C1、C2三个容器,使用-c/–cpu-shares=512启动了C3容器。这时,C0、C1、C2可以100%的使用CPU资源(1024),但C3只能使用50%的CPU资源(512)。如果这个主机的操作系统是时序调度类型的,每个CPU时间片是100微秒,那么C0、C1、C2将完全使用掉这100微秒,而C3只能使用50微秒。
  • -c后的命令是循环,从而保持容器的运行。
  • docker ps:可以查看正在运行的docker容器。

二、查看

  • docker ps: 查看当前运行的容器
  • docker ps -a:查看所有容器,包括停止的。

这里写图片描述

  • 标题含义:

    • CONTAINER ID:容器的唯一表示ID。
    • IMAGE:创建容器时使用的镜像。
    • COMMAND:容器最后运行的命令。
    • CREATED:创建容器的时间。
    • STATUS:容器状态。
    • PORTS:对外开放的端口。
    • NAMES:容器名。可以和容器ID一样唯一标识容器,同一台宿主机上不允许有同名容器存在,否则会冲突。
  • docker ps -l :查看最新创建的容器,只列出最后创建的。

  • docker ps -n=2:-n=x选项,会列出最后创建的x个容器。

这里写图片描述

三、启动

通过docker start来启动之前已经停止的docker_run镜像。
  • 容器名:docker start docker_run,或者ID:docker start 43e3fef2266c
  • –restart(自动重启):默认情况下容器是不重启的,–restart标志会检查容器的退出码来决定容器是否重启容器。 
    • docker run --restart=always --name docker_restart -d centos /bin/sh -c "while true;do echo hello world; sleep;done":
    • --restart=always:不管容器的返回码是什么,都会重启容器。
    • --restart=on-failure:5:当容器的返回值是非0时才会重启容器。5是可选的重启次数。 
      这里写图片描述

四、终止

  • docker stop [NAME]/[CONTAINER ID]:将容器退出。
  • docker kill [NAME]/[CONTAINER ID]:强制停止一个容器。

这里写图片描述

五、删除

容器终止后,在需要的时候可以重新启动,确定不需要了,可以进行删除操作。
  • docker rm [NAME]/[CONTAINER ID]:不能够删除一个正在运行的容器,会报错。需要先停止容器。 
    这里写图片描述

  • 一次性删除:docker本身没有提供一次性删除操作,但是可以使用如下命令实现:

    • docker rm 'docker ps -a -q':-a标志列出所有容器,-q标志只列出容器的ID,然后传递给rm命令,依次删除容器。

docker可以支持把一个宿主机上的目录挂载到镜像里。

1

docker run -it -v /home/dock/Downloads:/usr/Downloads ubuntu64 /bin/bash

通过-v参数,冒号前为宿主机目录,必须为绝对路径,冒号后为镜像内挂载的路径。

现在镜像内就可以共享宿主机里的文件了。

默认挂载的路径权限为读写。如果指定为只读可以用:ro

 

1

    docker run -it -v /home/dock/Downloads:/usr/Downloads:ro ubuntu64 /bin/bash

docker还提供了一种高级的用法。叫数据卷。

数据卷:“其实就是一个正常的容器,专门用来提供数据卷供其它容器挂载的”。感觉像是由一个容器定义的一个数据挂载信息。其他的容器启动可以直接挂载数据卷容器中定义的挂载信息。

看示例:

1

docker run  --restart=always -v /home/dock/Downloads:/usr/Downloads  --name dataVol ubuntu64 /bin/bash

 

创建一个普通的容器。用--name给他指定了一个名(不指定的话会生成一个随机的名子)。

再创建一个新的容器,来使用这个数据卷。

1

docker run -it --volumes-from dataVol ubuntu64 /bin/bash

 

--volumes-from用来指定要从哪个数据卷来挂载数据。

转载于:https://my.oschina.net/lilinzero/blog/1812820

相关文章:

  • 【枚举】【贪心】Codeforces Round #482 (Div. 2) B. Treasure Hunt
  • Python学习笔记__6.3章 继承和多态
  • 如何高效的编写与同步博客 (.NET Core 小工具实现)
  • Mongodb对集合(表)和数据的CRUD操作
  • (2)Java 简介
  • innobackupex 在增量的基础上增量备份
  • elasticsearch+logstash+kibana+redis
  • 有向无环图(DAG)的最小路径覆盖
  • winSCP:无权访问
  • VS Code 折腾记 - (13) VS Live Share (可提高效率的代码实时协作插件)的使用姿势
  • 百度Api完成在线地图定位显示
  • windows堆栈研究以及线程安全
  • 给nginx生成自签名证书
  • Python之合并PDF文件
  • git 常用命令说明
  • 《Javascript高级程序设计 (第三版)》第五章 引用类型
  • canvas 五子棋游戏
  • dva中组件的懒加载
  • interface和setter,getter
  • Intervention/image 图片处理扩展包的安装和使用
  • opencv python Meanshift 和 Camshift
  • PHP 小技巧
  • PV统计优化设计
  • Python爬虫--- 1.3 BS4库的解析器
  • Python学习之路13-记分
  • REST架构的思考
  • spark本地环境的搭建到运行第一个spark程序
  • Vue.js 移动端适配之 vw 解决方案
  • Vue官网教程学习过程中值得记录的一些事情
  • 初识MongoDB分片
  • 从零开始在ubuntu上搭建node开发环境
  • 订阅Forge Viewer所有的事件
  • 对JS继承的一点思考
  • 如何将自己的网站分享到QQ空间,微信,微博等等
  • 小程序上传图片到七牛云(支持多张上传,预览,删除)
  • 浅谈sql中的in与not in,exists与not exists的区别
  • 曜石科技宣布获得千万级天使轮投资,全方面布局电竞产业链 ...
  • ​LeetCode解法汇总518. 零钱兑换 II
  • $refs 、$nextTic、动态组件、name的使用
  • (1)Map集合 (2)异常机制 (3)File类 (4)I/O流
  • (14)目标检测_SSD训练代码基于pytorch搭建代码
  • (八)五种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (二)Eureka服务搭建,服务注册,服务发现
  • (附源码)计算机毕业设计ssm基于B_S的汽车售后服务管理系统
  • (经验分享)作为一名普通本科计算机专业学生,我大学四年到底走了多少弯路
  • (九十四)函数和二维数组
  • (转)Oracle存储过程编写经验和优化措施
  • (转)创业的注意事项
  • .net core 依赖注入的基本用发
  • .NET Standard、.NET Framework 、.NET Core三者的关系与区别?
  • .NET 中让 Task 支持带超时的异步等待
  • .NET/C# 获取一个正在运行的进程的命令行参数
  • .NET/C# 在代码中测量代码执行耗时的建议(比较系统性能计数器和系统时间)
  • .NET微信公众号开发-2.0创建自定义菜单
  • .NET学习全景图