文章目录

  • Docker简介
  • 镜像
  • 容器
  • 仓库
  • 阿里云仓库
  • 数据卷
  • 案例
  • 构建镜像


Docker简介

  • 2013诞生
  • 官网:https://www.docker.com
  • 仓库:https://hub.docker.com
  1. 虚拟化和docker的区别?
  1. 少个虚拟管理软件
  1. docker的优势?
  1. 可以直接使用主机操作系统的资源进行虚拟化。
  2. 秒级启动应用。
  3. 对服务器的资源利用率更高。
  1. 安装docker
  1. 官方建议Ubuntu

镜像

  1. 获取镜像帮助
docker pull --help
  1. 获取镜像加速器
阿里云:https://cr.console.aliyun.com/cn-hangzhou/mirrors
网  易:http://hub-mirror.c.163.com
  1. 查看本地镜像列表
docker images
  1. 删除镜像
docker rmi 镜像ID

-f 是强制删除,如果有正在运行的容器使用了该镜像,那么该镜像是不会真正的删除

  1. 搜索镜像
docker search redis

容器

  1. 理解容器概念
    容器就是镜像的一个运行实例,所不同的是,它带有额外的可写文件层。
    一个容器只能运行一个镜像
  2. 查看容器列表
docker ps
  1. 创建容器
dcoker create --help

**example:**创建一个redis容器

docker create -p 16379:6379 --name redis redis:3.0
  1. 启动容器
docker start --help
  1. 创建并运用容器
docker run --help

example: 创建一个redis容器

docker run -p 16380:6379 --name redis2 redis:3.0

如需在后台运行, 需要加上-d

docker run -p 16381:6379 -d --name redis3 redis:3.0
  1. 停止容器
docker stop # 容器id或者容器名称
docker kill # 容器id或者容器名称
  1. 删除容器
docker rm --help
  1. 进入容器
docker exec --help
  1. 退出容器
crtl+D
  1. 查看日志
docker logs -f 容器名或id

仓库

  1. 仓库是什么?

仓库是集中存放镜像的地方。

阿里云仓库

  1. 登录阿里云Docker Registry
sudo docker login --username=1763738 registry.cn-hangzhou.aliyuncs.com

用于登录的用户名为阿里云账号全名,密码为开通服务时设置的密码。

您可以在产品控制台首页修改登录密码。

  1. Registry中拉取镜像
sudo docker pull registry.cn-hangzhou.aliyuncs.com/test-20181204/myredis20181204:[镜像版本号]
  1. 将镜像推送到Registry
sudo docker login --username=17637632238 registry.cn-hangzhou.aliyuncs.com
sudo docker tag [ImageId] registry.cn-hangzhou.aliyuncs.com/test-20181204/myredis20181204:[镜像版本号]
sudo docker push registry.cn-hangzhou.aliyuncs.com/test-20181204/myredis20181204:[镜像版本号]

容器在运行项目时会产生数据,比如运行的mysql容器,那么一定会有数据产生,那么是将数据保存在内部还是外部?

如果将数据保存在内部,意味着我们改变了原有的镜像。这种做法不可取,会让后期的容器升级变得不可能了。运行的镜像最好不好改变,如果必须改变(比如修改配置文件),在改变后记得commit提交打成一个新的对象。

显然,数据应该存储在容器的外部,就是说保存在主机上。那么,数据保存在主机上,那么容器该如何读取主机中的数据呢?

数据卷

createrun容器时,可以通过 -v 参数指定主机的目录。挂载到容器的某一个目录上。这样,容器就在这个目录读写数据可。从而实现了目录的分离。

案例

运行mysql(percona)容器,将mysql的数据放到主机/data/mysql-data中。

  1. 下载镜像
docker pull percona:5.6
  1. 创建容器
docker create --name percona -v /Users/dongsun/works/mysql-data:/var/lib/mysql -p 13306:3306 -e MYSQL_ROOT_PASSWORD=root percona:5.6
  1. 启动容器
docker start percona

构建镜像

构建镜像通过编写 Dockerfiler 配置文件完成