Docker的使用初探(一):常用指令说明

目录

  • Docker的使用初探(一):常用指令说明

    • 为什么要用Docker
    • Docker的安装与简单使用
      • 国内镜像加速
      • 常用指令

Docker的使用初探(一):常用指令说明

前几个星期实践的了,再不记录一下真的就忘干净了

Docker即容器技术,具体的介绍已经有很多,不打算赘述了,说一些优点

为什么要用Docker

对我个人来说,最大的优点就是在一台电脑上可以部署不同的环境而不用担心它们产生冲突,最常见的冲突就是端口占用,使用Docker技术可以很方便地规避这一问题,而且便于管理,我不用在本地处理多个环境

更广泛一点好处还有很多

  • 更高效的利用系统资源

    下文会看到,即使我在一台普通电脑上同时运行多个环境,也不会占用宿主机过多的资源,正常的开发仍然可以进行,更不用说专门的服务器主机

  • 更快速的启动时间

    传统的虚拟机技术启动应用服务往往需要数分钟,而 Docker 容器应用,由于直接运行于宿主内核,无需启动完整的操作系统,因此可以做到秒级、甚至毫秒级的启动时间。大大的节约了开发、测试、部署的时间。

  • 一致的运行环境

    开发过程中一个常见的问题是环境一致性问题。由于开发环境、测试环境、生产环境不一致,导致有些 bug 并未在开发过程中被发现。而 Docker 的镜像提供了除内核外完整的运行时环境,确保了应用运行环境一致性,从而不会再出现 这段代码在我机器上没问题啊 这类问题。

  • 持续交付和部署

    对开发和运维(DevOps)人员来说,最希望的就是一次创建或配置,可以在任意地方正常运行。

    使用 Docker 可以通过定制应用镜像来实现持续集成、持续交付、部署。开发人员可以通过 Dockerfile 来进行镜像构建,并结合 持续集成(Continuous Integration) 系统进行集成测试,而运维人员则可以直接在生产环境中快速部署该镜像,甚至结合 持续部署(Continuous Delivery/Deployment) 系统进行自动部署。

  • 更轻松的迁移

    由于 Docker 确保了执行环境的一致性,使得应用的迁移更加容易。Docker 可以在很多平台上运行,无论是物理机、虚拟机、公有云、私有云,甚至是笔记本,其运行结果是一致的。因此用户可以很轻易的将在一个平台上运行的应用,迁移到另一个平台上,而不用担心运行环境的变化导致应用无法正常运行的情况。

  • 更轻松的维护和扩展

    Docker 使用的分层存储以及镜像的技术,使得应用重复部分的复用更为容易,也使得应用的维护更新更加简单,基于基础镜像进一步扩展镜像也变得非常简单。此外,Docker 团队同各个开源项目团队一起维护了一大批高质量的 官方镜像,既可以直接在生产环境使用,又可以作为基础进一步定制,大大的降低了应用服务的镜像制作成本。

Docker的安装与简单使用

基础的东西就不说了,不同操作系统的安装具体看这个

Docker —— 从入门到实践。我在文章里主要记录一些要点,以及在windows系统上的具体操作

国内镜像加速

和npm一样,国内网络问题,拉去镜像速度比较慢,所以要配置国内镜像,可以使用Docker官方的或者其他云服务商提供的

我使用的是Windows 10系统,配置方式是在系统右下角托盘Docker图标内右键菜单选择 Settings,打开配置窗口后左侧导航菜单选择 Daemon。在 Registry mirrors 一栏中填写加速器地址 https://registry.docker-cn.com,之后点击 Apply 保存后 Docker 就会重启并应用配置的镜像地址了。

常用指令

安装完Docker之后再使用cmd命令打开命令控制行中就可以使用Docker命令了,目前我只做了一些简单的实践,记录一下我使用频率比较高的指令

1. docker ps -a

首先要查看当前安装使用了哪些容器

这个命令会列出所有容器的状态,容器的ID、名称、使用的镜像、映射地址等,我个人觉得是使用频率最高的一个

2. docker pull [NAME]

与npm类似,要想创建容器,需要先选择镜像拉取到本地,在Docker Hub找到需要的镜像,或者自己制作好镜像后,使用docker pull命令拉取到本地,以.NET Core的官方的示例镜像为例

docker pull microsoft/dotnet-samples

执行命令后等待拉取完成即可,再次拉取同一镜像即更新

3. docker image ls

查看本机的镜像

拉取后查看本地镜像的状态,会分别列出镜像来自的仓库(Repository)、标签(通常是版本号)、镜像ID、创建时间、镜像大小

4. docker [image/container] rm [ID/NAME]

删除镜像或容器,rm指令的用法对于容器和镜像是相同的,主要不同的是就是镜像没有名称

如果要通过名称删除镜像,可以这样 docker image rm <仓库名>:<标签>

如果要通过ID删除镜像,可以输入完整的ID,也可以使用短ID,短ID就是只输入ID的前几个字符,一般三个以上就可以区分不同的镜像

需要注意的是,如果有依托于镜像的子容器就不能删除,并且容器正在运行时也不能删除,但是可以加上-f参数,这样Docker会发送SIGKILL信号给容器

另外,所有的container指令可以省掉,docker rm [ID/NAME] 就是删除指定容器

5. docker run []

新建并启动一个容器,这个命令比较重要且常用的参数比较多,这里用微软官方镜像给的命令作为示例

docker run -it --rm -p 8000:80 --name aspnetcore_sample microsoft/dotnet-samples:aspnetapp
  • -t 选项让Docker分配一个伪终端(pseudo-tty)并绑定到容器的标准输入上
  • -i 则让容器的标准输入保持打开
  • --rm要结合前面的it参数,主要还是测试用的,加入这个参数后,当我们使用Ctrl+C关闭终端之后,这个容器会自动删除
  • -p 端口映射,8000:80表示将容器的80端口映射到宿主机的8000端口上,也就是说访问我本机的8000端口就相当于访问我们部署环境的80端口了
  • --name 容器的名称
  • 最后的那个是镜像的名称,前面提过了,<仓库名>:<标签>

执行这个命令之后,docker首先会看有没有相应的镜像,如果没有就会自动执行拉取操作,我们前面拉取了微软官方的Core应用镜像,这里则启动一个Web示例镜像,这样会有一个拉取的操作,需要等待一会

这样就是创建成功并启动了,访问http://localhost:8000就可以看到Core的示例网站

如果去掉 --rm 参数,退出后不会删除容器,通过下文的 start 命令可以再启动,如果不使用参数则不会再进入终端

如果有问题可以用前面说的第一个命令ps看下当前容器的状态

6. docker start [ID/NAME]

当我们重启docker后,一般情况下容器会处于Exited退出状态,这个时候要通过start命令启动,ID前面说过,使用长ID短ID均可,名称就是创建容器是--name参数设定的

这里用上文已经关闭容器的例子

返回容器ID一般就是启动成功,这样就可以继续通过80端口访问

7. docker exec

进入容器,还有另一个指令 docker attach 两者有些不一样,这里会在下文说明原因

docker exec 后边可以跟多个参数,这里主要说明 -i -t 参数。

前面 run 命令也说过,这里有些类似,只用 -i 参数时,由于没有分配伪终端,界面没有我们熟悉的Linux命令提示符,但命令执行结果仍然可以返回。当 -i -t 参数一起使用时,则可以看到我们熟悉的 Linux 命令提示符。

但是不知道是不是命令使用错误,只能在后面跟一个 ls这样的简单命令,如果用 cd [目录名称] 这种有空格的命令就无法识别,所以使用 bash 命令进入linux终端就可以正常使用linux命令了



下一节会讲一讲如何在Docker上部署.NET Core,不再是官方的示例,而是如果从开发环境到部署的环境,本地如何通过Dockerfile构建镜像上传到仓库

原文地址:https://www.cnblogs.com/LFeather/p/10165543.html

时间: 2024-11-07 12:27:02

Docker的使用初探(一):常用指令说明的相关文章

docker基础——关于安装、常用指令以及镜像制作初体验

为什么使用docker docker就是一个轻量级的虚拟机,他解决的是服务迁移部署的时候环境配置问题.比如常见的web服务依赖于jdk.Tomcat.数据库等工具,迁移项目就需要在新的机器重新配置这些,不光麻烦,而且可能配错. 如果能够将整个服务连同他依赖的外部环境一同打包就好了,docker就是这么干的.他将配置好的软件打包成image,在新的机器里面启动这个image即可 当然我所理解的只是一小部分,docker还有提供弹性云服务.组建微服务架构等方面的应用 最后,相对于传统虚拟机,dock

Docker Compose 配置文件常用指令

Docker Compose 配置文件常用指令 YAML文件格式及编写注意事项 YAML是一种标记语言很直观的数据序列化格式,可读性高.类似于XML数据描述语言,语法比XML简单的很多. YAML数据结构通过缩进来表示,连续的项目通过减号来表示,键值对用冒号分隔,数组用中括号括起来,hash用花括号括起来. YAML文件格式注意事项: 1. 不支持制表符tab键缩进,需要使用空格缩进 2. 通常开头缩进2个空格 3. 字符后缩进1个空格, # 构建镜像上下文路径 build # 指定Dockef

Docker 基础概念科普 和 常用操作介绍

Docker 基础概念 Docker是什么? Docker的思想来自于集装箱,集装箱解决了:在一艘大船上,可以把货物规整的摆放起来.并且各种各样的货物被集装箱标准化了,集装箱和集装箱之间不会互相影响.那么我就不需要专门运送瓷器的船和专门运送化学物品的船了.只要这些货物在集装箱里封装的好好的,那我就可以用一艘大船把他们都运走. 不同的应用程序可能会有不同的应用环境,比如.net开发的网站和php开发的网站依赖的软件就不一样,如果把他们依赖的软件都安装在一个服务器上就要调试很久,而且很麻烦,还会造成

Docker的使用初探(二):Docker与.NET Core的结合

目录 Docker的使用初探(二):Docker与.NET Core的结合 添加Dockefile 1. 在创建项目时添加 2. 手动添加 3. 容器业务流程协调控制程序支持 Dockefile语法 Docker项目调试 仅添加文件的方式 容器业务流程协调控制程序支持 Docker的使用初探(二):Docker与.NET Core的结合 在二者的结合上,微软官方给予了很大的支持,从官方发布的一些文章和VS 2017在建立.NET Core项目时自带的Docker选项都可以看出来,这也与Core的

Docker Hub 使用初探

Docker Hub 使用初探 —— 魏刘宏 2019.10.26 容器的话题越来越热,今天我也来试试容器的使用,我们以 Docker Hub 为例. Docker Hub 官网为 https://hub.docker.com/ ,主要用于托管容器镜像,我们以 Linux 系统 centos 为例: 详细页面给出了拉取的命令,不带标签默认拉取最新的: 点击 View Available Tags 可查看所有标签,其中标签 7 应该就是标签 centos7 的简写: 我们在 Docker Hub

Dockerfile常用指令

Dockerfile常用指令 1.FROM:构建镜像基于哪个镜像 语法:FROM <image>[:<tag>] 例如:FROM centos:7 解释:设置要制作的镜像基于哪个镜像,FROM指令必须是整个Dockerfile的第一个指令,如果指定的镜像不存在默认会自动从Docker Hub上下载. 2.MAINTAINER:镜像维护者姓名或邮箱地址 语法:MAINTAINER <name> 例如:MAINTAINER adam 解释:MAINTAINER指令允许你给将

Dockerfile常用指令详解&镜像缓存特性

Dockerfile简介 Dockerfile 是Docker中用于定义镜像自动化构建流程的配置文件.在Dockerfile中,包含了构建镜像过程中需要执行的命令和其他操作.通过Dockerfile可以更加清晰,明确的给定Docker镜像的制作过程,由于仅是简单,小体积的文件,在网络等介质中传递的速度快,能够更快的实现容器迁移和集群部署.Dockerfile是一个文本文件,其内包含了一条条的指令,每一条指令构建一层,因此每一条指令的内容,就是描述该层应当如何构建. 相对于提交容器修改在进行镜像迁

JSP 的内置对象及方法,动作和作用,常用指令

JSP 的内置对象及方法:JSP 共有以下9 种基本内置组件:request:用户端请求,此请求会包含来自GET/POST 请求的参数:response:网页传回用户端的回应:pageContext:网页的属性是在这里管理:session:与请求有关的会话期,可以存贮用户的状态信息:application:servlet 正在执行的内容:out:用来传送回应的输出:config:servlet 的构架部件,用于存取servlet 实例的初始化参数:page:JSP 网页本身:exception:

Angular JS从入门基础 mvc三层架构 常用指令

Angular JS从入门基础  mvc模型 常用指令 ★ 最近一直在复习AngularJS,它是一款优秀的前端JS框架,已经被用于Google的多款产品当中.AngularJS有着诸多特性,最为核心的是:MVC.模块化.自动化双向数据绑定.语义化标签.依赖注入等等. 1.常用指令 AngularJS 通过指令扩展了HTML,且通过表达式绑定数据到 HTML.下面我们看一下AngularJS中的常用指令. (1).基本概念 指令:AngularJS中,通过扩展HTML的属性提供功能.所以,ng-