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
- win10版本的docker可同时运行Windows container和Linux container。在powershell里运行
& 'C:\Program Files\Docker\Docker\DockerCli.exe' -SwitchDaemon
可直接进行切换。切换结果可通过docker version查看。
- 在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?
- 更高效的利用系统资源
- 更快速的启动时间
- 一致的运行环境
- 持续交付和部署
使用 Docker 可以通过定制应用镜像来实现持续集成、持续交付、部署。开发人员可以通过
Dockerfile 来进行镜像构建,并结合 持续集成(Continuous Integration) 系统进行集成测试,
而运维人员则可以直接在生产环境中快速部署该镜像,甚至结合 持续部署(Continuous
Delivery/Deployment) 系统进行自动部署。
而且使用 Dockerfile 使镜像构建透明化,不仅仅开发团队可以理解应用运行环境,也方便
运维团队理解应用运行所需条件,帮助更好的生产环境中部署该镜像
- 更轻松的迁移
- 更轻松的维护和扩展
对比传统虚拟机总结
特性 | 容器 | 虚拟机 |
---|---|---|
启动 | 秒级 | 分钟级 |
硬盘使用 | 一般为 MB | 一般为 GB |
性能 | 接近原生 | 弱于 |
系统支持量 | 单机支持上千个容器 | 一般几十个 |
基本概念
Docker 包括三个基本概念
- 镜像( Image )
镜像不包含任何动态数据,其内容在构建之后也不会被改变 - 容器( Container )
镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删
除、暂停等
容器存储层的生存周期和容器一样,容器消亡时,容器存储层也随之消亡。因此,任何保存
于容器存储层的信息都会随容器删除而丢失。
按照 Docker 最佳实践的要求,容器不应该向其存储层内写入任何数据,容器存储层要保持无
状态化。所有的文件写入操作,都应该使用 数据卷(Volume)、或者绑定宿主目录,在这些
位置的读写会跳过容器存储层,直接对宿主(或网络存储)发生读写,其性能和稳定性更
高。
数据卷的生存周期独立于容器,容器消亡,数据卷不会消亡。因此,使用数据卷后,容器删
除或者重新运行之后,数据却不会丢失 - 仓库( 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: 删除所有停止的容器