去仓库把镜像拉到本地,用命令运行镜像,变成容器
Build-构建镜像 - [镜像 - 集装箱]Ship-运输镜像(从仓库和我们的主机上运输)- [仓库 - 超级码头]Run- 运行镜像(运行的镜像就是一个容器) - [容器 - 运行程序的地方]Docker运行过程:去仓库把镜像拉倒本地,然后用一条命令把镜像运行起来变成容器!
将镜像拉到本地,执行命令使其运行,成为一个容器。
镜像就是一系列的文件:应用文件、环境文件。镜像的存储格式:联合文件系统,不同目录挂载到同一个目录下
通过联合文件系统达到文件分层的效果,镜像就是一系列分层文件的组合,这些文件是只读的。联合文件系统,能够在一个目录下显示不同目录的内容
镜像的每一层都是只读的,修改时会将镜像拷到Docker容器的最上层,在修改,修改后读文件时从上往下读取
容器的最上层是可写的,除了最上层,之外的都是只读的,所以同一个镜像的可以放到很多不用容器之中,并且修改下层时互不影响
总结:Docker容器:容器的最顶层是可以RW的。容器下面的镜像:只读。=> 一份镜像可以对应多个容器,各部分独立。
docker默认仓库:hub.docker.com网易提供仓库:c.163.com
Docker 默认仓库hub.docker.comDocker 也支持在内网自己搭建仓库
docker仓库。1.hub.docker自己提供的,速度很慢2.国内自己提供的,如网易蜂巢;
可以实现自己的docker仓库,在内网使用,这样子可以隐私
docker的安装1.如果非window,要先安装docker_tools
win10: www.docker.com/products/docker#/
windowswin10之外:http://www.docker.com/products/docker-toolbox
2.安装缓存boot2docker.isohttp://pan.baicu.com/s/1qYyc0ag
MacOS Yosemite 10.10.3+(2014/6) 下载地址 https://www.docker.com/products/docker#/mac
旧版本 下载地址 https://www.docker.com/products/docker-toolbox
运行命令会看到 docker version 查看是否安装成功;
linux Redhat & CentOS 系统要求64-bit OS version 3.10
Ubuntu 系统要求64-bit OS version 3.10
uname -r 【查询linux版本】
切换到root权限下,su 更新apt-get update
uname -r 检查内核版本命令apt-get install -y docker.io
ubuntu启动docker:service docker start安装官网最新版本命令curl -s https://get.docker.com|sh
使用curl -s https://get.docker.com|sh 命令来安装docker
1.ubuntucurl来获取最新的文件apt-get来下载系统配置源的软件,可能不是最新的软件版本2.与centos不一样yum3.wget与curl的区别是wget与curl都能下载东西,只是不同的工具
docker pull 从远程拉取镜像
docker images 查看本机所有镜像
pull 从默认的码头(也就是公共的超级大的仓库 市场)(hub.docker.com) 拉取集装箱(images) 对应 shipimages 本地的仓库 可以查看共有多少个集装箱(images)
名词解释:REPOSTTORY : 镜像名字 TAG : 版本(lastest 最新版)IMAGE ID : 64 位的字符串,可以唯一标识镜像,这里只显示16位,后面的被截掉了。CREATED : 创建时间 (最后修改时间)SIZE : 大小
拉取镜像:docker pull [OPTION] NAME[:TAG] 查看镜像:docker images[OPTION] [REPOSITORY[:TAG]]
安装完成后的例子,如 : docker pull hello-world
docker images
没有提供地址的时候,使用docker pull 是从默认的仓库 下载
Docker 运行一个镜像变为容器,运行docker docker run [OPTION] IMAGE[:TAG] [COMMAND] [ARG…]
docker run流程:客户端向docker daemon发送一条pull命令,docker daemon会先在本机查找镜像,如果没找到则去远程仓库里找,然后把镜像下载到本地,下载回来后通过一定的方式将镜像运行起来,变成docker容器。
如运行 docker run hello-world
运行 nginx 先拉取 docker pull hub.c.163.com/library/nginx:latest
docker ps:查看正在机器上运行的容器
docker run -d:后台运行 docker run --help
docker exec:在运行的容器中运行命令
docker pull nginx:latest 从 hub.docker.com 仓库拉取 latest 版本的 nginx 镜像
docker run nginx:latest 在前台运行 latest 版本的 nginx 镜像,若想退出使用 Ctrl + C 快捷键即可
docker run -d nginx:latest 在后台运行一个新的 latest 版本的 nginx 镜像
docker stop nginx:latest 停止后台 latest 版本的所有镜像, command 可以是启动后的镜像 id,也可以是镜像名称
docker images 当前存在的镜像docker search name 搜索镜像docker pull name 拉取镜像,name是镜像名
docker run -d IMAGE 执行镜像 -d 后台执行docker ps 查看在docker上运行的程序
docker exec [OPTIONS] CONTAINER COMMAND [ARG…]
exec:在运行的容器中执行命令。OPTIONS说明:-d :分离模式: 在后台运行-i :即使没有附加也保持STDIN 打开-t :分配一个伪终端
docker exec --help
docker exec -it 835 bash
好像进入linux 然后 ls which nginx ps -ef exit等
docker网络bridge与host的不一样bridge是网桥,docker和主机都有自己的ip地址,中间是通过网桥来端口映射来通信。host是共用主机的网卡
docker 开放端口给外部网络访问-p 是开放指定的端口,与上面,开本机端口8080映射到nginx的80端口-P 是由系统分配,分配没有使用的,暴露的接口给dockerdocker ps 可以查看进程,并看端口,连接
docker stop -f 停掉docker运行的f开头的镜像