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

2023-11-04

简介

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 可以用来在容器中运行一个进程

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

随机推荐

  • mysql insert into多条_MySql中使用INSERT INTO语句更新多条数据的例子

    我们知道当插入多条数据的时候insert支持多条语句 复制代码 代码如下 INSERT INTO t member id name email VALUES 1 nick nick 126 com 4 angel angel 163 com
  • 如何解决:FileNotFoundError: 以及[Errno 2]No such file or directory

    出错原因 因为种种问题系统无法找到对应路径的文件 案例如下 我在pycharm的目录下新建了一个apple txt文件 想通过open 获取到对应文件里面的内容 结果提示 Errno 2 No such file or directory
  • Spark环境搭建部署全流程(Linux),看这一篇就够了

    前言 本篇文章将给各位展示如何快速地在linux上搭建spark 本文搭建的环境为Vmware 16 pro 下的CentOS 7 linux hadoop版本为3 x以上 Jdk1 8 以下是我总结出的spark几种模式的部署流程 如果是
  • 原来游戏技术行业最大的秘密竟然是...

    欢迎大家前往腾讯云 社区 获取更多腾讯海量技术实践干货哦 本文由腾讯游戏云发表于云 社区专栏 本篇文章主要是分享游戏业务面临的安全风险场景 以及基于这些场景的特点 我们应该如何做好对应的防护 一 背景 游戏行业DDoS攻击愈演愈烈 2017
  • Python模块multiprocessing & 实现多进程并发

    简介 multiprocessing模块是Python标准库中提供的一个用于实现多进程编程的模块 它基于进程而不是线程 可以利用多核CPU的优势 提高程序的执行效率 同时也可以实现进程间通信和数据共享 目录 1 参数说明 1 1 Proce
  • FastAPI从入门到实战(12)——错误处理

    错误提示是非常重要的 比如权限控制 资源控制等场景 需要服务器返回给用户错误提示 包括状态码和提示等内容 所以本文就主要记录FastAPI里的错误处理相关的内容 抛出一个HTTPException app08 get stu08 id de
  • UE 5 实现骨骼物理模拟 乳摇

    打开角色的物理资产 如果是下载的或者官方的模型 都会内带物理资产 模拟 可以根据分块模拟当前物体的物理效果 点击右上角的模拟 可以模拟布娃娃系统 Ctrl 鼠标右键可以实现对布娃娃施加力的效果 模拟选中项 模拟选中项可以只模拟一部分物体 选
  • 性能监控工具-Grafana安装和使用方法

    Grafana是一款开源的数据可视化和监控平台 它提供了丰富的可视化方式 如图表 仪表盘 警报等 支持多种数据源 包括Prometheus InfluxDB Graphite等 适用于各种规模的系统监控和数据分析 Grafana还有一个强大
  • ef框架 动态切换数据源信息(切换连接字符串)

    在一些特殊的场景 我可能会更换访问的数据库 猜想 玩游戏的时候 选择不同的区登录 选区就是更换数据库 比如你用qq登录王者 可登录1区或者2区 两个区中 你的英雄 皮肤 和段位是不一样的 上下文的调整 1 在上下文中加入一个静态的字段 pr
  • mysql重置数据库主键_重置Mysql主键的方法

    方法一 如果曾经的数据都不需要的话 可以直接清空所有数据 并将自增字段恢复从1开始计数 truncate table 表名 方法二 dbcc checkident table name reseed new reseed value 当前值
  • 数据库:关系模型基本介绍

    关系模型研究什么 关系模型就是处理Table的 它由三个部分组成 1 描述DB各种数据的基本结构形式 2 描述Table与Table之间所可能发生的各种操作 关系运算 3 描述这些操作所应遵循的约束条件 完整性约束 就是要学习 Table如
  • 深度学习工程实践 6. 使用pytorch训练自己的眼球分割模型

    深度学习工程实践 6 使用pytorch训练自己的眼球分割模型 1 概述 2 目标 3 工程实践 3 1 数据寻找 数据标注 3 2 训练 3 3 部署应用到桌面程序 4 总结 1 概述 眼球分割 如果是在特定的眼球拍摄场景下 实际上直接用
  • mysql 视图

    目录 1 视图简介 1 1 视图的含义 1 2 视图的作用 2 创建视图 2 1 创建视图的语法形式 2 2 在单表上创建视图 2 3 在多表上创建视图 3 查看视图 3 1 DESCRIBE语句查看视图基本信息 3 2 SHOW TABL
  • 上海马普计算机考研,【分享】马普所博士研究生计划 - 计算模拟 - 小木虫 - 学术 科研 互动社区...

    马普所博士研究生计划 今年五月起 研究计划 膜与蛋白质及粒子的相互作用 将Monte Carlo与分子动力学以及理论计算相结合 研究吸附或包埋的蛋白质与粒子对生物膜物理相行为的影响 强调模型体系的生物意义 导师介绍 Thomas Weikl
  • 提高代码质量:代码审查

    在项目开发中 代码质量是非常重要的一环 高质量的代码对项目完成质量 能否按时完工有重大影响 而一个团队中开发成员的配置往往是金字塔形的 基于开发成本考虑 项目主管或小组长一般由经验丰富的资深高级程序员担任 开发成员则由普通程序员 新员工 实
  • BUG库,列举我从今天开发遇到的BUG

    java lang IllegalArgumentException Invalid character found in the request target 在请求目标中发现的无效字符 方法请求体传入非法参数 一般是前台的锅 java
  • linux 循环显示所有的sh.*文件.,linuxSHELL学习之循环嵌套、break、continue

    一 循环嵌套1 在for循环中嵌套另一个for循环 root t1 cat t36 sh bin bash for i 1 i lt 3 i do echo out loop i for j 1 j lt 2 j do echo insid
  • c++中逆序reverse和sort的使用

    reverse可以进行逆序 包含于中 include sort可以进行升序排列 include
  • jar包的下载和导入

    目录 一 什么是jar包 二 下载jar包 三 IDEA导入jar包 一 直接导入jar包 二 在指定的目录下导入jar包 一 什么是jar包 顾名思义 jar包是JAVA文件的压缩包 将写好的类 各种资源压缩到jar包里面 所以在导入ja
  • Docker 入门教程-----Docker安装与使用(Linux系统 Ubuntu16.04、Centos 和Windows)

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