docker之基本概念和操作

概要  

   Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上。容器是完全使用沙箱机制,相互之间不会有任何接口,容器可以理解为很小的Linux操作系统,这个操作系统中可能只有一些关键性的程序,它需要使用你的主机内核信息,里面可以运行你的应用程序。
   1.Docker的安装
   参照:http://www.docker.com中相关的介绍,对于linux不需要安装docker-machine,而对于windows和Mac需要安装docker-machine,原因   是docker容器的运行环境是依赖于linux内核的,所以在windows和Mac上安装docker-machine是为了安装linux虚拟机,并统一在虚拟机中执行docker命令并管理虚拟机。而对于每个系统而言需要安装docker和docker-compose(这个可以选择性安装,还是建议安装,蛮有用的)
    2. Docker的基本概念和操作
  2.1 Docker镜像
   
Docker的容器是基于镜像搭建的,所谓镜像可以理解为一些已经安装好一些服务(比如jdk等等)很小的Linux操作系统,你使用镜像的时候,镜像默认从docker hub:https://hub.docker.com上下载
    2.2 Dockerfile
 
构造一个容器需要的最小的配置文件,一个Dockerfile例如:

     #从docker hub中下载哪个镜像来构造你自己的镜像,这通常包含你的镜像中使用的一些服务
     #这个地方下载了一个很小很小的linux镜像

     FROM alpine

     #Dockerfile的作者

     MAINTAINER zhouqiang <zhouqiang@qq.com>

     #需要在你的镜像中运行的命令

     RUN mkdir /lib64 && ln -s /lib/libc.musl-x86_64.so.1 /lib64/ld-linux-x86-64.so.2

     #你的容器中的服务监听的端口

     EXPOSE 8080

     #在你的容器中需要设置的环境环境变量名是DB,值是db

     ENV DB db

     #运行你的服务需要执行的命令

    CMD ["go-demo"]

    #将你本机的哪个文件拷贝到容器的哪个位置

    COPY go-demo /usr/local/bin/go-demo

    #在容器中为你的文件添加执行权限
    RUN chmod +x /usr/local/bin/go-demo
  2.3运行docker容器 
    基于上面的Dockerfile,可以先通过build生成自己的镜像go-demo:docker build -t go-demo . 
    然后可以基于自己的镜像生成可运行的容器,容器名称是go-demo使用的镜像是go-demo:docker run -itd --name go-demo go-demo
    这时候你的服务就已经在docker中运行起来的,如果想进入你的容器可以使用docker ps、docker exec等命令
  2.4有关docker-compose 
   
docker-compose其实是简化了docker的命令操作,可以将多个容器的运行相关配置写到一个yaml文件中,然后用docker-compose来管理,yaml文件比较灵活,不再展开介绍,可以参照官网上的相关介绍
  2.5创建私有的镜像仓库      
   基于两点需要创建私有的镜像仓库 
   a.你自己生成的镜像文件不想外泄,想把它放在你的私有镜像仓库而不是docker hub中 
   b.镜像文件放到自己的私有仓库中,内部其他机器在使用这个镜像的时候下载会很快,一般是内网会比较快 
   c.在构建镜像的docker-compose-local.yml文件中添加如下配置: 
     #在yaml文件中的标识

     registry:

     #运行起来的容器的名称

     container_name: registry

     #使用的镜像,会从docker hub中下载

     image: registry

     #将本机的5000端口和容器的5000端口映射起来

     #前面是本机的5000端口,后面是容器的5000端口

     ports:

       - 5000:5000

     #将本机的当前目录挂载到容器的一个目录下面

     volumes:

        - .:/var/lib/registry

     #容器死掉之后,docker daemon会重启这个容器

    restart: always 
  d.将私有仓库运行起来: docker-compose -f docker-compose-local.yml up -d registry
  e.pull && push: 
    docker pull alpine //从docker hub拉下来一个镜像 
    docker tag alpine abc:5000/alpine //将镜像打标签,假设abc是你本机的主机名称
    docker push abc:5000/alpine //将镜像推向你的私有镜像仓库

  g.注意docker的私有镜像的pull只支持https的方式,这样你在abc这台主机上搭建了镜像仓库,在其他docker主机上pull的时候如果没有证书会出现问题,解决方法就是在vi /etc/docker/daemon.json中添加:{ "insecure-registries":["abc:5000"] },然后重启你的docker service

转载于:https://my.oschina.net/seektechnology/blog/843993

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值