Docker 入门教程-----Docker安装与使用(Linux系统 Ubuntu16.04、Centos 和Windows)

简介

Docker是一种新兴的虚拟化技术,能够一定程度上的代替传统虚拟机。不过,Docker 跟传统的虚拟化方式相比具有众多的优势。我也将Docker类比于Python虚拟环境,可以有效的配置各个版本的开发环境,比如深度学习与Java环境。

docker:有两个版本:docker-ce(社区版)和docker-ee(企业版)

docker-compse:可运行和管理多个docker容器

优势

本人主要想用来配置开发环境,由于实验室机器系统环境版本等冲突的问题。

先用一张Docker — 从入门到实践里的图整体感受一下其独特的优势:

对比传统虚拟机

更高效的利用系统资源:由于容器不需要进行硬件虚拟以及运行完整操作系统等额外开销,Docker 对系统资源的利用率更高。无论是应用执行速度、内存损耗或者文件存储速度,都要比传统虚拟机技术更高效。因此,相比虚拟机技术,一个相同配置的主机,往往可以运行更多数量的应用。
更快速的启动时间:传统的虚拟机技术启动应用服务往往需要数分钟,而Docker 容器应用,由于直接运行于宿主内核,无需启动完整的操作系统,因此可以做到秒级、甚至毫秒级的启动时间。大大的节约了开发、测试、部署的时间。
一致的运行环境:开发过程中一个常见的问题是环境一致性问题。由于开发环境、测试环境、生产环境不一 
致,导致有些bug 并未在开发过程中被发现。而Docker 的镜像提供了除内核外完整的运行时环境,确保了应用运行环境一致性,从而不会再出现「这段代码在我机器上没问题啊」这类问题。
持续交付和部署:Docker是build once,run everywhere. 使用Docker 可以通过定制应用镜像来实现持续集成、持续交付、部署。开发人员可以通过Dockerfile 来进行镜像构建,并结合持续集成(Continuous Integration) 系统进行集成测试,而运维人员则可以直接在生产环境中快速部署该镜像,甚至结合持续部署(Continuous Delivery/Deployment) 系统进行自动部署。
更轻松的迁移:Docker 使用的分层存储以及镜像的技术,使得应用重复部分的复用更为容易,也使得应用的维护更新更加简单,基于基础镜像进一步扩展镜像也变得非常简单。此外,Docker 团队同各个开源项目团队一起维护了一大批高质量的官方镜像,既可以直接在生产环境使用,又可以作为基础进一步定制,大大的降低了应用服务的镜像制作成本。使用Dockerfile 使镜像构建透明化,不仅仅开发团队可以理解应用运行环境,也方便运维团队理解应用运行所需条件,帮助更好的生产环境中部署该镜像。
镜像(Image)
镜像,从认识上简单的来说,就是面向对象中的类,相当于一个模板。从本质上来说,镜像相当于一个文件系统。Docker 镜像是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。镜像不包含任何动态数据,其内容在构建之后也不会被改变。

容器(Container)
容器,从认识上来说,就是类创建的实例,就是依据镜像这个模板创建出来的实体。容器的实质是进程,但与直接在宿主执行的进程不同,容器进程运行于属于自己的独立的命名空间。因此容器可以拥有自己的root 文件系统、自己的网络配置、自己的进程空间,甚至自己的用户ID 空间。容器内的进程是运行在一个隔离的环境里,使用起来,就好像是在一个独立于宿主的系统下操作一样。这种特性使得容器封装的应用比直接在宿主运行更加安全。

仓库(Repository)
仓库,从认识上来说,就好像软件包上传下载站,有各种软件的不同版本被上传供用户下载。镜像构建完成后,可以很容易的在当前宿主机上运行,但是,如果需要在其它服务器上使用这个镜像,我们就需要一个集中的存储、分发镜像的服务,Docker Registry 就是这样的服务。

Win10安装Docker:

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支持64 位版本的Windows 10 Pro,且必须开启Hyper-V。开启方式为:打开“控制面板”->“程序”-> “启动或关闭Windows功能”,找到Hyper-V并勾选,确定重启电脑。

Win10下载:https://docs.docker.com/docker-for-windows/install/     

Ubuntu16.04安装

1、卸载旧版本的Docker

sudo apt-get remove docker docker-engine docker.io docker-ce

注:旧版本的Docker被称作docker或者docker-engine,Docker CE(社区版)包现在被叫做docker-ce,如果之前安装过了,需要先卸载。

2、更新apt安装包索引

sudo apt-get update

3、查看可安装docker版本

apt-cache madison docker-ce

4、安装docker18.03

sudo apt-get install docker-ce=<VERSION>

sudo apt-get install docker-ce=18.03.0~ce-0~ubuntu

或 sudo pip install docker

以下安装可选:

1、安装依赖包:sudo apt-get install \ apt-transport-https \ ca-certificates \ curl \ software-properties-common

2、添加官方密钥 执行该命令时,如遇到长时间没有响应说明网络连接不到docker网站,需要使用代-理进行。

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

显示OK,表示添加成功.

3、添加仓库:

sudo add-apt-repository \ "deb [arch=amd64] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) \ stable"

Centos安装docker:

安装一些必要的系统工具:sudo yum install -y yum-utils device-mapper-persistent-data lvm2
添加软件源信息:sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
更新 yum 缓存:sudo yum makecache fast
安装 Docker-ce:sudo yum -y install docker-ce
启动 Docker 后台服务:sudo systemctl start docker

使用脚本安装 Docker

使用 sudo 或 root 权限登录 Centos。确保 yum 包更新到最新:sudo yum update

3、执行 Docker 安装脚本。

$ curl -fsSL https://get.docker.com -o get-docker.sh

$ sudo sh get-docker.sh

执行这个脚本会添加 docker.repo 源并安装 Docker。

4、启动 Docker 进程:sudo systemctl start docker

删除 Docker CE:

$ sudo yum remove docker-ce

$ sudo rm -rf /var/lib/dock

更新/卸载Docker

Docker更新:sudo apt upgrade

Docker卸载:sudo apt-get purge docker-ce       sudo rm -rf /var/lib/docker

重新启动服务

sudo systemctl daemon-reload
sudo systemctl restart docker

建立docker 用户组(注销系统重新进入系统,就可以直接使用docker开头了(注意:一定要注销后再进系统))

默认情况下,docker 命令会使用Unix socket 与Docker 引擎通讯。而只有root 用户和docker 组的用户才可以访问Docker 引擎的Unix socket。出于安全考虑,一般Ubuntu系统上不会直接使用root 用户。因此,更好地做法是将需要使用docker 的用户加入docker用户组。

建立docker组:sudo groupadd docker
将当前用户加入docker组:sudo usermod -aG docker $USER

重新启动服务: sudo service docker restart

配置国内镜像加速:

新版的 Docker 使用 /etc/docker/daemon.json(Linux) 或者 %programdata%\docker\config\daemon.json(Windows) 来配置 Daemon。请在该配置文件中加入(没有该文件的话,请先建一个):

在/etc/docker/daemon.json 中写入如下内容(如果文件不存在请新建该文件){
    "registry-mirrors": [
        "https://registry.docker-cn.com"
    ]
}

下载image :

启动服务:sudo service docker start

下载镜像:sudo  docker pull ubuntu:16.04

常用命令:

启动交互式容器docker run -t -i --name=容器的名字 IMAGE_NAME /bin/bash     -i是交互模式启动  -t是在命令行下启动

-i --interactive=true | false,默认是false      -t --tty=true | false,默认是false

docker run -i -t --privileged=true -d -p 4489:4489/tcp --name 容器的名字 ubuntu:16.04 /bin/bash

docker run -i -t ubuntu /bin/bash

查看容器docker ps [-a] [-l]   省略 列出正在运行的容器 -a all 列出所有容器    -l latest 列出最近的容器

查看指定容器docker inspect name | id

name指代具体的容器名称,id则是容器的唯一id标识。inspect命令可以详细的展示出容器的具体信息。

docker run -d -p -v创建并启动一个容器,在run后面加上-d参数,则会创建一个守护式容器在后台运行。-P:将容器内部使用的网络端口映射到我们使用的主机上。-v:表示需要将本地哪个目录挂载到容器中,格式:-v <宿主机目录>:<容器目录>宿机目录必须是绝对的

容器的端口映射
命令:run [-P] [-p]

-P,–publish-all=true | false,大写的P表示为容器暴露的所有端口进行映射;

-p,–publish=[],小写的p表示为容器指定的端口进行映射,有四种形式:

containerPort:只指定容器的端口,宿主机端口随机映射;       docker run -p 80
hostPort:containerPort:同时指定容器与宿主机端口一一映射;docker run -p 8080:80
ip::containerPort:指定ip和容器的端口;                                    docker run -p 0.0.0.0::80
ip:hostPort:containerPort:指定ip、宿主机端口以及容器端口。 docker run -p 0.0.0.0:8080:80

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

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

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

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

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

docker command --help 命令    查看相关参数意义

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

docker rename old_name new_name 重命名一个容器

docker attach con_name 将终端附着到正在运行的容器名为con_name的容器的终端上面去,前提是创建该容器时指定了相应的sh执行这个命令后,按下回车键,会进入容器的命令行Shell中。

docker inspect 查看容器的详细信息

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

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

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值