docker镜像与容器的常用命令

一.概述

    docker的镜像于容器是docker中两个至关重要的概念,首先给各位读者解释一下笔者对于这两个概念的理解。镜像,我们从字面意思上看,镜子里成像,我们人站在镜子面前,在镜子中会呈现一个完整的我们(包括我们的着装、表情、发型等等)。那么在软件领域的镜像是指对数据按照一定的格式的一个完整的拷贝;容器是镜像运行时的实体,比如说镜像是个类,当没有被加载的时候,它是存放在我们的硬盘上的,而容器是对象,对象只有在程序运行的时候才会被创建,并且一个类可以创建N多个对象,对应到我们的镜像与容器,一个镜像可以用于创建多个容器,每个容器运行在各自的namespace中间。

二.镜像的操作

  在本节笔者只会粗略的说一下镜像,本文的重点在于讲解容器,因为容器一定要用到镜像,所有我们又不得不提。后续会有专门的篇章来介绍镜像。

2.1 镜像仓库的配置

    所谓的镜像仓库就是镜像集中存放的位置,docker默认的镜像仓库地址是 https://hub.docker.com,由于该地址服务器不在内地,访问的速度可能会有一定的影响。所以我们会经常将docker默认的镜像仓库换成阿里巴巴或者163的镜像仓库地址,以便加快我们的访问速度,本小节我们以阿里巴巴的镜像仓库为例为大家讲解。

A.注册阿里云账户,地址为:https://account.aliyun.com/login/login.htm

B.进入到阿里云控制台,选择“容器镜像服务”

                                                           

C.进入到“镜像加速器”,在右侧会出现“加速器地址”以及如何配置加速器地址

                                                          

D.如果你按照笔者《docker系列三之docker的安装》来安装docker,在 /etc/docker/目录下是没有 daemon.json文件的,所有你要进入到 /etc/docker/ 目录下执行 touch  daemon.json  命令创建 daemon.json文件,如下图所示:

E.在新创建的daemon.json文件中加入如下内容

{
"registry-mirrors": ["https://zbhswmwr.mirror.aliyuncs.com"]
}

F.执行如下命令

sudo systemctl daemon-reload                  #重新加载守护进程
sudo systemctl restart docker #重启docker

2.2 docker的信息和帮助命令 

docker -v       #查看docker的版本信息
docker info #查看docker的基本信息,例如多少镜像,多少个容器等
docker help #查看docker命令

2.3 docker镜像的基本命令

A.查看docker本地有多少镜像:docker images 或者 docker image ls

                                                            

B.拉取镜像仓库的某个镜像:docker pull 镜像名:tag,例如:docker pull hello-world:linux

C.只查看镜像的ID: docker images -aq

D.删除一个镜像: docker rmi 镜像名[:tag]  或者  docker rmi 镜像ID    注: 如果本地镜像文件镜像名唯一,可以不用加tag

三.容器的基本命令

   A. 器的启动:docker run 镜像名:tag 

                                              

B.查看正在运行的容器:docker container ls 或者 docker ps 或者 docker ps -n 2

   说明:docker ps -n 2表示查看最近运行或者运行过的两个容器。

C.查看所有的容器,包括已经停止了的容器:docker container ls -a 或者 docker ps -a

D.以交互的方式启动容器,例如我们启动一个centos容器:docker run -i -t centos 

                                                          

注:-t的是宿主机分配一个终端,并将该终端绑定到标准的输入上;-i让容器的标准输入保持打开状态。二者都是联合在一起使用的。

如果以上述的方式启动centos容器,那么我们如何回到我们的宿主机呢?有两种方式:

                      a. 执行 exit 命令,该命令会关闭容器,然后退出。

b.按住ctrl + p + q, 容器不关闭,只是退出。

E.以后台进程的方式启动容器:docker run -d centos    

细心的你一定会发现,我们以守护进程的方式启动容器后,容器却已经退出了(status为Exited)。原因是因为docker容器启动后必须要有一个前台进程,说白了就是一直要有事情干,那么怎么能让他有事干了,我们可以开启一个一直挂起的命令,例如:top tail,否则就会自动退出。那么有什么解决方法呢?其实这个问题解决的方法笔者搜集到三种(都是在网上查找的):

  a.以交互的方式启动容器,然后通过ctrl + p + q 不关闭容器退出容器,这种方式在上面已经给大家提到过:

docker run -it centos 

  b.通过一个死循环间歇性的不停的输出一个字符串 :

docker run -d centos /bin/sh -c "while true;do echo hello world;sleep 2;done"

c.通过我们上面提到过的top命令的方式开启一个前台进程,让容器有事情干:

docker run -d centos /usr/bin/top -b

F.容器的停止,容器的停止有两种方式:1.docker stop 容器ID;2.docker kill 容器ID。方式一是一种平滑、优雅的方式关闭容器;方式二是暴力的方式关闭容器。

G.删除容器:docker rm [-f] 容器ID。-f表示强制删除,正在运行的容器用该命令。

H.查看容器的日志:docker logs -t -f 容器ID。-t是显示日志的时间,-f是监视日志的增长。

I.重新进入已经退出的容器:docker attach 容器ID

J.不进入到容器,直接通过命令操作容器:docker exec 容器ID ls -l /   #查看容器中根目录下有哪些目录或者文件

docker系列四之docker镜像与容器的常用命令的更多相关文章

  1. Docker系列(四):Docker容器互联

    基于Volume的互联 为什么需要Volume docker文件系统是分层的,下面的是全部是只读的,最上面的是可写层,容器中的进程如果修改了某个文件,比如修改了下层的某个文件,其实是在最顶层复制下层文 ...

  2. 【Docker】(2)---仓库、镜像、容器

    [Docker](2)---仓库.镜像.容器     学习Docker,我觉得首先要了解的是仓库.镜像.容器到底是什么,他们有什么区别. 一.通俗理解 1.Docker 镜像 (images) 容器运 ...

  3. Docker系列(二)镜像下载、操作容器、镜像导入导出等操作

    一.镜像操作 列出镜像 $sudo docker images 从dockerhub检索image $docker search image_name 下载image $docker pull ima ...

  4. Docker系列(三):Docker自定义容器镜像

    将容器编程镜像: docker commit [repo:tag] 网上有这句话:当我们在制作自己的镜像的时候,会在container中安装一些工具.修改配置,如果不做commit保存 起来,那么co ...

  5. Docker系列四: 使用UI管理docker容器

    一.什么是Portainer? Portainer是Docker的图形化管理工具,提供状态显示面板.应用模板快速部署.容器镜像网络数据卷的基本操作(包括上传下载镜像,创建容器等操作).事件日志显示.容 ...

  6. Docker 系列四(自定义仓库).

    一.Docker hub 交互 Docker hub 是 Docker 官方维护的一个公共仓库,大部分需求都可以通过在 Docker hub 中直接下载镜像来完成.接下来,来看一下怎么与 Docker ...

  7. Docker 系列二(操作镜像).

    一.镜像管理 1.拉取镜像 docker pull [选项] [Docker Registry 地址[:端口号]/]仓库名[:标签] -- Docker 镜像仓库地址 :一般是 域名或者IP[:端口号 ...

  8. docker入门——安装(CentOS)、镜像、容器

    Docker简介 什么是docker 官方解释: Docker is the company driving the container movement and the only container ...

  9. Docker系列03-容器Docker镜像的使用

    Docker镜像的使用前两个章节,介绍了容器的相关基础知识,这章我们介绍镜像的简单使用,镜像hub里面有来自于全世界贡献的各种镜像,包括一些入门和学习练手的镜像,今天我们使用的正式其中一个用于学习练习 ...

随机推荐

  1. Java并发包线程池之ScheduledThreadPoolExecutor

    前言 它是一种可以安排在给定的延迟之后执行一次或周期性执行任务的ThreadPoolExecutor.因为它继承了ThreadPoolExecutor, 当然也具有处理普通Runnable.Calla ...

  2. 怎么用群晖webdav实现外网映射网络驱动器

    前几天刚作好群晖nas局域网内的磁盘映射功能,今天老板又想实现在家里也能跟在公司一样的方便访问映射功能,因为使用网页操作实在太麻烦了.这可怎么办官方提供的 Assistant工具只能操作局域网的,又没 ...

  3. 阶段5 3.微服务项目【学成在线】_day09 课程预览 Eureka Feign_05-Feign远程调用-客户端负载均衡介绍

    2 Feign远程调用 在前后端分离架构中,服务层被拆分成了很多的微服务,服务与服务之间难免发生交互,比如:课程发布需要调用 CMS服务生成课程静态化页面,本节研究微服务远程调用所使用的技术. 下图是 ...

  4. MySQL创建触发器样例

    # init DROP TABLE IF EXISTS students; DROP TABLE IF EXISTS class; # 创建测试用的班级表 CREATE TABLE class ( c ...

  5. react 点击事件

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  6. iOS-AVPlayer

    MPMoviePlayerController足够强大,几乎不用写几行代码就能完成一个播放器,但是正是由于它的高度封装使得要自定义这个播放 器变得很复杂,甚至是不可能完成.例如有些时候需要自定义播放器 ...

  7. React16+配置打包目录

    在学习react的时候,肯定最终都要用脚手架,对比了手写配置webpack(比较费劲).generator-react-webpack(打不开官方文档……),最终还是选择了react官方的create ...

  8. Andrew Ng机器学习课程14

    Andrew Ng机器学习课程14 声明:引用请注明出处http://blog.csdn.net/lg1259156776/ 引言:主要介绍了当数据量不足,利用EM算法对混合高斯模型进行建模时数据量比 ...

  9. 原装win8系统电脑崩溃问题解决

    原装win8系统电脑崩溃问题解决 声明:引用请注明出处http://blog.csdn.net/lg1259156776/ 说明:之所以撰写本篇关于win8原装系统电脑崩溃的博文,一是要吐槽一下原装w ...

  10. 给引入页面的js和css资源加上版本号,防止浏览器缓存资源

    最近因为在做前端开发的相关工作,每次发布新版本以后,不到5分钟,测试童鞋一个接一个的抱怨说BUG根本就没有修改,这个时候你说的最多的话就是“清缓存!!清页面缓存!!你没有清缓存!!你清理了页面缓存就对 ...