docker 概念初识
Posted pclover11
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了docker 概念初识相关的知识,希望对你有一定的参考价值。
1 docker 优势,一次创建或配置可以在任意时间、任意环境让应用正常的运行。
- 快速交付和部署,开发人员可以使用镜像快速构建一套标准的开发环境;开发完后测试和运维人员可以直接使用相同的环境来部署代码。
- 更轻松的迁移和扩展,docker容器可以在任意平台上运行,包括物理机、虚拟机、公有云、私有云、个人电脑、服务器等。
- 更简单的更新管理,使用 dockerfile 只需修改配置就可以代替以前的大量更新工作。
2 概念区分:镜像、容器、仓库
2.1 docker镜像:类似于虚拟机镜像,可以理解为面向 docker 引擎的只读模板,包含了文件系统。镜像是创建docker 容器的基础。通过版本控制和增量的文件系统,来创建和更新现有的镜像。
2.2 docker容器:类似于轻量级的沙箱,docker 利用容器来运行和隔离应用。镜像自身是只读的,容器从镜像启动的时候,docker 会在镜像的最上层创建一个可写层,镜像本身保持不变。
2.3 docker仓库:类似于代码仓库,是 docker 集中存放镜像文件的场所。
2.4 registry(注册服务器):存放仓库的地方
3 ubuntu 16.04 系统下安装docker 环境
方法一:安装老版本
$ sudo apt-get install apt-transport-https $ sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 36A1D7869245C8950F966E92D8576A8BA88D21E9 $ sudo bash -c "echo deb https://get.docker.io/ubuntu docker main > /etc/apt/sources.list.d/docker.list"
$ sudo apt-get update 之后,可以通过下面的命令来安装最新版本的 Docker: $ sudo apt-get install -y lxc-docker 在安装了 Docker 官方软件源后,若需要更新 Docker 软件版本,只需要执行以下命令即可升级: $ sudo apt-get update -y lxc-docker
方法二:安装新版本docker-ce
sudo apt-get update //Install packages to allow apt to use a repository over HTTPS: sudo apt-get install apt-transport-https ca-certificates curl software-properties-common //Add Docker’s official GPG key: curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
//国内用户可以使用镜像源加快安装速度
curl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/gpg | sudo apt-key add - /* Verify that you now have the key with the fingerprint 9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88, by searching for the last 8 characters of the fingerprint. */ sudo apt-key fingerprint 0EBFCD88 //add docker repository to source.list set up the stable repository sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
//国内用户可以使用国内镜像源
sudo add-apt-repository "deb [arch=amd64] https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
//INSTALL DOCKER CE sudo apt-get update //Install the latest version of Docker CE sudo apt-get install docker-ce
3.2 建立 docker 用户组
默认情况下,docker 命令会使用 unix socket 与 docker 引擎通信。只有 root 和 docker 组的用户才可以访问 docker 引擎的 unix socket。一般将需要使用docker 的用户添加到 docker 用户组
//建立 docker 组: sudo groupadd docker //将当前用户加入 docker 组: sudo usermod -aG docker $USER
退出当前终端并重新登录
4 docker 运行前需要本地存在对应的镜像,如果本地不存在,docker 会尝试从默认镜像仓库下载,也可以通过配置使用自定义镜像仓库。
4.1 镜像加速
对于国内用户从中央仓库下载速度会很慢,可以使用国内镜像加速下载。配置方法 如下:我的系统是ubuntu16.04
方法一:
vi etc/docker/daemon.json //在文件中添加如下内容 { "registry-mirrors": ["https://registry.docker-cn.com"] }
保存后重新启动docker
$ sudo systemctl daemon-reload
$ sudo systemctl restart docker
方法二:
//关闭docker服务 # systemctl stop docker // configure the Docker daemon with the --registry-mirror startup parameter: # dockerd --registry-mirror=https://registry.docker-cn.com
操作完成后检查加速是否成功:
docker info
看到如下内容便成功了
5 常用命令
5.1 获取镜像
docker pull NAME[:TAG]
如果不显示指定TAG,默认下载最新版本。
例如 docker pull ubuntu:14.04,下载14.04标签的ubuntu镜像。也可以指定注册服务器仓库下载,使用如下命令
sudo docker pull dl.dockerpool.com:5000/ubuntu //表示从Dockerpool 社区镜像源dl.dockerpool.com 下载最新的 ubuntu 镜像
tag 信息用于标记统一仓库的不同镜像
更新本地镜像标签命令
docker tag 原tag 目标tag 例如: docker tag dl.dockerpool.com:5000/ubuntu:12.04 ubuntu:12.04
5.2 查看镜像信息
//可以查看本机上已有的镜像
docker images
//docker inspect 命令可以查看镜像的详细信息
5.3 搜寻镜像:docker search,如下
sudo docker search mysql
5.4 删除镜像、容器:
5.4.1 使用镜像标签删除镜像 docker rmi IMAGE[IMAGE...] 其中IMAGE 可以为标签或 ID
//例如要删除 dl.dockerpool.com:5000/ubuntu:latest sudo docker rmi dl.dockerpool.com:5000/ubuntu
5.4.2 使用镜像 ID 删除镜像
docker rmi 镜像ID
会尝试删除所有指向该镜像的标签,然后删除镜像本身。
说明:当该镜像创建的容器存在时,镜像文件默认是不能删除的。
5.4.3 查看本机上所有容器
docker ps -a
6 创建镜像的方式有3种
- 6.1 基于已有的镜像容器创建
- 6.2 基于本地模板导入
- 6.3 基于dockerfile 创建
6.1 基于已有的镜像容器创建
docker commit [options] container [repository:[tag]]
主要选项有:
- -a, --author="",作者信息
- -m, --message="",提交消息
- -p,--pause=true,提交时暂停容器运行
6.2 基于本地模板导入,导出和载入镜像
//导出镜像,mysql docker same -o mysql.tar mysql //载入镜像,从本地文件中导入到本地镜像库 docker load --input mysql.tar
或者
docker load < mysql.tar
7 上传镜像,默认上传到 dockerhub 官方仓库
docker push NAME[:tag]
以上是关于docker 概念初识的主要内容,如果未能解决你的问题,请参考以下文章
初识Spring源码 -- doResolveDependency | findAutowireCandidates | @Order@Priority调用排序 | @Autowired注入(代码片段
初识Spring源码 -- doResolveDependency | findAutowireCandidates | @Order@Priority调用排序 | @Autowired注入(代码片段