docker下载安装

docker官网的下载有多恶心我就不说了,在这里推荐一个国内的软件下载平台(使用百度云网盘下载):https://oomake.com/download/docker-windows

docker安装需要window server 2016以上。

直接windows update
 
docker安装:首先开启windows的hyper-v,然后直接点击下载的应用程序,启动时它会先检查你的windows系统是否满足条件,如果不满足,他会退出安装。如果满足,他会开始安装。【安装时请退出360等软件】,安装过程中会多次重启计算机。

 
安装完成后可用git bsah执行:$ docker run hello-world
结果如下:
 
写在前面的话:
实际上docker只能在linux系统下运行,Windows下运行必要要支持Hyper-v( 注:windows专业版本才有这个功能)。安装docker的时候会自动创建一个虚拟的linux系统,后续的其他操作实际上是间接使用这个虚拟系统进行的。

docker是什么?
Docker 是一个开源的应用容器引擎,基于  Go 语言 并遵从Apache2.0协议开源。
Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。
 
docker的应用场景:
  • Web 应用的自动化打包和发布。
  • 自动化测试和持续集成、发布。
  • 在服务型环境中部署和调整数据库或其他的后台应用。
  • 从头编译或者扩展现有的OpenShift或Cloud Foundry平台来搭建自己的PaaS环境。
 
docker架构:
  • docker是典型的c/s架构【类似于网易云】,使用远程API来管理和创建Docker容器。
  • Docker容器通过Docker镜像来创建
  • 容器与镜像的关系类似于面向对象中的对象与类。

daemon:守护进程
registries:注册处
细细体味镜像于容器之间的关系。

 
对docker有个了解之后,开始实践了,实践出真知:
对于最早在git bash里运行的$ docker run hello-world是什么意思?
-docker允许你在容器里运行应用程序,使用docker run命令来在容器内运行一个应用程序。
也就是说这个命令是运行一个应用程序,这个应用程序名叫hello-world。我们详细看一个例子
 
例子:对下面这个命令进行解析:
docker run ubuntu:15.10 /bin/echo "Hello world" 【windos不可行】
各个参数解析:
  • docker: Docker 的二进制执行文件。
  • run:与前面的 docker 组合来运行一个容器。
  • ubuntu:15.10指定要运行的镜像,Docker首先从本地主机上查找镜像是否存在,如果不存在,Docker 就会从镜像仓库 Docker Hub 下载公共镜像。
  • /bin/echo "Hello world": 在启动的容器里执行的命令
以上命令完整的意思可以解释为:Docker 以 ubuntu15.10 镜像创建一个新容器,然后在容器里执行 bin/echo "Hello world",然后输出结果。
类比于hello-world,在git bash中输出也可以看到,docker首先从本地主机上查找hello-world镜像是否存在,显然是不存在的,docker从镜像仓库里下载了公共的hello-world镜像,然后运行了这个镜像,最后输出结果为:Hello from Docker!
 
 
下面我们来学习一些命令:
  • 查看本地有哪些镜像
docker images
可以看到我们最开始下载的hello-world
 
  • 查看当前正在运行的容器
docker ps
 
由于hello-world已经运行结束,所以当前没有可运行的容器了。docker ps -a查看所有运行的容器包括已经停止的。
  • 查看某应用程序日志
我刚刚下载了最新的windows镜像,并执行了PowerShell
即:PS C:\> docker run -it microsoft/windowsservercore powershell
docker帮我下载了最新的windows镜像,下载完后执行了powershell命令帮我启动了powershell命令行工具。我在它启动的命令行工具里输入:systeminfo 查看当前下载的windows镜像的系统信息。输出如下:
 
好了,现在我们来查看一下该应用程序(windows)输出的日志信息:
首先我们看一下当前那些镜像在运行:docker ps -a 查看所有容器
你可以看到之前的hello-world不过它的状态是exited,还有一个就是刚才我下载的window镜像。
 
  • 查看某容器内部标准输出:
docker logs [ID或名字] || docker logs -f [ID或名字]
-f表示 像使用 tail -f 一样来输出容器内部的标准输出。
docker logs -f ce005d531a93
 
可以看到日志里输出了容器内执行的情况,而且还有我输入的systeminfo命令
  • 查看某容器内的进程
docker top [ID或名称]
如查看刚才windows容器里所有进程:docker top ce005d531a93
 
  • 检查某应用程序
使用 docker inspect 来查看 Docker 的底层信息。它会返回一个 JSON 文件记录着 Docker 容器的配置和状态信息
dockers inspect ce005d531a93
 
  • 停止、重启容器
-停止:docker stop [ID/NAME]
-重启:docker start [ID/NAME]
  • 移除容器 docker rm [ID/NAME]
删除容器时,容器必须是停止状态,否则会报如下错误:
runoob@runoob:~$ docker rm wizardly_chandrasekhar Error response from daemon: You cannot remove a running container bf08b7f2cd897b5964943134aa6d373e355c286db9b9885b1f60b6e8f82b2b85. Stop the container before attempting removal or force remove
比如我们移除hello-world容器
docker rm 377e748bef63 将返回移除容器的id
  • 下载最新的镜像 docker pull [ID/NAME]
在执行该命令前,你首先要确保已经登陆你的docker hub账号和密码,你可以使用docker login命令在控制台进行登陆
当我们在本地主机上使用一个不存在的镜像时 Docker 就会自动下载这个镜像。如果我们想预先下载这个镜像,我们可以使用 docker pull 命令来下载它。类不类似于git命令 git clone,又像maven把仓库里的东西pull到本地。
  • 查找镜像 docker search httpd
 
-NAME:镜像仓库源的名称
-DESCRIPTION:镜像的描述
-OFFICIAL:是否docker官方发布
  • 更新镜像
更新镜像之前,我们需要使用旧的镜像来创建一个容器。
$ docker run -t -i ubuntu:15.10 /bin/bash 返回容器ID:e218edb10161
在运行的容器内使用 apt-get update 命令进行更新。相当于$ docker run -t -i ubuntu:15.10 /bin/bash apt-get update
在完成操作之后,输入 exit命令来退出这个容器。
此时ID为e218edb10161的容器,是按我们的需求更改的容器。我们可以通过命令 docker commit来提交容器副本。
$ docker commit -m="has update" -a="runoob" e218edb10161 runoob/ubuntu:v2 f返回新镜像的ID:70bf1840fd7c0d2d8ef0a42a817eb29f854c1af8f7c59fc03ac7bdee9545aff8
各个参数说明:
  • -m:提交的描述信息
  • -a:指定镜像作者
  • e218edb10161:容器ID
  • runoob/ubuntu:v2:指定要创建的目标镜像名
我们可以使用 docker images 命令来查看我们的新镜像 runoob/ubuntu:v2:
  • 构建镜像
比如说你新建了一个web工程,想以后不管在哪台机器上,只要这台机器运行了docker,就可以在这台机器上部署你的web工程,那么你首先要把你的web工程发布成镜像然后push到你自己的远程的镜像仓库,以后在其他地方用直接pull下来就可以用了。怎么构建镜像?
 
 
 
 
 

猜你喜欢

转载自www.cnblogs.com/liudaihuablogs/p/9929863.html