Docker(容器)技术

Docker简介

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

镜像

  1. 获取镜像帮助

    docker pull --help
    
  2. 获取镜像加速器

    阿里云:https://cr.console.aliyun.com/cn-hangzhou/mirrors
    网  易:http://hub-mirror.c.163.com
    
  3. 查看本地镜像列表

    docker images
    
  4. 删除镜像

    docker rmi 镜像ID
    

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

  5. 搜索镜像

    docker search redis
    

容器

  1. 理解容器概念

    容器就是镜像的一个运行实例,所不同的是,它带有额外的可写文件层。

    一个容器只能运行一个镜像

  2. 查看容器列表

    docker ps
    
  3. 创建容器

    dcoker create --help
    

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

    docker create -p 16379:6379 --name redis redis:3.0
    
  4. 启动容器

    docker start --help
    
  5. 创建并运用容器

    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
    
  6. 停止容器

    docker stop # 容器id或者容器名称
    docker kill # 容器id或者容器名称
    
  7. 删除容器

    docker rm --help
    
  8. 进入容器

    docker exec --help
    
  9. 退出容器

    crtl+D
    
  10. 查看日志

    docker logs -f 容器名或id
    

仓库

  1. 仓库是什么?

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

阿里云仓库

  1. 登录阿里云Docker Registry

    sudo docker login --username=1763738 registry.cn-hangzhou.aliyuncs.com
    

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

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

  2. Registry中拉取镜像

    sudo docker pull registry.cn-hangzhou.aliyuncs.com/test-20181204/myredis20181204:[镜像版本号]
    
  3. 将镜像推送到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
      
    2. 创建容器

      docker create --name percona -v /Users/dongsun/works/mysql-data:/var/lib/mysql -p 13306:3306 -e MYSQL_ROOT_PASSWORD=root percona:5.6
      
    3. 启动容器

      docker start percona
      

构建镜像

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值