docker官方文档地址如下:[https://docs.docker.com/engine/reference/](https://docs.docker.com/engine/reference/)

一、创建

  • docker create:创建容器,处于停止状态。

    • centos:latest:centos容器:最新版本(也可以指定具体的版本号)。
    • 本地有就使用本地镜像,没有则从远程镜像库拉取。
    • 创建成功后会返回一个容器的ID。
  • docker run:创建并启动容器。

交互型容器:运行在前台,容器中使用exit命令或者调用docker stop、docker kill命令,容器停止。

如下图已经在前台开启一个docker容器:

  • i:打开容器的标准输入。
  • t:告诉docker为容器建立一个命令行终端。
  • name:指定容器名称,可以不填(随机),建议根据具体使用功能命名,便于管理。
  • centos:告诉我们使用什么镜像来启动容器。
  • /bin/bash:告诉docker要在容器里面执行此命令。

后台型容器:运行在后台,创建后与终端无关,只有调用docker stop、docker kill命令才能使容器停止。

  • d:使用-d参数,使容器在后台运行。
  • c:
    通过-c可以调整容器的CPU优先级。默认情况下,所有的容器拥有相同的CPU优先级和CPU调度周期,但你可以通过Docker来通知内核给予某个或某几个容器更多的CPU计算周期。比如,我们使用-c或者–cpu-shares

    =0启动了C0、C1、C2三个容器,使用-c/–cpu-shares=512启动了C3容器。这时,C0、C1、C2可以100%的使用CPU资源(1024),但C3只能使用50%的CPU资源(512)。如果这个主机的操作系统是时序调度类型的,每个CPU时间片是100微秒,那么C0、C1、C2将完全使用掉这100微秒,而C3只能使用50微秒。

  • -c后的命令是循环,从而保持容器的运行。
  • docker ps:可以查看正在运行的docker容器。
  • --privileged : 启动容器内的服务.
docker run --privileged -p 8080:80 --name ms-drupal -itd ms-drupal:latest 

二、查看

  • docker ps: 查看当前运行的容器
  • docker ps -a:查看所有容器,包括停止的。

  • 标题含义:

    • CONTAINER ID:容器的唯一表示ID。
    • IMAGE:创建容器时使用的镜像。
    • COMMAND:容器最后运行的命令。
    • CREATED:创建容器的时间。
    • STATUS:容器状态。
    • PORTS:对外开放的端口。
    • NAMES:容器名。可以和容器ID一样唯一标识容器,同一台宿主机上不允许有同名容器存在,否则会冲突。
  • docker ps -l :查看最新创建的容器,只列出最后创建的。

  • docker ps -n=2:-n=x选项,会列出最后创建的x个容器。

三、启动

通过docker start来启动之前已经停止的docker_run镜像。
  • 容器名:docker start docker_run,或者ID:docker start 43e3fef2266c
  • –restart(自动重启):默认情况下容器是不重启的,–restart标志会检查容器的退出码来决定容器是否重启容器。
    • docker run --restart=always --name docker_restart -d centos /bin/sh -c "while true;do echo hello world; sleep;done":
    • --restart=always:不管容器的返回码是什么,都会重启容器。
    • --restart=on-failure:5:当容器的返回值是非0时才会重启容器。5是可选的重启次数。

四、终止

  • docker stop [NAME]/[CONTAINER ID]:将容器退出。
  • docker kill [NAME]/[CONTAINER ID]:强制停止一个容器。

五、删除

容器终止后,在需要的时候可以重新启动,确定不需要了,可以进行删除操作。
  • docker rm [NAME]/[CONTAINER ID]:不能够删除一个正在运行的容器,会报错。需要先停止容器。

  • 一次性删除:docker本身没有提供一次性删除操作,但是可以使用如下命令实现:

    • docker rm 'docker ps -a -q':-a标志列出所有容器,-q标志只列出容器的ID,然后传递给rm命令,依次删除容器。

六、Docker中容器的备份、恢复和迁移

  1. 使用 docker commit 命令来创建快照
    # docker commit -p 30b8f18f20b4 container-backup

    Docker Commit

  2. 通过运行 docker images 命令来查看Docker镜像
    # docker images

    Docker Images

  3. 正如我们所看见的,上面做的快照已经作为Docker镜像保存了。现在,为了备份该快照,我们有两个选择,一个是我们可以登录进Docker注册中心,并推送该镜像;另一个是我们可以将Docker镜像打包成tar包备份,以供今后使用

如果我们想要在Docker注册中心上传或备份镜像,我们只需要运行 docker login 命令来登录进Docker注册中心,然后推送所需的镜像即可。

  1. # docker login

  Docker Login

  1. # docker tag a25ddfec4d2a arunpyasi/container-backup:test
  2. # docker push arunpyasi/container-backup

  Docker Push

如果我们不想备份到docker注册中心,而是想要将此镜像保存在本地机器中,以供日后使用,那么我们可以将其作为tar包备份。要完成该操作,我们需要运行以下 docker save 命令。

  1. # docker save -o ~/container-backup.tar container-backup

taking tarball backup

要验证tar包是否已经生成,我们只需要在保存tar包的目录中运行 ls 命令即可。

2. 恢复容器

接下来,在我们成功备份了我们的Docker容器后,我们现在来恢复这些制作了Docker镜像快照的容器。如果我们已经在注册中心推送了这些Docker镜像,那么我们仅仅需要把那个Docker镜像拖回并直接运行即可。

  1. # docker pull arunpyasi/container-backup:test

Docker Pull

但是,如果我们将这些Docker镜像作为tar包文件备份到了本地,那么我们只要使用 docker load 命令,后面加上tar包的备份路径,就可以加载该Docker镜像了。

  1. # docker load -i ~/container-backup.tar

现在,为了确保这些Docker镜像已经加载成功,我们来运行 docker images 命令。

  1. # docker images

在镜像被加载后,我们将用加载的镜像去运行Docker容器。

  1. # docker run -d -p 80:80 container-backup

Restoring Docker Tarball

七、Docker中image的创建

第一个方法:在运行的container中安装service然后导出为image

整体思路:运行一个容器,在运行容器的基础上添加需要的服务,然后导出为新的images。

[root@localhost ~]#docker run -it docker.io/centos     //根据image运行容器
[root@845e8472f250 /]# //运行容器的ID号
[root@845e8472f250 /]# yum -y install ***** //安装一些服务
[root@845e8472f250 /]# exit

命令中 i 、t 的参数可以docker run –help查看

现在的容器很明显已经被我们改动了,然后通过以下命令新建images:

docker commit -m “Description” -a “users <users@163.com>” 845e8472f250 centos:v1

-m:来指定提交的说明信息 
-a:指定更新的作者和邮箱 
命令中的一串数字是刚才运行container’s ID 
数字后面的是新建镜像的repository:tag

Complete

第二个方法:基于dockerfile文件来创建新的image

dockerfile文件中基本分为4部分:

1.注释部分 
2.基础镜像地址 
3.维护者信息 
4.命令部分

mkdir -p /docker/httpd
cd /docker/httpd vim dockerfile //这里文件名必须为dockerfile
#This is http service //注释部分,类似于文件说明
FROM docker.io/centos:latest //以哪个image作为基础
MAINTAINER user <user@163.com> //维护者的信息
RUN yum -y install apr apr-utils //在创建镜像中运行以下命令
RUN yum -y install httpd

根据dockerfile创建新images:

docker build -t=centos:v2 /docker/httpd

-t:添加镜像name:tag信息 
后面的/docker/httpd路径为dockerfile的绝对路径,也可在/docker/httpd的当前路径下使用 “.”来代替绝对路径

说明:dockerfile中的指令被一行一行的执行,每执行完一行命令都要创建一个新的容器。当所有命令都执行完,会返回一个镜像ID,中间步骤所产生的所有容器ID都会被清除。一个镜像不能超过127层

Complete

如:

cd  /opt/dockerfile
vi Dockerfile FROM ms-drupal:latest
MAINTAINER by Qinghe
#RUN /etc/init.d/httpd -k start
ADD run.sh /usr/local/sbin/run.sh
RUN chmod 777 /usr/local/sbin/run.sh
EXPOSE 80
CMD ["/usr/local/sbin/run.sh"]
cd /opt/dockerfile
vi run.sh #!/bin/bash
/etc/init.d/httpd -D FOREGROUND
docker build -t=ms-drupal:latest  /opt/dockerfile

Docker实践(二):容器的管理(创建、查看、启动、终止、删除)的更多相关文章

  1. ASP.NET MVC5 网站开发实践(二) Member区域–管理列表、回复及删除

    本来想接着上次把这篇写完的,没想到后来工作的一些事落下了,放假了赶紧补上. 目录: ASP.NET MVC5 网站开发实践 - 概述 ASP.NET MVC5 网站开发实践(一) - 项目框架 ASP ...

  2. docker入门(二)容器与镜像的理解

    10张图带你深入理解Docker容器和镜像 申明:此篇文章是转载的(原文地址http://dockone.io/article/783),今天意外发现已经有人转载了(复制了),希望大家关注原创 原本打 ...

  3. docker入门(二)容器与镜像的关系

    [编者的话]本文用图文并茂的方式介绍了容器.镜像的区别和Docker每个命令后面的技术细节,能够很好的帮助读者深入理解Docker. 这篇文章希望能够帮助读者深入理解Docker的命令,还有容器(co ...

  4. docker守护式容器运行管理

    docker守护式容器适合运行应用程序和服务 以交互方式进入容器  docker run -it centos /bin/bash 以交互方式进入 并设置镜像名称和运行后的主机名称 退出交互式容器并让 ...

  5. 常见docker命令(二)-容器生命周期相关

    docker run 命令主要参数-d 后台运行,返回容器id-i 以交互模式运行,通常与-t连用-t 为容器重新分配一个伪输入终端,通常与-i连用-P(大写) 随机端口映射,容器内部端口随机映射到主 ...

  6. docker 实践二:操作镜像

    本篇我们来详细介绍 docker 镜像的操作. 注:环境为 CentOS7,docker 19.03 之前已经说过,容器是 docker 的核心概念之一,所以对应的就需要知道它的使用方法,接下来我们就 ...

  7. Docker容器的创建、启动、和停止

    1.容器是独立运行的一个或一组应用,及他们的运行环境.容器是Docker中的一个重要的概念. 2.docker容器的启动有三种方式a.交互方式,基于镜像新建容器并启动例如我们可以启动一个容器,打印出当 ...

  8. Docker镜像、容器剖析

    我们通常所说的docker是什么? 在这里英文本意为“搬运工”这里指的的docker搬运点的是集装箱,集装箱装的是够任意类型的APP,开发者通过Docker可以将app变成一种标准化,可移植的.自管理 ...

  9. Docker 核心技术之容器

    什么是容器 容器(Container) 容器是一种轻量级.可移植.并将应用程序进行的打包的技术,使应用程序可以在几乎任何地方以相同的方式运行 Docker将镜像文件运行起来后,产生的对象就是容器.容器 ...

随机推荐

  1. Java 使用jdk自带的wsimport命令生成webservice客户端代码

    wsimport -s E:\workspace\givemewords\src -p com.test.service -keep http://localhost:8085/Service/Fun ...

  2. Unix和Windows文件格式转化

    可能的原因有: 1)执行权限的问题 解决方法: chmod +x ***.py 2)python版本的问题 解决方法:在执行时或者在py文件中选择好对应的Python的版本 3)python文件格式的 ...

  3. Linux 双网关(电信与联通)

    经常有这种需求,一台Linux服务器配置电信IP和网通IP,默认情况下,后启动的网卡的网关生效.南电信北网通,配置电信和网通IP,无非是为了减少网络延时,使电信用户的请求响应在电信网络中传输,网通用户 ...

  4. vue引用公用的头部和尾部文件。

    我创建了一个header.vue和fotter.vue,用来做于网站的头部和尾部,每个页面都需要引用这两个,我以组件的方式,来引用这样只需要添加注册的组件就可以了. 第一步.在components文件 ...

  5. 开学习实用的笔试面试技术:linux

    1.F:\Movies\尚学堂大数据周末班原版(传智大数据第三期):课程比较乱,按照顺序都学了吧 1.linux基础:原来不会linux就废了.一定要装虚拟机.2018-05-27开搞. 服务器只能装 ...

  6. jQuery加载完成事件 $(function(){ })的全局异常拦截

    通常我们在页面加载完成的时候要写入一些功能脚本,如: $(function(){/*脚本 - 1*/ console.log('start'); }) $(function(){/*脚本 - 2*/ ...

  7. Spring Boot学习笔记:传统maven项目与采用spring boot项目区别

    项目结构区别 传统的maven构建的项目结构如下: 用maven构建的采用springboot项目结构如下: 二者结构一致,区别如下:传统项目如果需要打成war包,需要在WEB-INF目录结构配置we ...

  8. python里的字典和集合

    一.字典 1.字典的定义 字典是不可变的,是用hash值来存储的.字典的key必须是不可变的(可哈希) dict = {key1:value1 , key2:value2} 2.字典的增删改查 增 直 ...

  9. poj-3177(并查集+双联通分量+Tarjan算法)

    题目链接:传送门 思路: 题目要将使每一对草场之间都有至少两条相互分离的路径,所以转化为(一个有桥的连通图至少加几条边才能变为双联通图?) 先求出所有的桥的个数,同时将不同区块收缩成一个点(利用并查集 ...

  10. asp.net core跨平台开发从入门到实战文摘

    第1章 .NET Core 第2章 dotnet命令 第3章 VS Code安装及介绍 第4章 VS2015开发.NET Core 第5章 ASP.NET Core 第6章 EF Core 第7章 A ...