Docker

Docker国内镜像源

创建或修改 /etc/docker/daemon.json 文件

vi /etc/docker/daemon.json // Docker Engine修改

 "registry-mirrors" : [
   "http://mirror.ccs.tencentyun.com",
   "http://registry.cn-hangzhou.aliyuncs.com",
   "http://registry.docker-cn.com",
   "http://docker.mirrors.ustc.edu.cn",
   "http://hub-mirror.c.163.com"
 ],
 "insecure-registries" : [
   "registry.docker-cn.com",
   "docker.mirrors.ustc.edu.cn"
 ],
 "debug" : true,
 "experimental" : true

systemctl restart docker.service

  1. win10版本的docker可同时运行Windows container和Linux container。在powershell里运行

& 'C:\Program Files\Docker\Docker\DockerCli.exe' -SwitchDaemon

可直接进行切换。切换结果可通过docker version查看。

  1. 在docker setting里设置镜像路径。

中国官方镜像源地址为:https://registry.docker-cn.com

网易云docker镜像地址

https://c.163yun.com/hub#/m/library/
Docker中国源

国内的镜像源有
Hub · DaoCloud
docker官方中国区 https://registry.docker-cn.com
网易 http://hub-mirror.c.163.com
ustc http://docker.mirrors.ustc.edu.cn
注意registry-mirrors千万不要用https,而是用http,否则会显示No certs for egitstry.docker.com,
insecure-registries不要任何http头,否则无法通过。

阿里源地址为:https://cr.console.aliyun.com/cn-qingdao/mirrors

拉取centos镜像可直接运行 docker pull hub.c.163.com/library/centos:latest

Docker属于操作系统层面的虚拟化技术。由于隔离的进程独立于宿主和其它的隔离的进程,因此也称其为容器
Docker 在容器的基础上,进行了进一步的封装,从文件系统、网络互联到进程隔离等等,极大的简化了容器的创建和维护。使得 Docker 技术比虚拟机技术更为轻便、快捷

为什么要使用 Docker?

  1. 更高效的利用系统资源
  2. 更快速的启动时间
  3. 一致的运行环境
  4. 持续交付和部署

使用 Docker 可以通过定制应用镜像来实现持续集成、持续交付、部署。开发人员可以通过
Dockerfile 来进行镜像构建,并结合 持续集成(Continuous Integration) 系统进行集成测试,
而运维人员则可以直接在生产环境中快速部署该镜像,甚至结合 持续部署(Continuous
Delivery/Deployment) 系统进行自动部署。
而且使用 Dockerfile 使镜像构建透明化,不仅仅开发团队可以理解应用运行环境,也方便
运维团队理解应用运行所需条件,帮助更好的生产环境中部署该镜像

  1. 更轻松的迁移
  2. 更轻松的维护和扩展

对比传统虚拟机总结

特性 容器 虚拟机
启动 秒级 分钟级
硬盘使用 一般为 MB 一般为 GB
性能 接近原生 弱于
系统支持量 单机支持上千个容器 一般几十个

基本概念

Docker 包括三个基本概念

  1. 镜像( Image )
    镜像不包含任何动态数据,其内容在构建之后也不会被改变
  2. 容器( Container )
    镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删
    除、暂停等
    容器存储层的生存周期和容器一样,容器消亡时,容器存储层也随之消亡。因此,任何保存
    于容器存储层的信息都会随容器删除而丢失。
    按照 Docker 最佳实践的要求,容器不应该向其存储层内写入任何数据,容器存储层要保持无
    状态化。所有的文件写入操作,都应该使用 数据卷(Volume)、或者绑定宿主目录,在这些
    位置的读写会跳过容器存储层,直接对宿主(或网络存储)发生读写,其性能和稳定性更
    高。
    数据卷的生存周期独立于容器,容器消亡,数据卷不会消亡。因此,使用数据卷后,容器删
    除或者重新运行之后,数据却不会丢失
  3. 仓库( Repository )
    进入容器内部:docker run -it --name=c1 centos:7 /bin/bash 创建并启动
    -i:保持容器运行,直接进入容器,没有客户端连接时依然运行。exit退出后容器关闭
    -t:为容器分配伪输入终端
    -d:后台运行创建容器,不直接进入容器。exit退出后容器依然运行
    -it创建的容器一般称为交互式容器,-id为守护式容器
    c1:自己起的容器名字,前面的‘=’也可以写作‘’(空格)
    centos:镜像名
    7:镜像版本号
    /bin/bash:进入容器的初始化指令,centos默认。非必须
    -(i)d启动时,通过docker exec -it c2 /bin/bash进入容器
    启动容器:docker start c2
    停止容器:docker stop c2
    删除容器:docker rm c2
    查看所有容器:docker ps -aq
    查看容器信息:docker inspect c2

数据卷

一个数据卷可以被多个容器同时挂载,一个容器也可以被挂载多个数据卷
docker run ... -v 宿主机目录(文件):容器内目录(文件)
绝对路径。目录不存在,会自动创建
docker run -it --name=c1 -v 宿主机目录(文件):容器内目录(文件)centos:7 /bin/bash
\ :命令行换行,继续输入

停止、删除所有的docker容器和镜像

  • 列出所有的容器 ID
    docker ps -aq
  • 停止所有的容器
    docker stop $(docker ps -aq)
  • 删除所有的容器
    docker rm $(docker ps -aq)
  • 删除所有的镜像
    docker rmi $(docker images -q)
  • 复制文件
    docker cp mycontainer:/opt/file.txt /opt/local/docker cp /opt/local/file.txt mycontainer:/opt/

更新 : @snakeliwei 的提醒, 现在的docker有了专门清理资源(container、image、网络)的命令。 docker 1.13 中增加了docker system prune的命令,针对container、image可以使用docker container prune、docker image prune命令。

docker image prune --force --all或者docker image prune -f -a` : 删除所有不使用的镜像

docker container prune: 删除所有停止的容器

你可能感兴趣的:(Docker)