您的位置:首页 > 运维架构 > Docker

docker之基本概念和操作

2017-02-22 00:00 344 查看
概要

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  dock