1.验证电脑是否支持docker

docker需要支持微软的硬件虚拟化技术,且windows10只支持专业版(由于不用windows10请自行百度吧),windows10的安装和windows7不同,windows7,8需要Toolbox,而windows10不用

windows7请下载securable软件进行查看

点击下载

出现如下两种之一即为支持硬件虚拟化技术

2.Docker的版本说明

Docker 从 17.03版本之后分为 CE(Community Edition) 和 EE(Enterprise Edition)

Docker Engine改为Docker CE(社区版)

Docker CE是免费的Docker产品的新名称,Docker CE包含了完整的Docker平台,非常适合开发人员和运维团队构建容器APP。事实上,Docker CE 17.03,可理解为Docker 1.13.1的Bug修复版本。因此,从Docker 1.13升级到Docker CE 17.03风险相对是较小的。

Docker CE有两种版本:

edge版本每月发布一次,主要面向那些喜欢尝试新功能的用户。

stable版本每季度发布一次,适用于希望更加容易维护的用户(稳定版)。

edge版本只能在当前月份获得安全和错误修复。而stable版本在初始发布后四个月内接收关键错误修复和安全问题的修补程序。这样,Docker CE用户就有一个月的窗口期来切换版本到更新的版本。举个例子,Docker CE 17.03会维护到17年07月;而Docker CE 17.03的下个稳定版本是CE 17.06,这样,6-7月这个时间窗口,用户就可以用来切换版本了。

Docker Data Center改为Docker EE(企业版)

Docker EE由公司支持,可在经过认证的操作系统和云提供商中使用,并可运行来自Docker Store的、经过认证的容器和插件。

Docker EE提供三个服务层次:

服务层级功能

Basic 包含用于认证基础设施的Docker平台
Docker公司的支持
经过 认证的、来自Docker Store的容器与插件
Standard 添加高级镜像与容器管理
LDAP/AD用户集成
基于角色的访问控制(Docker Datacenter)
Advanced 添加Docker安全扫描
连续漏洞监控

Docker从17.03开始,转向基于时间的YY.MM 形式的版本控制方案,类似于Canonical为Ubuntu所使用的版本控制方案。

Docker EE和stable版本的版本号保持一致,每个Docker EE版本都享受为期一年的支持与维护期,在此期间接受安全与关键修正。

3.下载docker

打开官网 docker官网点击我  点击Get Docker ,首先是Docker的两个版本说明及其区别,然后是支持的平台。注意了没有Windows 7,所以不要盲目的就点击下载。

在页面的左侧菜单中点击 Docker Toolbox(legacy) ->Install Toolbox on Windows。这里说了Docker Toolbox提供一种让老的windows操作系统使用Docker的方法,点击 Get Docker Toolbox for Windows 下载211.50M很快就能下载完。

然后

4.安装Docker Toolbox

1.帮助改善docker不用勾选

2.选择安装到哪里

3.选择安装,默认就行

Kitematic 是一个具有现代化的界面设计的自由开源软件,它可以让我们在 Docker 中交互式执行任务。Kitematic 设计的非常漂亮、界面美观。使用它,我们可以简单快速地开箱搭建我们的容器而不需要输入命令,可以在图形用户界面中通过简单的点击从而在容器上部署我们的应用。Kitematic 集成了 Docker Hub,允许我们搜索、拉取任何需要的镜像,并在上面部署应用。它同时也能很好地切换到命令行用户接口模式。目前,它包括了自动映射端口、可视化更改环境变量、配置卷、流式日志以及其它功能。

4.安装完成

桌面上多了下面三个图标

5.运行终端窗口,安装相应文件

1.双击击“Docker Quickstart Terminal”启动一个终端窗口,自动执行脚本获取boot2docker.iso到本地路径“C:\Users\zhaobaolong\.docker\machine\machines\default”

错误1:如果报错就按照下面的方式去找到git的安装位置。如果不报错就不用更改了,下面是未更改前

下面是更改后。

然后双击运行Docker Quickstart Terminal

错误:2:由于网络原因下载失败,再次进行下载时候报错

按照下面的方式,删除下载生成的临时文件,我的地址是在C:\Users\Administrator\.docker\machine\cache

boot2docker.iso下载过慢怎么办?

点击手动去github去下载

点击去下载

下图即为地址,点击上面进去有很多版本,选择下图所示的版本进行下载

下载完成后将boot2docker.iso然后放置到对应的目录,我的目录是C:\Users\Administrator\.docker\machine\cache

如果你没遇到错误就应该是如下图所示:

因为我运行失败了。而且网络不好,上面的图不是我截取的。所以请忽略版本,看个大概就行

如果是手动下载的boot2docker.iso文件,再次运行Docker Quickstart Terminal终端窗口

会在下面的目录发现多了一个machines文件夹,default里面也生成了一些文件

最后终端窗口会变成如下所示

6.验证安装

docker run hello-world

出现上图即为安装成功!

7.docker更换镜像源或者设置阿里云镜像加速

由于默认的国外镜像源太慢了!!!我们要换成国内的!!!

进入宿主机 docker-machine ssh

点击进入阿里云官网

然后没注册就注册,登陆,点击下面的"创建我的容器镜像"

提示你什么没开通服务,别理他,确认 就好

然后再左边会看到 镜像加速器

点击 镜像加速器,然后就看到加速器的地址了。下面有不同平台的操作文档,写的比我好,自己研究一下就行了。

本文是直接按照下面的方式进行配置云加速代理的

  1. 在Windows命令行执行docker-machine ssh 进入VM bash
  2. sudo vi /var/lib/boot2docker/profile
  3. --label provider=virtualbox的下一行添加--registry-mirror https://xxxxxxxx.mirror.aliyuncs.com
  4. 重启docker服务:sudo /etc/init.d/docker restart或者重启VM:exit退出VM bash,在Windows命令行中执行docker-machine restart

8.使用终端工具来操控docker的宿主机

进入宿主机 docker-machine ssh

查看IP地址 ifconfig

使用CRT终端工具连接宿主机

默认的用户名和密码是: 用户名 docker 密码 tcuser

9.docker的使用

docker run 的使用

Docker 允许你在容器内运行应用程序, 使用 docker run 命令来在容器内运行一个应用程序。

docker run ubuntu:15.10 /bin/echo "Hello world"

各个参数解析:

  • docker: Docker 的二进制执行文件。

  • run:与前面的 docker 组合来运行一个容器。

  • ubuntu:15.10指定要运行的镜像,Docker首先从本地主机上查找镜像是否存在,如果不存在,Docker 就会从镜像仓库 Docker Hub 下载公共镜像。

  • /bin/echo "Hello world": 在启动的容器里执行的命令

以上命令完整的意思可以解释为:Docker 以 ubuntu15.10 镜像创建一个新容器,然后在容器里执行 bin/echo "Hello world",然后输出结果。

进行交互式容器操作

docker run -i -t ubuntu:15.10 /bin/bash

我们通过docker的两个参数 -i -t,让docker运行的容器实现"对话"的能力

各个参数解析:

  • -t:在新容器内指定一个伪终端或终端。

  • -i:允许你对容器内的标准输入 (STDIN) 进行交互。

此时我们已进入一个 ubuntu15.10系统的容器

我们尝试在容器中运行命令 cat /proc/versionls分别查看当前系统的版本信息和当前目录下的文件列表

我们可以通过运行 exit 命令或者使用 CTRL+D 来退出容器。

启动容器(后台模式)

使用以下命令创建一个以进程方式运行的容器

docker run -d ubuntu:15.10 /bin/sh -c "while true; do echo hello world; sleep 1; done"

在输出中,我们没有看到期望的"hello world",而是一串长字符

这个长字符串叫做容器ID,对每个容器来说都是唯一的,我们可以通过容器ID来查看对应的容器发生了什么。

首先,我们需要确认容器有在运行,可以通过 docker ps来查看

CONTAINER ID:容器ID

NAMES:自动分配的容器名称

在容器内使用docker logs命令,查看容器内的标准输出

docker logs 2b1b7a428627

或者 docker logs stoic_ptolemy

停止容器

我们使用 docker stop 命令来停止容器:

10.docker容器的使用

docker客户端

docker 客户端非常简单 ,我们可以直接输入 docker 命令来查看到 Docker 客户端的所有命令选项。

可以通过命令 docker command --help 更深入的了解指定的 Docker 命令使用方法。

例如我们要查看 docker stats 指令的具体使用方法:

查看已经下载过的镜像

docker images

运行一个web应用

使用 docker 构建一个 web 应用程序。在docker容器中运行一个 Python Flask 应用来运行一个web应用。

docker run -d -P training/webapp python app.py

参数说明:

  • -d:让容器在后台运行。

  • -P:将容器内部使用的网络端口映射到我们使用的主机上。

使用 docker ps 来查看我们正在运行的容器,这里多了端口信息。

PORTS
0.0.0.0:32769->5000/tcp

Docker 开放了 5000 端口(默认 Python Flask 端口)映射到主机端口 32768 上。

这时我们可以通过浏览器访问WEB应用

docker run -d -p 5000:5000 training/webapp python app.py

容器内部的 5000 端口映射到我们本地主机的 5000 端口上。

网络端口的快捷方式

通过docker ps 命令可以查看到容器的端口映射,docker还提供了另一个快捷方式:docker port,使用 docker port 可以查看指定 (ID或者名字)容器的某个确定端口映射到宿主机的端口号。

上面我们创建的web应用容器ID为:7a38a1ad55c6 名字为:determined_swanson

我可以使用docker port 7a38a1ad55c6 或docker port determined_swanson来查看容器端口的映射情况

~$ docker port 7a38a1ad55c6
5000/tcp -> 0.0.0.0:5000
~$ docker port determined_swanson
5000/tcp -> 0.0.0.0:5000

查看WEB应用程序日志

docker logs [ID或者名字] 可以查看容器内部的标准输出。

docker logs -f 容器ID或者容器名

-f:让 dokcer logs 像使用 tail -f 一样来输出容器内部的标准输出。

从上面,我们可以看到应用程序使用的是 5000 端口并且能够查看到应用程序的访问日志。

查看WEB应用程序容器的进程

我们还可以使用 docker top 来查看容器内部运行的进程

docker top 容器ID或者容器名

检查WEB应用程序

使用 docker inspect 来查看Docker的底层信息。它会返回一个 JSON 文件记录着 Docker 容器的配置和状态信息。

docker inspect 容器ID或者容器名

停止WEB应用容器

docker stop 容器ID或者容器名

重启WEB应用容器

docker start 容器ID或者容器名

正在运行的容器,我们可以使用 docker restart 容器ID或者容器名 命令来重启

移除WEB应用容器

我们可以使用 docker rm 命令来删除不需要的容器

docker rm 容器ID或者容器名

删除容器时,容器必须是停止状态,否则会报如下错误

:~$ docker rm determined_swanson
Error response from daemon: You cannot remove a running container 7a38a1ad55c6914b360b565819604733db751d86afd2575236a70a2519527361. Stop the container before attempting removal or use -f

11.docker镜像的使用

当运行容器时,使用的镜像如果在本地中不存在,docker 就会自动从 docker 镜像仓库中下载,默认是从 Docker Hub 公共镜像源下载。

列出镜像列表

docker images

各个选项说明:

  • REPOSTITORY:表示镜像的仓库源

  • TAG:镜像的标签

  • IMAGE ID:镜像ID

  • CREATED:镜像创建时间

  • SIZE:镜像大小

同一仓库源可以有多个 TAG,代表这个仓库源的不同个版本,如ubuntu仓库源里,有15.10、14.04等多个不同的版本,我们使用 REPOSTITORY:TAG 来定义不同的镜像。

所以,我们如果要使用版本为15.10的ubuntu系统镜像来运行容器时,命令如下:

如果要使用版本为14.04的ubuntu系统镜像来运行容器时,命令如下:

docker run -t -i ubuntu:14.04 /bin/bash

如果你不指定一个镜像的版本标签,例如你只使用 ubuntu,docker 将默认使用 ubuntu:latest 镜像。

获取一个新的镜像

当我们在本地主机上使用一个不存在的镜像时 Docker 就会自动下载这个镜像。如果我们想预先下载这个镜像,我们可以使用 docker pull 命令来下载它。

~$ docker pull ubuntu:13.10
13.10: Pulling from library/ubuntu
6599cadaf950: Pull complete
23eda618d451: Pull complete
f0be3084efe9: Pull complete
52de432f084b: Pull complete
a3ed95caeb02: Pull complete
Digest: sha256:15b79a6654811c8d992ebacdfbd5152fcf3d165e374e264076aa435214a947a3
Status: Downloaded newer image for ubuntu:13.10

查找镜像

我们可以从 Docker Hub 网站来搜索镜像,Docker Hub 网址为:https://hub.docker.com/

我们也可以使用 docker search 命令来搜索镜像。比如我们需要一个httpd的镜像来作为我们的web服务。我们可以通过 docker search 命令搜索 httpd 来寻找适合我们的镜像。

NAME:镜像仓库源的名称

DESCRIPTION:镜像的描述

OFFICIAL:是否docker官方发布

拖取镜像

我们决定使用上图中的httpd 官方版本的镜像,使用命令 docker pull 来下载镜像。

docker pull httpd

下载完成后,我们就可以使用这个镜像了。

docker run httpd

创建镜像

当我们从docker镜像仓库中下载的镜像不能满足我们的需求时,我们可以通过以下两种方式对镜像进行更改。

  • 1.从已经创建的容器中更新镜像,并且提交这个镜像
  • 2.使用 Dockerfile 指令来创建一个新的镜像

更新镜像

更新镜像之前,我们需要使用镜像来创建一个容器。

docker run -t -i ubuntu:15.10 /bin/bash

在运行的容器内使用 apt-get update 命令进行更新。

在完成操作之后,输入 exit命令来退出这个容器。

此时ID为ecc874f3b9a8的容器,是按我们的需求更改的容器。我们可以通过命令 docker commit来提交容器副本。

$ docker commit -m="has update" -a="jenrey" ecc874f3b9a8 jenrey/ubuntu:v2

各个参数说明:

  • -m:提交的描述信息

  • -a:指定镜像作者

  • ecc874f3b9a8:容器ID

  • jenrey/ubuntu:v2:指定要创建的目标镜像名

我们可以使用 docker images 命令来查看我们的新镜像 w3cschool/ubuntu:v2

使用我们的新镜像 jenrey/ubuntu 来启动一个容器

$ docker run -t -i jenrey/ubuntu:v2 /bin/bash

删除镜像

需要先删除容器(rm)再删除镜像(rmi)

docker rmi 镜像ID

构建镜像

我们使用命令 docker build , 从零开始来创建一个新的镜像。为此,我们需要创建一个 Dockerfile 文件,其中包含一组指令来告诉 Docker 如何构建我们的镜像。

$ vim Dockerfile

每一个指令都会在镜像上创建一个新的层,每一个指令的前缀都必须是大写的。

第一条FROM,指定使用哪个镜像源

RUN 指令告诉docker 在镜像内执行命令,安装了什么。。。

然后,我们使用 Dockerfile 文件,通过 docker build 命令来构建一个镜像。

$ docker build -t youj/centos:6.7 .

参数说明:

  • -t :指定要创建的目标镜像名

  • . :Dockerfile 文件所在目录,可以指定Dockerfile 的绝对路径

使用docker images 查看创建的镜像已经在列表中存在,镜像ID为4c656946c083

我们可以使用新的镜像来创建容器

$ docker run -t -i youj/centos:6.7  /bin/bash

从上面看到新镜像已经包含我们创建的用户youj

设置镜像标签

我们可以使用 docker tag 命令,为镜像添加一个新的标签。

12.docker容器连接

Docker 容器连接

前面我们实现了通过网络端口来访问运行在docker容器内的服务。下面我们来实现通过端口连接到一个docker容器

网络端口映射

我们创建了一个 python 应用的容器。

另外,我们可以指定容器绑定的网络地址,比如绑定 127.0.0.1。

我们使用 -P 参数创建一个容器,使用 docker ps 来看到端口5000绑定主机端口32768。

我们也可以使用 -p 标识来指定容器端口绑定到主机端口。

两种方式的区别是:

  • -P :是容器内部端口随机映射到主机的高端口。
  • -p : 是容器内部端口绑定到指定的主机端口。

docker run -d -p 5000:5000 training/webapp python app.py

另外,我们可以指定容器绑定的网络地址,比如绑定127.0.0.1。

$ docker run -d -p 127.0.0.1:5001:5002 training/webapp python app.py

这样我们就可以通过访问127.0.0.1:5001来访问容器的5002端口。

上面的例子中,默认都是绑定 tcp 端口,如果要绑定 UPD 端口,可以在端口后面加上 /udp

docker run -d -p 127.0.0.1:5000:5000/udp training/webapp python app.py

docker port 命令可以让我们快捷地查看端口的绑定情况。

$ docker port vibrant_torvalds 5002

Docker容器连接

端口映射并不是唯一把 docker 连接到另一个容器的方法。

docker有一个连接系统允许将多个容器连接在一起,共享连接信息。

docker连接会创建一个父子关系,其中父容器可以看到子容器的信息。

容器命名

当我们创建一个容器的时候,docker会自动对它进行命名。另外,我们也可以使用--name标识来命名容器,例如:

$ docker run -d -P --name jenrey training/webapp python app.py

我们可以使用 docker ps 命令来查看容器名称。

13.Docker安装Nginx

方法一、通过 Dockerfile构建

创建Dockerfile

首先,创建目录nginx,用于存放后面的相关东西。

$ mkdir -p ~/nginx/www ~/nginx/logs ~/nginx/conf

www目录将映射为nginx容器配置的虚拟目录

logs目录将映射为nginx容器的日志目录

conf目录里的配置文件将映射为nginx容器的配置文件

进入创建的nginx目录,创建Dockerfile

FROM debian:jessieMAINTAINER NGINX Docker Maintainers "docker-maint@nginx.com"ENV NGINX_VERSION 1.10.1-1~jessieRUN apt-key adv --keyserver hkp://pgp.mit.edu:80 --recv-keys 573BFD6B3D8FBC641079A6ABABF5BD827BD9BF62 \&& echo "deb http://nginx.org/packages/debian/ jessie nginx" >> /etc/apt/sources.list \&& apt-get update \&& apt-get install --no-install-recommends --no-install-suggests -y \ca-certificates \nginx=${NGINX_VERSION} \nginx-module-xslt \nginx-module-geoip \nginx-module-image-filter \nginx-module-perl \nginx-module-njs \gettext-base \&& rm -rf /var/lib/apt/lists/*# forward request and error logs to docker log collector
RUN ln -sf /dev/stdout /var/log/nginx/access.log \&& ln -sf /dev/stderr /var/log/nginx/error.logEXPOSE 80 443CMD ["nginx", "-g", "daemon off;"]

通过Dockerfile创建一个镜像,替换成你自己的名字

docker build -t nginx .

# docker run -d --name mynginx nginx   #启动nginx镜像,没有会自动pull

windows7下的docker的安装及使用(持续更新,未完待续,每天一点点)相关推荐

  1. Mac OS X下开发软件的安装与配置(持续更新ing)

    Mac OS X下开发软件的安装与配置 标签(空格分隔): mac软件 Mac OS X下Maven的安装与配置 下载 Maven, 并解压到某个目录.例如/Users/ruolan/apache-m ...

  2. Ubuntu下常用但是我容易忘记的命令总结(未完待续)

    写在前面的话 这个主要是写给自己看的,还是用的少了,哎,弱啊. 1.文件的归档处理 1.1 zip命令和unzip命令 zip 命令: $ zip test.zip test.txt 它会将 test ...

  3. ubuntu安装显卡驱动记录(未完待续)

    粘贴他人经验,备忘: 装载自: 华硕天选2,Ubantu18.04,RTX3060显卡驱动安装 补充一些查看指令: 查看当前内核版本 uname -r 查看系统架构 dpkg --print-arch ...

  4. MongoDB的安装及应用详解(未完待续)

    1.MongoDB综述 2-0.MongoDB应用与开发 2-1.原生java客户端 2-2.Spring mongodb客户端

  5. Linux下的docker容器安装教程

    Linux下的docker容器安装教程 一.初始环境配置 1.yum仓库配置 2.检查yum仓库 3.关闭防火墙和selinux 二.开启内核的流量转发 三.安装docker 1.配置docker相关 ...

  6. ubuntu docker一键安装mysql_mysql5.6在ubuntu下的docker中安装的办法详细说明

    软件安装:装机软件必备包 SQL是Structured Query Language(结构化查询语言)的缩写.SQL是专为数据库而建立的操作命令集,是一种功能齐全的数据库语言.在使用它时,只需要发出& ...

  7. docker安装启动mysql5.6_mysql5.6在ubuntu下的docker中安装的方法详解

    这篇文章主要介绍了ubuntu下在docker中安装mysql5.6 的方法,需要的朋友可以参考下 1.安装mysql5.6docker run mysql:5.6 等所有项目都是Download c ...

  8. 明翰Docker笔记V0.1(持续更新)

    文章目录 前言 什么是Docker `镜像` `容器` `镜像制作` 手动 自动 镜像管理 `整合Spring Boot` 其他 整合Jenkins 安装 其他 前言 在石器时代,如果我们要部署一个应 ...

  9. Linux下简单创建ThinkPHP 6.0的网站 - 简单前后端 (未完待续)

    步骤 ssh user@ip-of-linux cd /var/www/ mkdir xiazai.rudon.cn cd xiazai.rudon.cn/ composer create-proje ...

  10. linux系统装fluent没有界面,Linux上安装ANSYS后的一些坑(未完待续)

    以ANSYS2020R2为例 问题一 fluent串行启动 (真串行,不是在启动界面选择的串行)是正常的,但是并行会挂,问题截图如下: 解决方案: 这个是Intel的问题,因为Fluent默认Inte ...

最新文章

  1. MySQL基本用户授权步骤
  2. 每天学一点flash(71)折纸
  3. 进阶Frida--Android逆向之动态加载dex Hook(三)
  4. 【CMD】复制并覆盖目标文件
  5. bzoj 4278 [ONTAK2015]Tasowanie——后缀数组
  6. MyBatis 实际使用案例-核心配置解读
  7. C#日期时间类型格式化大全集 C#DateTime 类型格式化大全集
  8. MySQL 如何实现行转列分级输出?
  9. Linux进程间通信——使用消息队列
  10. linux 文件句柄 sock,linux socket句柄
  11. Infosys:印度信息技术巨头公司
  12. Greg and Array CodeForces 296C 差分数组
  13. IPv4中IP地址的分类
  14. 出"程序员"身上的"六宗罪"
  15. spring事务REQUIRED REQUIRES_NEW区别
  16. Ureport2 ---报表设计(1)
  17. 如何查看网站的访问量?查看访问量的二个主要方法【站长之家的SEO综合查询工具】
  18. 与计算机和网络有关的英语,网络的英语作文(通用10篇)
  19. 微信小程序入门开发教程(详解)
  20. 华为p10计算机器在哪,华为P10怎么连接电脑教程

热门文章

  1. 状态机详解(一段式、二段式、三段式)
  2. spss数据预处理步骤_2. SPSS基本使用:数据清洗
  3. 【程序员小助手】Emacs,最强编辑器,没有之一
  4. 白盒测试工具CodeTest
  5. 软件测试证书(1)— 软件评测师
  6. 2020高压电工模拟考试及高压电工模拟考试系统
  7. springboot系列(二十五):如何实现单word模板分多页导出?这你得会|超级详细,建议收藏
  8. 全球首个用户分享区块链+AI大数据体系,专业跨境医疗机构“海医通”发布XMC“海医链”
  9. IE浏览器自带打印控件WebBrowser
  10. ffmpeg将文件转码后推向服务器,FFMPEG转码部署实例 - SRS Wiki 中文文档