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

    镜像   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. 推酷文章中编写js组件系列文章整理

    一步一步实现JS拖拽插件 http://www.tuicool.com/articles/RBbmMjY JS组件系列——基于Bootstrap Ace模板的菜单和Tab页效果分享 http://ww ...

  2. 【C编程基础】C程序常用函数

    基础知识 1.const const 修饰的数据类型是指常类型,常类型的变量或对象的值是不能被更新的. ; 或 ; //在定义该const变量时,通常需要对它进行初始化,因为以后就没有机会再改变它了 ...

  3. python六十四课——高阶函数练习题(一)

    1.lt = ['sdfasdfa', 'ewqrewrewqr', 'dsafa12312fdsafd', 'safsadf'] --> 得到长度列表2.tp = ('TOM', 'Lilei ...

  4. 【Java基础】char

    1.JAVA中,char占2字节,16位.可在存放汉字 2.char赋值 char a='a';  //任意单个字符,加单引号. char a='中';//任意单个中文字,加单引号. char a=1 ...

  5. UVA1442-Cav(扫描法)

    Problem UVA1442-Cav Accept: 185  Submit: 679Time Limit: 3000 mSec Problem Description Input The inpu ...

  6. google colab 使用指南

    重启colab !kill - - 输出ram信息 !cat /proc/meminfo 输出cpu信息 !cat /proc/cpuinfo 更改工作文件夹 一般,当你运行下面的命令: !ls 你会 ...

  7. [matlab] 7.快速搜索随机树(RRT---Rapidly-exploring Random Trees) 路径规划

    RRT是一种多维空间中有效率的规划方法.它以一个初始点作为根节点,通过随机采样增加叶子节点的方式,生成一个随机扩展树,当随机树中的叶子节点包含了目标点或进入了目标区域,便可以在随机树中找到一条由从初始 ...

  8. 基于SpringBoot的项目管理后台

    代码地址如下:http://www.demodashi.com/demo/13943.html 一.项目简介 在使用本项目之前,需要对SpringBoot,freemaker,layui,flyway ...

  9. 【转】ajax发送请求时候为什么会报拒绝设置不安全的header

    浏览器不允许用户手动设置敏感的Http header包括但不限于cookie.host.referer 为了安全,跨域XHR对象有一些限制: 不能使用 setRequestHeader() 设置自定义 ...

  10. 【js】横/纵向无缝滚动

    1.纵向无缝滚动(类似淘宝) ps:存在一个问题,当鼠标移入时,未关闭定时器 <!DOCTYPE html> <html> <head> <meta char ...