Docker安装使用

Docker 教程

Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源。

Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。

容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。

Docker 从 17.03 版本之后分为 CE(Community Edition: 社区版) 和 EE(Enterprise Edition: 企业版),我们用社区版就可以了。


谁适合阅读本教程?

本教程适合运维工程师及后端开发人员,通过本教程你可以一步一步了解 Docker 的使用。


阅读本教程前,您需要了解的知识

在阅读本教程前,你需要掌握 Linux 的常用命令。你可以通过本站的 Linux 教程 来学习相关命令。


Docker的应用场景

  • Web 应用的自动化打包和发布。

  • 自动化测试和持续集成、发布。

  • 在服务型环境中部署和调整数据库或其他的后台应用。

  • 从头编译或者扩展现有的 OpenShift 或 Cloud Foundry 平台来搭建自己的 PaaS 环境。


Docker 的优点

  • 1、简化程序:
    Docker 让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,便可以实现虚拟化。Docker改变了虚拟化的方式,使开发者可以直接将自己的成果放入Docker中进行管理。方便快捷已经是 Docker的最大优势,过去需要用数天乃至数周的 任务,在Docker容器的处理下,只需要数秒就能完成。

  • 2、避免选择恐惧症:
    如果你有选择恐惧症,还是资深患者。那么你可以使用 Docker 打包你的纠结!比如 Docker 镜像;Docker 镜像中包含了运行环境和配置,所以 Docker 可以简化部署多种应用实例工作。比如 Web 应用、后台应用、数据库应用、大数据应用比如 Hadoop 集群、消息队列等等都可以打包成一个镜像部署。

  • 3、节省开支:
    一方面,云计算时代到来,使开发者不必为了追求效果而配置高额的硬件,Docker 改变了高性能必然高价格的思维定势。Docker 与云的结合,让云空间得到更充分的利用。不仅解决了硬件管理的问题,也改变了虚拟化的方式。


相关链接

Docker 官网:http://www.docker.com

Github Docker 源码:https://github.com/docker/docker

Docker 架构

Docker 使用客户端-服务器 (C/S) 架构模式,使用远程API来管理和创建Docker容器。

Docker 容器通过 Docker 镜像来创建。

容器与镜像的关系类似于面向对象编程中的对象与类。

Docker面向对象
容器对象
镜像

Docker 镜像(Images)

Docker 镜像是用于创建 Docker 容器的模板。

Docker 容器(Container)

容器是独立运行的一个或一组应用。

Docker 客户端(Client)

Docker 客户端通过命令行或者其他工具使用 Docker API (https://docs.docker.com/reference/api/docker_remote_api) 与 Docker 的守护进程通信。

Docker 主机(Host)

一个物理或者虚拟的机器用于执行 Docker 守护进程和容器。

Docker 仓库(Registry)

Docker 仓库用来保存镜像,可以理解为代码控制中的代码仓库。

Docker Hub(https://hub.docker.com) 提供了庞大的镜像集合供使用。

 

Docker Machine

Docker Machine是一个简化Docker安装的命令行工具,通过一个简单的命令行即可在相应的平台上安装Docker,比如VirtualBox、 Digital Ocean、Microsoft Azure。

Windows Docker 安装


win7、win8 系统

win7、win8 等需要利用 docker toolbox 来安装,国内可以使用阿里云的镜像来下载,下载地址:http://mirrors.aliyun.com/docker-toolbox/windows/docker-toolbox/

docker toolbox 是一个工具集,它主要包含以下一些内容:

Docker CLI 客户端,用来运行docker引擎创建镜像和容器
Docker Machine. 可以让你在windows的命令行中运行docker引擎命令
Docker Compose. 用来运行docker-compose命令
Kitematic. 这是Docker的GUI版本
Docker QuickStart shell. 这是一个已经配置好Docker的命令行环境
Oracle VM Virtualbox. 虚拟机

下载完成之后直接点击安装,安装成功后,桌边会出现三个图标,入下图所示:

点击 Docker QuickStart 图标来启动 Docker Toolbox 终端。

如果系统显示 User Account Control 窗口来运行 VirtualBox 修改你的电脑,选择 Yes。

$ 符号那你可以输入以下命令来执行。

$ docker run hello-world
 Unable to find image 'hello-world:latest' locally
 Pulling repository hello-world
 91c95931e552: Download complete
 a8219747be10: Download complete
 Status: Downloaded newer image for hello-world:latest
 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 Engine CLI client contacted the Docker Engine daemon.
  2. The Docker Engine daemon pulled the "hello-world" image from the Docker Hub.
     (Assuming it was not already locally available.)
  3. The Docker Engine daemon created a new container from that image which runs the
     executable that produces the output you are currently reading.
  4. The Docker Engine daemon streamed that output to the Docker Engine CLI client, which sent it
     to your terminal.

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

 For more examples and ideas, visit:
  https://docs.docker.com/userguide/

Win10 系统

现在 Docker 有专门的 Win10 专业版系统的安装包,需要开启Hyper-V。

开启 Hyper-V

程序和功能

启用或关闭Windows功能

选中Hyper-V

1、安装 Docker

最新版 Docker 下载地址: https://www.docker.com/get-docker

点击 Download Desktop and Take a Tutorial,并下载 Windows 的版本,如果你还没有登录,会要求注册登录:

2、运行安装文件

双击下载的 Docker for Windows Installer 安装文件,一路 Next,点击 Finish 完成安装。

 


镜像加速

鉴于国内网络问题,后续拉取 Docker 镜像十分缓慢,我们可以需要配置加速器来解决,我使用的是网易的镜像地址:http://hub-mirror.c.163.com。

新版的 Docker 使用 /etc/docker/daemon.json(Linux) 或者 %programdata%\docker\config\daemon.json(Windows) 来配置 Daemon。

请在该配置文件中加入(没有该文件的话,请先建一个):

{
  "registry-mirrors": ["http://hub-mirror.c.163.com"]
}

Docker的容器创建以及基本命令

1. 使用docker run创建docker容器,(docker命令都是以docker开头的)安装完docker后,大多数情况下,本机上面一般没有docker镜像的,执行docker run的时候一般先查看本地镜像,如果本地没有,则会自动去Docker Hub上下载镜像。Docker的域名解析服务器是google的,因此需要将8.8.8.8和8.8.4.4的DNS服务器IP添加到域名系统中去。Ubuntu下的操作是打开/etc/resolv.conf,添加两行nameserver 8.8.8.8和nameserver 8.8.4.4。

2. 接下来使用命令docker run -i -t 镜像名字 /bin/bash创建一个容器,比如

    docker -i -t ubuntu /bin/bash,其中使用-t参数是指定一个交互是命令行,

    执行这个命令,如果本地有镜像,则用本地镜像创建一个容器,如果没有则会去docker hub下载镜像,下载时间可能有点长。

    命令执行完毕后,会创建启动一个容器,并进入容器内部的shell中。在这个容器里面和普通的Linux操作完全一样。

容器常用的管理命令

    docker run 创建并启动一个容器,在run后面加上-d参数,则会创建一个守护式容器在后台运行。

    docker ps -a 查看已经创建的容器

    docker ps -s 查看已经启动的容器

    docker start con_name 启动容器名为con_name的容器

    docker stop con_name 停止容器名为con_name的容器

    docker rm con_name 删除容器名为con_name的容器

    docker rename old_name new_name 重命名一个容器

    docker attach con_name 将终端附着到正在运行的容器名为con_name的容器的终端上面去,前提是创建该容器时指定了相应的sh

执行这个命令后,按下回车键,会进入容器的命令行Shell中。

    docker logs con_name 获取容器名为con_name的容器日志

    docker inspect 查看容器的详细信息

    docker top con_name 查看容器名为con_name的容器内部的进程

    docker exec 可以用来在容器中运行一个进程

查看现有容器

很多种方式都可以

启动停止重启命令

通过docker stop可以停止运行的容器,容器在docker host中实际上是一个进程,如果想快速停止容器,可使用docker kill命令。

对于处于停止状态的容器,可以通过docker start重新启动。
docker start会保留容器的第一次启动的所有参数。即如果你是通过docker run -d以守护进程的形式启动容器,你stop后start容器,容器还是会以守护进程的形式运行。

docker restart可以重启容器,期作用就是依次执行docker stop和docker start。

容器可能会因某种错误而停止运行。对于服务类容器,我们通常希望在这种情况下容器能够自动重启。启动容器时设置–restart就可以达到这个效果。
–restart=always,意味着无论容器因何种原因退出(包括正常退出),都立即重启,该参数的形式还可以是–restart=on-failure:3,意思是如果启动进程退出代码非0,则重启容器,最多重启3次。

进入一个容器

两种进入容器的方法

我们经常需要进入到容器里去做一些工作,比如查看日志、调试、启动其他进程等。有两种方法进入容器:
1,docker attach


通过docker attach可以attach到容器启动命令的终端

2,docker exec
通过docker exec进入相同的容器,-it指定以交模式打开,执行exit退出容器,回到docker host

暂停容器

有时我们只是希望让容器暂停工作一段时间,比如要对容器的文件系统打个快照,或者docker host需要使用CPU,这是执行docker pause。

处于暂停状态的容器不会占用CPU资源,直接通过docker unpause恢复运行。

删除容器

使用docker一段时间后,host上可能会有大量已经退出了的容器(可以通过docker ps -a查看正在运行或已经停止的容器),如图
这里写图片描述
这些容器依然会占用host 的文件系统,如果确认不会再重启此类容器,可以通过docker rm删除。
docker rm一次可以指定多个容器。

docker rm是删除容器,docker rmi是删除镜像。
 

docker中容器与主机交换文件

其实可以直接

docker run -it --mount type=bind,source=/s.txt,target=/home/apps fd76ecf54002

把source地点的文件拷贝到target,但是问题来了。发现一个坑爹的问题

windows就是个坑。经过多种努力,这个问题都没有解决。好的吧,直接进入windows命令行

运行 docker cp s.txt fd76ecf54002:/home/apps

没有响应就是最好的响应。看一看结果:

出现了,一个s.txt。

CMAKE、MAKE、java -jar、gradle等

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值