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

    镜像   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. Java反射机制小结和实际操作

    一.什么是反射 1.编译和运行 在了解什么是Java反射机制前,先聊聊Java的编译和运行. 还记得第一次使用记事本编写第一个Java程序的场景吗?通过命令窗口,使用javac命令编译一个.java文 ...

  2. 【2018.08.13 C与C++基础】网络通信:阻塞与非阻塞socket的基本概念及简单实现

    一.前言 最近在做Matalb/Simulink与C/C++的混合编程,主要是完成TCP.UDP.SerialPort等常见通信方式的中间件设计,为Simulink模型提供数据采集及解析模块. 问题在 ...

  3. March 01st, 2018 Week 9th Thursday

    Let bygones be bygones. 过去的就让它过去吧. What happened has happened, it cannot be undone, so just leave it ...

  4. Java JDK与JRE

    JDK与JRE JDK(Java Development Kit):Java开发工具包.包含JRE中的所有内容,以及用于开发小应用程序和应用程序的编译器和调试器等工具. JRE(Java Runtim ...

  5. fg和bg前后台调度命令

    Linux下的fg和bg命令是进程的前后台调度命令,即将指定号码(非进程号)的命令进程放到前台或后台运行.比如一个需要长时间运行的命令,我们就希望把它放入后台,这样就不会阻塞当前的操作:而一些服务型的 ...

  6. nginx: worker process is shutting down

    正常情况下,nginx进程状态如下: 当修改配置文件,reload之后: PID=17114的wroker有正在处理的连接,等处理结束,该worker就会退出(退出之前,该worker不会处理新的连接 ...

  7. 只有 assignment、call、increment、decrement 和 new 对象表达式可用作语句

    错误信息:只有 assignment.call.increment.decrement 和 new 对象表达式可用作语句: 分析:发生这种情况一般是在赋值时把“=”写成了“==”,例如:textBox ...

  8. Android 6.0以后的版本报错:open failed: EACCES (Permission denied)

    Android 6.0以后的版本报错:open failed: EACCES (Permission denied) 在开发项目中,遇见要进行文件操作,遇见Caused by: android.sys ...

  9. 配置DispatcherServlet应该写/还是/*

    相亲怎么做 web应用需要放在Tomcat容器中才能启动,Tomcat容器内有一个默认的web.xml文件,在自己项目中配置的XML文件都是继承自Tomcat中的全局XML文件并重写其中相应配置,这种 ...

  10. hyperledge工具-configtxlator

    参考:http://www.blockchainbrother.com/article/1337 1.作用: 因为无论配置交易文件 .tx和初始区块文件 .block都是二进制格式,用户无法直接编辑. ...