docker初探

简介

  • Docker是一个虚拟环境容器,可以将你的开发环境、代码、配置文件等一并打包到这个容器中,并发布和应用到任意平台中。使用linux容器来部署应用,也被称为容器化(containerization)。也就是一种容器技术,开发环境和正式环境只需要使用同一套容器配置即可,不需要单独地去安装各种依赖等等。docker其中包括以下几个关键词概念。
  • 镜像(image):镜像是一个可执行的包,其中包含了需要执行应用的所有内容,比如:代码、运行环境(runtime)、依赖库、环境变量、配置文件等等。
  • 容器(Container):容器是基于一个镜像生成的运行环境实例,通常一个容器中运行一个应用,然后可以让容器之间相关联,但docker引擎会把各个容器分隔独立运作的。
容器与虚拟机的区别 docker初探
文章图片
image
docker初探
文章图片
image
  • 上面两张图说明了,容器与虚拟机之间的区别,虚拟机是拥有自己独立的操作系统的,比如centOS虚拟机就是,带有centOS操作系统的虚拟机,而容器则没有,容器直接共享使用宿主环境的内核和操作系统。相比较下来,容器就更加轻量,不会去占用过多的内存(memory)。
安装
  • Docker可以安装在Windows、Linux、Mac等各个平台上。具体可以查看文档,其中区分CE和EE版本,CE就是社区版本免费的,安装这个即可。安装完毕后,在命令行输入docker --version即可查看docker版本信息。
获取镜像
  • 首先可以通过官方获取docker原生的镜像,可在官网查看官方提供的镜像,然后在本地通过docker image pull 镜像名称即可下载镜像到本地,再通过docker image ls查看本地所有的镜像信息。
    docker初探
    文章图片
    image
  • 还可以自己创建镜像,新建一个文件,然后在里面创建一个文件,命名为Dockerfile,这个文件相当于docker镜像的配置文件,docker引擎会基于该文件来创建镜像。这里在Dockerfile中输入以下代码:
FROM nginx COPY . /usr/share/nginx/html EXPOSE 80

  • 第一句表示该镜像会去拉取官方nginx镜像,第二句是将该文件夹下面的文件全部复制到容器的对应的文件夹目录下。第三句暴露一个80端口。
  • 到这里,一个简单的Dockerfile就完成了,然后在当前目录下的命令行输入docker image build -t nginx-demo-image .命令来创建一个image镜像,nginx-demo-image是镜像名称,可以随便取,命令最后的一个.点号表示当前路径,不可省略。创建成功后,在输入docker image ls来查看。
运行容器
  • 有了镜像之后,就可以基于镜像来运行容器了,以之前上面创建的nginx-demo-image镜像为例,在命令行输入docker container run -p 8088:80 -it --rm nginx-demo-image,即可基于该镜像,执行一个容器。
  • 容器访问机器的资源类似于网络接口,需要通过copy把文件复制到容器里,然后容器与机器系统的其他部分是隔离的,所以需要定义容器内部的端口与外部端口的map映射, -p 8088:80表示容器里的80端口映射到宿主环境的8088端口,这种设置常见于开发环境,如果是正式环境应该是容器80端口与宿主环境的80端口相对应。
  • 容器运行成功后,可以在命令行输入docker container ls查看容器信息,因为我们执行的是nginx容器,也可以在浏览器url输入localhost:8088,看到wellcome nginx信息,也表示容器运行成功了。
    docker初探
    文章图片
    image

    推荐阅读