• 售前

  • 售后

热门帖子
入门百科

一文快速入门Docker保举

[复制链接]
名人堂熊猫虞kk 显示全部楼层 发表于 2021-10-26 14:21:25 |阅读模式 打印 上一主题 下一主题
Docker提供一种安全、可重复的环境中自动摆设软件的方式,拉开了基于与盘算平台发展方式的厘革序幕。如今Docker在互联网公司使用已经非常广泛。本文用非常钟时间,带你快速入门Docker。
Docker是什么
Docker是什么?
官网首页的介绍:
  1. Enterprise Container Platform for High-Velocity Innovation. Securely build, share and run any application, anywhere
复制代码
百度百科告诉我们:
  1. Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。
复制代码
《第一本DOCKER书》的简介:
  1. Docker是一个能够把开发的应用程序自动部署到容器的开源引擎。由Docker公司(www.docker.com,前dotCloud公司,PaaS市场中的老牌供应商)的团队编写,基于Apache 2.0开源协议发行。
复制代码
Docker的特别之处:
Docker是轻量级的假造化技术,启动速度快(大多数Docker容器只需不到1s即可完成启动),单台硬件上可以同时跑成百上千个容器,使得快速扩展,弹性伸缩变得简单。听说,在2016年,京东使用15万Docker集群来保证618高并发场景下的系统稳固。
Docker是跨平台的,支持Windows、Macos、Linux,可以做到“构建一次,到处运行”,解决开发环境和生产环境差别等带来的一系列问题,让开发人员和运维人员可以更加调和相处。
Docker是开源的,托管于GitHub。
Docker头脑
从docker的logo遐想docker焦点头脑

Docker的logo是一个载着集装箱的大鲸鱼,这绝对是对Docker最形象的形貌和表明。
对比运输业,在集装箱出现之前,货品无法用同一的标准方式举行搬运,比如有些货品易碎,须要轻拿轻放,有些则不须要。于是铁路、公路、海洋等各种运输之间,须要大量的人力作为货品中转,效率极低,而且资本很高。集装箱出现之后,解决了这个困难,任何货品货品都可以放到这个神奇的箱子里,然后在公路、铁路、海洋等全部运输场景下,这个箱子在运输过程中都是密封的,而且中心的中转工作,都可以通过大型呆板搞定,效率大大提升。
Docker正式鉴戒了标准集装箱的头脑,将集装箱头脑运用到了软件领域。Docker为代码提供了一个基于容器的标准化运输系统,可以将任何应用及其依赖的环境(如代码、设置文件、JDK、Tomcat等)打包成一个容器,这个容器可以在险些全部的操作系统运行。
Docker焦点概念
镜像
镜像是docker的基石,用户可以基于镜像来运行本身的容器。
镜像的基础是Docker的团结文件系统,该文件系统是分层的,每个镜像是一个层。由于每个层上面还以有其他层,也就是说,镜像可以在其他镜像(基础镜像)上面举行创建。借用一幅图来资助理解。图片泉源于网络,侵删。


仓库
仓库是保存用户镜像的地方,docker官方仓库地点为 https://hub.docker.com。在Docker Hub上面有许多镜像,包括最简单的hello-world,MySQL等等。固然我们也可以有本身私有的仓库。
容器
容器为应用程序提供了隔离的运行空间。每个容器内都包罗一个独享的完备的用户环境,而且一个容器内的运行环境变更不会影响其他容器的运行环境,可以使应用程序在险些任何地方以类似的方式运行。
容器是基于镜像启动的,容器中可以运行一个或多个历程。在创建容器历程时,指定了这个历程所须要的Namespace参数,使得容器就只能「看」到当前 Namespace 所限定的资源、文件、设备、状态,大概设置。所以说,容器是一种特别的历程而已,容器的本质就是历程。
Docker安装
以CentOS 7为例,举行安装Docker。
查抄系统内核版本
Docker运行在 CentOS 7上,要求操作系统为 64 位,内核版本为 3.10 及以上。

确认本机已经安装了满意要求的Linux内核。使用下令
  1. uname -r
复制代码
来查抄内核版本信息。
  1. [root@localhost ~]# uname -r
  2. 3.10.0-957.el7.x86_64
复制代码
在CentOS 7中安装Docker
使用下令
  1. yum install -y docker
复制代码
安装Docker,“-y”表现不扣问,使用默认设置举行安装。
启动Docker服务,并设置为开机自启动
使用下列下令:
  1. systemctl start docker.service
  2. systemctl enable docker.service
复制代码
输入
  1. docker version
复制代码
,返回版本信息表明Docker安装成功。
  1. [root@localhost ~]# docker version
  2. Client:
  3. Version:     1.13.1
  4. API version:   1.26
  5. Package version: docker-1.13.1-96.gitb2f74b2.el7.centos.x86_64
  6. Go version:   go1.10.3
  7. Git commit:   b2f74b2/1.13.1
  8. Built:      Wed May 1 14:55:20 2019
  9. OS/Arch:     linux/amd64
  10. Server:
  11. Version:     1.13.1
  12. API version:   1.26 (minimum version 1.12)
  13. Package version: docker-1.13.1-96.gitb2f74b2.el7.centos.x86_64
  14. Go version:   go1.10.3
  15. Git commit:   b2f74b2/1.13.1
  16. Built:      Wed May 1 14:55:20 2019
  17. OS/Arch:     linux/amd64
  18. Experimental:  false
复制代码
Docker实战——Hello World
入门实战怎么能少得了经典的“Hello World”?
拉取镜像
实在DockerHub上已经有了这个镜像,名字叫“hello-world”。直接从DockerHub拉取镜像,下令和Git有些相似:
  1. docker pull hello-world
复制代码
  1. [root@localhost docker]# docker pull hello-world
  2. Using default tag: latest
  3. Trying to pull repository docker.io/library/hello-world ...
  4. latest: Pulling from docker.io/library/hello-world
  5. 1b930d010525: Pull complete
  6. Digest: sha256:41a65640635299bab090f783209c1e3a3f11934cf7756b09cb2f1e02147c6ed8
  7. Status: Downloaded newer image for docker.io/hello-world:latest
复制代码
检察镜像
检察拉取到的Docker镜像:
  1. docker images
复制代码
  1. [root@localhost ~]# docker images
  2. REPOSITORY       TAG         IMAGE ID      CREATED       SIZE
  3. docker.io/hello-world  latest       fce289e99eb9    5 months ago    1.84 kB
复制代码
运行镜像
运行镜像:
  1. docker run hello-world
复制代码
。看到打印出如下的内容,代表运行成功。
  1. [root@localhost docker]# docker run hello-world
  2. Hello from Docker!
  3. This message shows that your installation appears to be working correctly.
  4. To generate this message, Docker took the following steps:
  5. 1. The Docker client contacted the Docker daemon.
  6. 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
  7.   (amd64)
  8. 3. The Docker daemon created a new container from that image which runs the
  9.   executable that produces the output you are currently reading.
  10. 4. The Docker daemon streamed that output to the Docker client, which sent it
  11.   to your terminal.
  12. To try something more ambitious, you can run an Ubuntu container with:
  13. $ docker run -it ubuntu bash
  14. Share images, automate workflows, and more with a free Docker ID:
  15. https://hub.docker.com/
  16. For more examples and ideas, visit:
  17. https://docs.docker.com/get-started/
复制代码
Docker常用下令
docker images : 列出本地的镜像
docker pull image_name:拉取镜像。如果没有指定详细的镜像标签,会自动拉取latest标签的镜像。
docker search image_name:在Docker Hub上查找镜像
docker start container:启动和运行容器
docker run [OPTIONS] image_name:基于镜像创建并启动一个容器

常用选项:
-d: 背景运行容器,并返回容器ID;
-i: 以交互模式运行容器,通常与 -t 同时使用;
-t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
-P: 随机端口映射,容器内部端口随机映射到主机的高端口
-p: 指定端口映射,格式为:主机(宿主)端口:容器端口
docker logs container:获取容器的日记信息
docker attach container:进入容器
exit:退出容器
docker exec container command:在运行的容器中实验下令
docker stop container:停止容器
docker rm container:删除容器
docker save -o image_name.tar image_name:导出镜像
docker ps:检察正在运行的容器
docker ps -a:检察系统中容器列表
docker top container:检察容器内的历程
docker stop daemon_dave:停止守卫容器
Docker构建镜像
如何构建镜像?
构建一个本身的镜像须要两步:
编写Dockerfile。Dockerfile 告诉Docker如何制作镜像以及每一步是怎样的。

      
  • Docker实验Dockerfile中的指令的流程是这样的:
         
    • Docker从基础镜像运行一个容器   
    • 实验一条指令,对容器举行修改   
    • 提交到一个新的镜像层   
    • Docker再基于刚才提交的镜像运行一个新容器   
    • 实验Dockerfile中的下一条指令,知道全部指令实验完毕。  
       
  • 使用docker build下令构建。
编写Dockerfile
每个Dockerfile的第一条下令必须是FROM。FROM指令指定一个已经存在的镜像,告诉Docker后续的指令都是在这个基础上举行的。比方:
  1. FROM java:8
复制代码
MAINTAINER 指令用来标志该镜像全部者和接洽方式。比方:
  1. MAINTAINER James "×××@example.com"
复制代码
VOLUME 指令用来向基于镜像创建的容器添加卷。一个卷可以是存在一个大概多个容器内的特定的目次,这个目次可以绕过团结文件系统,并提供共享数据和数据长期化的功能。
CMD 指令用来指定一个容器启动时要运行的下令。
ENTRYPOINT指令与CMD指令很相似。
WORKDIR 指令用来从镜像创建一个新容器的时候,在容器内部设置一个工作下令,ENTRYPOINT或CMD指令指定的程序会在这个目次下实验。
ENV 指令用来在在镜像构建过程中设置环境变量。比方:
  1. ENV TEST_PATH /home/test
复制代码
RUN 指令用来在当前镜像中运行指定的下令。比方:
  1. RUN apt-get install -y nginx
复制代码
EXPOSE 指令用来告诉Docker该容器内的应用程序将使用容器的指定端口。比方:
  1. EXPOSE 80
复制代码
ADD 指令用来将构建环境下的文件和目次复制到镜像中。 比方:
  1. ADD docker-0.0.1-SNAPSHOT.jar app.jar
复制代码
COPY 指令与ADD 类似,差别点在与COPY只关心在构建上下文中复制本地文件,而不会提取和解压。
LABEL 指令用于为Docker镜像添加元数据。比方:
  1. LABEL name=test description="a container is used to test"
复制代码
Dockerfile实例:
  1. FROM java:8
  2. MAINTAINER James "×××@example.com"
  3. VOLUME /tmp
  4. ADD docker-0.0.1-SNAPSHOT.jar app.jar
  5. ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
复制代码
实验docker build
实验
  1. docker build
复制代码
下令后看到“BUILD SUCCESS”表明构建成功,可以使用
  1. docker run
复制代码
下令来运行了。
总结
本文介绍了Docker是什么、Docker头脑、Docker焦点概念、Docker安装等内容,看完本文,Docker算是入门了,但是万里长征只走完了第一步,学无止境,共勉。
以上就是本文的全部内容,渴望对大家的学习有所资助,也渴望大家多多支持草根技术分享。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

帖子地址: 

回复

使用道具 举报

分享
推广
火星云矿 | 预约S19Pro,享500抵1000!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

草根技术分享(草根吧)是全球知名中文IT技术交流平台,创建于2021年,包含原创博客、精品问答、职业培训、技术社区、资源下载等产品服务,提供原创、优质、完整内容的专业IT技术开发社区。
  • 官方手机版

  • 微信公众号

  • 商务合作