docker简介以及windows安装&linux离线安装docker

  docker官网:https://www.docker.com/

  docker官网图标如下:

    

  docker命令大全参考菜鸟教程:https://www.runoob.com/docker/docker-command-manual.html

docker镜像仓库地址:

(1)DaoCloud 道客网络: https://hub.daocloud.io/

(2)网易(需要登陆):https://c.163yun.com/hub#/m/home/ 

(3)阿里云(需要登陆):https://cr.console.aliyun.com/cn-beijing/instances/images

 

1.docker简介

  Docker 是一个开源的应用容器引擎,可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。

1.什么是docker

1.docker是一个容器平台软件;

2.Docker公司开发、开源、托管在github上

3.跨平台,支持linux、windows、macos 

2.应用场景

Web 应用的自动化打包和发布。
自动化测试和持续集成、发布。
在服务型环境中部署和调整数据库或其他的后台应用。

3.优点

  Docker 是一个用于开发,交付和运行应用程序的开放平台。Docker 使您能够将应用程序与基础架构分开,从而可以快速交付软件。借助 Docker,您可以与管理应用程序相同的方式来管理基础架构。通过利用 Docker 的方法来快速交付,测试和部署代码,您可以大大减少编写代码和在生产环境中运行代码之间的延迟。

4.解决问题

1.环境不一致:经常看到java依赖外部环境,经常见到的程序员说的我本地没问题啊。比如说JDK8编译的程序放到另一台机器,机器上面的JDK是7就会报最低版本错误。docker把操作系统,jdk,tomcat,代码,配置全部放到集装箱里.再打包放到鲸鱼上,由鲸鱼给我们送到服务器上,在我的机器上怎么运行,在别的机器上也怎么运行.不会有任何的问题.一句话就是docker解决了运行环境不一致所带来的问题。

2.不同程序直接依赖性太强,容易受其他程序影响

  docker每个容器都是一个进程,都可以看做一个虚拟的主机。docker在启动的时候就限定好一个容器最大使用的CPU硬盘,如果超过了,就会杀掉对应进程。

2.docker标准化可以快速扩展、弹性伸缩。

5.docker核心技术

   “镜像”就好比是面向对象中的“类”,“容器”就好比“类”创建的“对象”。在面向对象中,“类”定义了各种属性,“类”可以实例化出多个“对象”;而在Docker中,“镜像”定义了各种配置信息,它可以实例化出多个“容器”。“容器”就是一台可以运行的“虚拟机”。

1.docker镜像Image

  docker镜像实际上是文件,文件就肯定存在本地。docker文件机制依赖于linux的联合文件系统(Union File System):它可以把多个目录(也叫分支)内容联合挂载到同一个目录下,而目录的物理位置是分开的。UnionFS允许只读和可读写目录并存,就是说可同时删除和增加内容。如下:(test1看做第一层、test2看做第二层,test就可以看到两个目录的所有文件)

 

  docker的镜像分层如下,Image层是镜像文件,可以是tomcat、jdk、我们的应用程序等等,镜像层是只读的。

2.docker容器

  docker的容器实际上就是一个进程,为了便于理解可以将容器想象为一个虚拟机。docker的容器层(最上层)是可读可写的,但是镜像层是只读的,如果我们需要需要镜像层文件的时候,我们实际上是将文件拷贝到容器层,每次找的时候都是从顶层开始找的。由于容器的最上一层是可以修改的,镜像是不能修改的,这样就能保证镜像可以生成多个容器独立运行,没有任何干扰。

3.docker仓库

  我们构建镜像的目的是为了将应用在其他机器运行,所以就需要将镜像推到仓库。这有点类似于git的仓库,可以将代码推到仓库,其他机子随意拉下来。

  docker自己提供了仓库,网速比较慢。所以需要用到镜像加速器。

  网易仓库地址:https://c.163.com/hub#/home

2.windows安装docker

  windows下安装的docker实际上是虚拟了一个linux环境,建议还是linux上直接使用docker。

1.下载安装包

win7、win8 等需要利用 docker toolbox 来安装,下载地址

 2.运行安装

   直接全部下一步即可。下载完成桌面出现三个快捷方式。

 3.初始化docker工具

  【此时还未进行注册和启动虚拟机,若直接采用系统CMD命令窗口执行docker命令会产生错误。】

打开Docker Quickstart Terminal。然后等待其初始化完成即可(可以关闭窗口)。

 

补充:我在打开的时候报错windows 正在查找bash.exe。如果想亲自查找文件,请点击“浏览”

  原因是我在之前已经安装了git。解决办法:修改下面目标为自己的git地址

 

 补充:我在再次点击的时候cmd窗口提示looks like something went wrong in step ‘looking for vboxmanage.exe’

  原因是DOCKER_TOOLBOX_INStALL_PATH和VBOX_MSI_INSTALL_PATH这两个环境变量并没有生效,虽然你能看到它们,但是程序却看不到它们。你可以打开cmd然后输入set DOCKER_TOOLBOX_INStALL_PATH和set VBOX_MSI_INSTALL_PATH命令查看一下(我查看的时候有值)。解决办法:重启机器。

4.查看版本

C:\Users\Administrator>docker version
Client:
 Version:       18.03.0-ce
 API version:   1.37
 Go version:    go1.9.4
 Git commit:    0520e24302
 Built: Fri Mar 23 08:31:36 2018
 OS/Arch:       windows/amd64
 Experimental:  false
 Orchestrator:  swarm

Server: Docker Engine - Community
 Engine:
  Version:      19.03.5
  API version:  1.40 (minimum version 1.12)
  Go version:   go1.12.12
  Git commit:   633a0ea838
  Built:        Wed Nov 13 07:28:45 2019
  OS/Arch:      linux/amd64
  Experimental: false
 containerd:
  Version:      v1.2.10
  GitCommit:            b34a5c8af56e510852c35414db4c1f4fa6172339
 runc:
  Version:      1.0.0-rc8+dev
  GitCommit:            3e425f80a8c931f88e6d94a8c831b9d5aa481657
 docker-init:
  Version:      0.18.0
  GitCommit:            fec3683

也可以使用docker查看支持id命令,如下:

C:\Users\Administrator>docker

Usage:  docker COMMAND

A self-sufficient runtime for containers

Options:
      --config string      Location of client config files (default
                           "C:\\Users\\Administrator\\.docker")
  -D, --debug              Enable debug mode
  -H, --host list          Daemon socket(s) to connect to
  -l, --log-level string   Set the logging level
                           ("debug"|"info"|"warn"|"error"|"fatal")
                           (default "info")
      --tls                Use TLS; implied by --tlsverify
      --tlscacert string   Trust certs signed only by this CA (default
                           "C:\\Users\\Administrator\\.docker\\machine\\machines\\default\\ca.pem")
      --tlscert string     Path to TLS certificate file (default
                           "C:\\Users\\Administrator\\.docker\\machine\\machines\\default\\cert.pem")
      --tlskey string      Path to TLS key file (default
                           "C:\\Users\\Administrator\\.docker\\machine\\machines\\default\\key.pem")
      --tlsverify          Use TLS and verify the remote (default true)
  -v, --version            Print version information and quit

Management Commands:
  config      Manage Docker configs
  container   Manage containers
  image       Manage images
  network     Manage networks
  node        Manage Swarm nodes
  plugin      Manage plugins
  secret      Manage Docker secrets
  service     Manage services
  swarm       Manage Swarm
  system      Manage Docker
  trust       Manage trust on Docker images
  volume      Manage volumes

Commands:
  attach      Attach local standard input, output, and error streams to a running container
  build       Build an image from a Dockerfile
  commit      Create a new image from a container's changes
  cp          Copy files/folders between a container and the local filesystem
  create      Create a new container
  diff        Inspect changes to files or directories on a container's filesystem
  events      Get real time events from the server
  exec        Run a command in a running container
  export      Export a container's filesystem as a tar archive
  history     Show the history of an image
  images      List images
  import      Import the contents from a tarball to create a filesystem image
  info        Display system-wide information
  inspect     Return low-level information on Docker objects
  kill        Kill one or more running containers
  load        Load an image from a tar archive or STDIN
  login       Log in to a Docker registry
  logout      Log out from a Docker registry
  logs        Fetch the logs of a container
  pause       Pause all processes within one or more containers
  port        List port mappings or a specific mapping for the container
  ps          List containers
  pull        Pull an image or a repository from a registry
  push        Push an image or a repository to a registry
  rename      Rename a container
  restart     Restart one or more containers
  rm          Remove one or more containers
  rmi         Remove one or more images
  run         Run a command in a new container
  save        Save one or more images to a tar archive (streamed to STDOUT by default)
  search      Search the Docker Hub for images
  start       Start one or more stopped containers
  stats       Display a live stream of container(s) resource usage statistics
  stop        Stop one or more running containers
  tag         Create a tag TARGET_IMAGE that refers to SOURCE_IMAGE
  top         Display the running processes of a container
  unpause     Unpause all processes within one or more containers
  update      Update configuration of one or more containers
  version     Show the Docker version information
  wait        Block until one or more containers stop, then print their exit codes

Run 'docker COMMAND --help' for more information on a command.

 

  到此docker安装成功。

 

总结:

  再次查看docker官网的图标,如下:

(1)镜像可以看做上面集装箱,仓库就是超级码头,容器就是我们运行程序的地方。docker运行程序的过程就是去仓库把镜像拉到(pull)本地,然后用一条命令把镜像运行(run)起来变成容器。

(2)docker中有3个重要概念:

build:构建,就是构建镜像.

ship:运输,运输镜像,从仓库和主机运输.

run:运行的镜像就是一个容器.

build,ship,run和镜像,仓库,容器是一一对应的.

 

补充:windows上面的docker是基于虚拟的linux环境的,所以每次启动都需要打开Oracle VM VirtualBox

补充:windows镜像存在C盘,下载的镜像多了 之后会造成C盘内存不足。解决办法:

  默认情况下,docker-machine创建的虚拟机文件,是保存在C盘的C:\Users\用户名\.docker\machine\machines\default 目录下的,如果下载和使用的镜像过多,那么必然导致该文件夹膨胀过大,如果C盘比较吃紧,那么我们就得考虑把该虚拟机移到另一个盘上

(1)停止default虚拟机器

$ docker-machine stop default
Stopping "default"...
Machine "default" was stopped.

(2)打开VirtualBox,选择“管理”菜单下的“虚拟介质管理”,我们可以看到Docker虚拟机用的虚拟硬盘的文件disk。

(3)选中“disk”,然后点击菜单中的“移动”命令,根据向导,把当前的disk移动到另一个盘上面去。

  移走只会可以看到C盘空间瞬间变大了。

(4)选中default机器,然后设置-》存储可以查看disk的位置,如下:

 

3.linux下离线安装docker

  centos78离线安装可以用docker 1.8或者1.91.81.9要求内核为3.10.0以上。如果内核是3.10.0以下,需要手动下载rpm包进行安装。

(1)查看内核方式:

[root@localhost ocrtemplate]# cat /proc/version 
Linux version 2.6.32-696.el6.x86_64 (mockbuild@x86-027.build.eng.bos.redhat.com) (gcc version 4.4.7 20120313 (Red Hat 4.4.7-18) (GCC) ) #1 SMP Tue Feb 21 00:53:17 EST 2017

或者:

[root@localhost ocrtemplate]# uname -a
Linux localhost.localdomain 2.6.32-696.el6.x86_64 #1 SMP Tue Feb 21 00:53:17 EST 2017 x86_64 x86_64 x86_64 GNU/Linux

(2)查看发行版方式:

[root@localhost ocrtemplate]# cat /etc/issue
Red Hat Enterprise Linux Server release 6.9 (Santiago)
Kernel \r on an \m

或者:(只适用于redhat系列的linux)

[root@f7744ac1467d /]# cat /etc/redhat-release
CentOS Linux release 7.3.1611 (Core)

 

 

====centos78离线安装docker (内核在3.10.0以上)======

1.准备文件

下载gz包,https://download.docker.com/linux/static/stable/x86_64/ 

2.上传到linux服务器进行解压安装

1.解压

docker-18.03.1-ce.tgz  zdtesseract.tar
[root@localhost docker]# ls
docker-18.03.1-ce.tgz  zdtesseract.tar
[root@localhost docker]# tar -zxvf ./docker-18.03.1-ce.tgz 
docker/
docker/dockerd
docker/docker-proxy
docker/docker-containerd
docker/docker-runc
docker/docker-init
docker/docker-containerd-shim
docker/docker
docker/docker-containerd-ctr

 

2.将文件复制到 /usr/bin/

cp docker/* /usr/bin/

 

3.使用命令来开启docker守护进程:

sudo dockerd &

  & 放在命令后面表示设置此进程为后台进程。默认情况下,进程是前台进程,这时此进程(命令执行相当于本质是开启一个进程)就把Shell给占据了,我们无法进行其他操作,对于那些没有交互的进程,很多时候,我们希望将其在后台启动,可以在启动参数的时候加一个'&'实现这个目的。
  出现下面证明dockerd启动成功,可以ctrl+c:

 

 4.查看docker版本:

[root@localhost docker]# docker -v
Docker version 18.03.1-ce, build 9ee9f40

 

5.运行docker run hello-world (直接运行会查找镜像,不存在会自动下载)

[root@localhost docker]# docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
0e03bdcc26d7: Pull complete 
Digest: sha256:6a65f928fb91fcfbc963f7aa6d57c8eeb426ad9a20c7ee045538ef34847f44f1
Status: Downloaded newer image for hello-world:latest
INFO[0240] shim docker-containerd-shim started           address="/containerd-shim/moby/49512a9df6f3d3fce6d954ce3fa99bf6dc9f368bb4bbafc714dd4f383a57a4d5/shim.sock" debug=false module="containerd/tasks" pid=6349

Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (amd64)
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
 https://hub.docker.com/

For more examples and ideas, visit:
 https://docs.docker.com/get-started/

INFO[0241] shim reaped                                   id=49512a9df6f3d3fce6d954ce3fa99bf6dc9f368bb4bbafc714dd4f383a57a4d5 module="containerd/tasks"
INFO[2020-06-02T04:22:11.127666142-04:00] ignoring event                                module=libcontainerd namespace=moby topic=/tasks/delete type="*events.TaskDelete"

  上面亲测,centos8和7中可以安装。

 

  redhat6.9内核为3.10.0以下无法使用:

[root@localhost docker]# cat /etc/redhat-release   #查看服务器版本
Red Hat Enterprise Linux Server release 6.9 (Santiago)
[root@localhost docker]# cat /proc/version   #查看内核版本
Linux version 2.6.32-696.el6.x86_64 (mockbuild@x86-027.build.eng.bos.redhat.com) (gcc version 4.4.7 20120313 (Red Hat 4.4.7-18) (GCC) ) #1 SMP Tue Feb 21 00:53:17 EST 2017
[root@localhost docker]# uname -a
Linux localhost.localdomain 2.6.32-696.el6.x86_64 #1 SMP Tue Feb 21 00:53:17 EST 2017 x86_64 x86_64 x86_64 GNU/Linux

 

====redhat6.9安装docker(内核3.10.0以下)======

1.依赖的rpm

 lxc-libs-1.0.9-1.el6.x86_64.rpm
 lua-alt-getopt-0.7.0-1.el6.noarch.rpm
 lua-filesystem-1.4.2-1.el6.x86_64.rpm
 lua-lxc-1.0.9-1.el6.x86_64.rpm  
 lxc-1.0.9-1.el6.x86_64.rpm  
 docker-io-1.7.1-2.el6.x86_64.rpm

 device-mapper-libs-1.02.117-12.el6.i686.rpm
 device-mapper-libs-1.02.117-12.el6.x86_64.rpm

2.可以将依赖打成gz包,如下:

 3.将docker.tar.gz上传到服务器

4. 解压

tar -zxvf ./docker.tar.gz

5.执行如下命令安装:

rpm -ivh lxc-libs-1.0.9-1.el6.x86_64.rpm
rpm -ivh lua-alt-getopt-0.7.0-1.el6.noarch.rpm
rpm -ivh lua-filesystem-1.4.2-1.el6.x86_64.rpm
rpm -ivh lua-lxc-1.0.9-1.el6.x86_64.rpm 
rpm -ivh lxc-1.0.9-1.el6.x86_64.rpm 
rpm -ivh docker-io-1.7.1-2.el6.x86_64.rpm

rpm -ivh device-mapper-libs-1.02.117-12.el6.i686.rpm --force --nodeps
rpm -ivh device-mapper-libs-1.02.117-12.el6.x86_64.rpm --force --nodeps

6. 启动docker

service docker start(用来生成cgroup隔离环境)
docker -d &

7. 测试

[root@localhost ocrtemplate]# docker -v
Docker version 1.7.1, build 786b29d/1.7.1
[root@localhost ocrtemplate]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

 

posted @ 2020-02-13 11:56  QiaoZhi  阅读(2885)  评论(0编辑  收藏  举报