Docker核心概念
镜像(image) Docker 镜像(Image)就是一个只读的模板。例如:一个镜像可以包含一个完整的操作系统环境,里面仅安装了 Apache 或用户需要的其它应用程序。镜像可以用来创建 Docker 容器,一个镜像可以创建很多容器。Docker 提供了一个很简单的机制来创建镜像或者更新现有的镜像,用户甚至可以直接从其他人那里下载一个已经做好的镜像来直接使用。
仓库(repository) 仓库(Repository)是集中存放镜像文件的场所。有时候会把仓库和仓库注册服务器(Registry)混为一谈,并不严格区分。实际上,仓库注册服务器上往往存放着多个仓库,每个仓库中又包含了多个镜像,每个镜像有不同的标签(tag)。
仓库分为公开仓库(Public)和私有仓库(Private)两种形式。最大的公开仓库是 Docker Hub,存放了数量庞大的镜像供用户下载。国内的公开仓库包括 时速云 、网易云 等,可以提供大陆用户更稳定快速的访问。当然,用户也可以在本地网络内创建一个私有仓库。
当用户创建了自己的镜像之后就可以使用 push 命令将它上传到公有或者私有仓库,这样下次在另外一台机器上使用这个镜像时候,只需要从仓库上 pull 下来就可以了。
Docker 仓库的概念跟 Git 类似,注册服务器可以理解为 GitHub 这样的托管服务。
容器(container) Docker 利用容器(Container)来运行应用。容器是从镜像创建的运行实例。它可以被启动、开始、停止、删除。每个容器都是相互隔离的、保证安全的平台。可以把容器看做是一个简易版的 Linux 环境(包括root用户权限、进程空间、用户空间和网络空间等)和运行在其中的应用程序。
容器的定义和镜像几乎一模一样,也是一堆层的统一视角,唯一区别在于容器的最上面那一层是可读可写的。
常用命令
显示版本号
docker --versions
显示镜像
docker images
构建镜像
sudo docker build -t 'myflask' .
保存镜像
docker save -o /home/dyufei/tensorflow.tar tensorflow/tensorflow
或者 docker save tensorflow/tensorflow > /home/dyufei/tensorflow.tar
加载镜像
docker load -i 'c:/123/tensorflow.tar’
运行容器
sudo docker run -it --rm -v /Users/liuyue/wodfan/work/myflask:/Project/myflask -p 5000:5000 myflask
docker run -it --rm -p 5000:5000 -v /Users/liuyue/wodfan/work/myflask:/Project/myflask myflask
后台运行
sudo docker run -d -p 5000:5000 --name test-flask-1 myflask
登录系统 镜像编号
docker run -ti 6866
docker run -it centos /bin/bash
进入镜像并且开启终端
docker exec -it mynginx /bin/bash
#如果出现任何关于node依赖的问题导致服务无法启动,执行npm install无法解决的,则安装rimraf,然后进入项目目录下,执行rimraf node_modules 删除后,重新执行 npm install 安装依赖;删除node_modules npm install rimraf -g rimraf node_modules
安装
下载地址 http://get.daocloud.io/
由于安装过git,我取消了git的安装,启动Docker Quickstart Terminal失败,缺少快捷方式:
右键属性,修改目标中git的路径
启动Docker Quickstart Terminal一直在下载boot2docker.iso失败,由于它是从github上下载的比较慢,有2种解决方案:1. 复制下载的github地址,自己下载,然后复制到C:Users[你自己的电脑账号].dockermachinecache
2. 直接复制你docker toolbox下的文件到上面的地址,然后断网启动
简单使用
安装完成之后在桌面上有三个软件
-
下载本地的workflow.tar文件
-
docker info #查看信息
-
展示本地的所有镜像
-
创建镜像容器并运行
-
展示所有容器
-
开启守护进程
-
停止服务
-
强制删除
注意:每次执行docker run -it -p 80:80 a580a都会创建一个容器,如果想运行上次创建的容器,可以执行docker start containId,containId为docker ps 查出的id。