我们使用基本命令之前,先来普及一下操作中使用的基本概念

    镜像   image

    容器   container

    仓库   repository

镜像

  Docker 镜像是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等) 。镜像不包含任何动态数据,其内容在构建之后也不会被改变。

  镜像构建时,会一层层构建,前一层是后一层的基础。每一层构建完就不会再发生改变,后一层上的任何改变只发生在自己这一层。比如,删除前一层文件的操作,实际不是真的删除前一层的文件,而是仅在当前层标记为该文件已删除。在最终容器运行的时候,虽然不会看到这个文件,但是实际上该文件会一直跟随镜像。因此,在构建镜像的时候,需要额外小心,每一层尽量只包含该层需要添加的东西,任何额外的东西应该在该层构建结束前清理掉。

容器

  镜像(Image) 和容器(Container) 的关系,就像是面向对象程序设计中的 类 和 实例 一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。

  容器的实质是进程,但与直接在宿主执行的进程不同,容器进程运行于属于自己的独立的 命名空间。因此容器可以拥有自己的 root 文件系统、自己的网络配置、自己的进程空间,甚至自己的用户 ID 空间。容器内的进程是运行在一个隔离的环境里,使用起来,就好像是在一个独立于宿主的系统下操作一样。这种特性使得容器封装的应用比直接在宿主运行更加安全。也因为这种隔离的特性,很多人初学 Docker 时常常会把容器和虚拟机搞混。

仓库
  镜像构建完成后,可以很容易的在当前宿主上运行,但是,如果需要在其它服务器上使用这个镜像,我们就需要一个集中的存储、分发镜像的服务,DockerRegistry 就是这样的服务。
  

  基本应用

  1) 查看所有镜像

docker images

  2)  拉取镜像

docker pull [选项] [Docker Registry地址]<仓库名>:<标签>

  3) 运行一个新容器并给它起个名字

docker run -it --name temp ubuntu:16.04
# -i 交互式操作
# -t 终端
# --name temp 容器起名字为temp
# ubuntu:16.04:这是指用 ubuntu:16.04 镜像为基础来启动容器

  输入命令vim,git等命令,可以看到命令都无法使用,可以确定我们使用的是一个纯净的容器。

  4) 查看容器列表

docker ps
# 查看启动了的容器docker ps -a
# 查看所有的容器(启不启动都算)

  5) 启动容器

docker start temp
# temp可以是容器名或者id(id在ps命令中可以看到)

  6) 运行容器

docker exec -it temp bash
# -i 交互式操作
# -t 终端# bash:放在镜像名后的是命令。这里我们希望有个交互式 Shell,因此用的是 bash(开启一个人机交互的窗口)。

  7)   删除镜像

1)docker ps -a   查询容器
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
6adbd1b933a9 nginx:alpine "nginx -g 'daemon of…" 11 minutes ago Up 11 minutes 0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp dnmp-nginx
7ba3e71d7310 nginx "/bin/bash" 47 hours ago Exited (127) 47 hours ago goofy_bhaskara
70278207ab92 mysql:8.0.11 "docker-entrypoint.s…" 12 days ago Up 11 minutes 0.0.0.0:3306->3306/tcp dnmp-mysql
884a717efe4e dnmp_php "docker-php-entrypoi…" 12 days ago Up 11 minutes 9000/tcp dnmp-php
2)删除指定容器
docker rm 884 //删除PHP
3)docker images 查询镜像
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest 7042885a156a 11 days ago 109MB
dnmp_php latest 172f496bb458 12 days ago 535MB
nginx alpine 315798907716 13 days ago 17.8MB
redis 4.0 b00f982f9bf7 3 weeks ago 83.4MB
php 7.2-fpm 2bd622691e6e 4 weeks ago 371MB
mysql 8.0.11 5dbe5b6313e1 5 months ago 445MB 说明:rm只能删除已经停止的容器,如果需要删除正在运行中的容器,需要先进行停止,或者使用参数-f 强制删除即可
4)删除镜像
docker rmi 5db 5) 停止所有docker容器服务
docker stop $(docker ps -aq)
stop:停止会有一定的延迟
docker kill $(docker ps -aq)
kill:瞬间完成停止操作
6) 删除所有停止运行的容器服务
docker rm $(docker ps -aq) -q: 显示镜像ID(静默方式) 7)重启容器服务
docker restart hello-docker
restart:可以重启停止的容器,也可以重启正在运行的容器

  注意点:

  1. 删除前需要保证容器是停止的  stop

  2. 需要注意删除镜像和容器的命令不一样。 docker rmi ID  ,其中 容器(rm)  和 镜像(rmi)

  3. 顺序需要先删除容器

好了,到这里我们先介绍了一些基本的并且使用概率较高的命令,下一节,我们将使用更为复杂的命令进行相关操作。

docker技术之基本命令的更多相关文章

  1. docker工具之基本命令

    docker工具之基本命令 1.docker服务的启动.停止.重启 systemctl start docker #启动docker服务 systemctl daemon-reload #守护进程重启 ...

  2. Docker 技术系列之安装Docker Desktop for Mac

    终于要进入到Docker技术系列了,感谢大家的持续关注. 为什么要选择Docker?因为Docker 轻巧快速,提供了可行.经济.高效的替代方案.举个例子,安装Nginx,Mysql,Redis等常用 ...

  3. 利用Docker技术实现UDP广播效果(网络编程python版)

    docker的安装见官方文档 我使用的系统为Ubuntu16.04 Ubuntu系统安装docker文档地址:https://docs.docker.com/engine/installation/l ...

  4. Docker - 技术栈

    与传统的方式类似,构建及运行Docker容器与在一台虚拟机上构建和运行程序的方式是相似的,只是使用了一套新的工具以及技术. 与虚拟机不同的是,Docker容器将宿主机与应用程序或者服务隔离,从而提高了 ...

  5. 赞一个 kindle电子书有最新的计算机图书可买了【Docker技术入门与实战】

    最近对docker这个比较感兴趣,找一个比较完整的书籍看看,在z.cn上找到了电子书,jd dangdang看来要加油啊 Docker技术入门与实战 [Kindle电子书] ~ 杨保华 戴王剑 曹亚仑 ...

  6. Docker技术学习

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://sofar.blog.51cto.com/353572/1598249 貌似Doc ...

  7. Docker技术浅谈:私有化部署的优势以及在顶象内部的应用实践

    顶象全景式业务安全风控体系基于新一代风控体系构建,并采用Docker技术进行私有云和公有云部署.本文主要和大家分享下Docker容器技术和顶象风控系统私有化部署的优势以及Docker容器技术在顶象内部 ...

  8. Docker技术知识点总结

    Docker技术知识点总结 本文宿主机环境Centos7.4Docker version 18.09.2, build 6247962采用国内 Daocloud 加速器---------------- ...

  9. Docker技术应用场景(转载)

    场景一:节省项目环境部署时间 1.单项目打包 每次部署项目到测试.生产等环境,都要部署一大堆依赖的软件.工具,而且部署期间出现问题几率很大,不经意就花费了很长时间. Docker主要理念就是环境打包部 ...

随机推荐

  1. 华为无线AP4030,FIA--FAT模式更改

    因为买回来的时候才注意到是APfit模式的,只是想作为一个无线路由点接入网络的,只有更改模式,在网上找了很多,实验了两天也还是成功了. 1.准备工具:网线.console线一条.TFTP软件或者FTP ...

  2. Linux 小知识翻译 - 「补丁」(patch)

    这次,聊聊补丁. 当有bug或者安全漏洞的时候,就会发布补丁.打上补丁之后,就能解决相应的bug或者安全漏洞. 那么,「补丁」到底是什么呢? 「补丁」只有少量的代码,一般都是对程序的一部分进行更新或者 ...

  3. 微信小程序跳转微信小程序新增配置项目 navigateToMiniProgramAppIdList

    每个小程序可跳转的其他小程序数量限制为不超过 10 个 从 2.4.0 版本以及指定日期(具体待定)开始,开发者提交新版小程序代码时,如使用了跳转其他小程序功能,则需要在代码配置中声明将要跳转的小程序 ...

  4. 11.scrapy框架持久化存储

    今日概要 基于终端指令的持久化存储 基于管道的持久化存储 今日详情 1.基于终端指令的持久化存储 保证爬虫文件的parse方法中有可迭代类型对象(通常为列表or字典)的返回,该返回值可以通过终端指令的 ...

  5. 【Teradata】数据库初始化(sysinit和dip工具)

    1.删除数据库对象 (1)使用root用户登录数据库节点 arcmain .LOGON 127.0.0.1/dbc,dbc_password; (2)清理所有数据库对象及数据 DELETE DATAB ...

  6. nginx基本配置与参数说明

    user nobody; #启动进程,通常设置成和cpu的数量相等 worker_processes  1;   #全局错误日志及PID文件 #error_log  logs/error.log; # ...

  7. 1.01-url-open_code

    import urllib.request def load_data(): url = "http://www.baidu.com/" #get的请求 #http请求 #resp ...

  8. 安装 Kivy

    Kivy 是基于Python编程语言的一种用于开发跨平台GUI客户端程序的框架.可以打包成iOS.Android.Windows.OSX等多种平台.目前已经实现一次编码,到处运行的目的. Kivy框架 ...

  9. linux中启动 java -jar 运行程序

    每天学习一点点 编程PDF电子书.视频教程免费下载:http://www.shitanlife.com/code 直接用java -jar xxx.jar,当退出或关闭shell时,程序就会停止掉.以 ...

  10. Servlet简单概念和开发小总结

    一.Servlet概念 安装了tomcat了解到其实tomcat是一个容器,可以处理用户发送的请求(Request),之后会为请求做出一个响应(Response),此时用户只能请求一些现成的资源,容器 ...