测试环境 :CentOS 7.1 64位

目的:展示docker的常规使用(安装,常规操作,导入导出等)

其他:关于原理等请参考文章后面的延伸阅读,本文不做深入探讨,且方法不唯一

0x01 关于安装docker

linux环境下直接运行即可:

sudo curl -fsSL https://get.docker.com/ | sh

其他安装方法与请参考文章下面链接,在此不再赘述

0x02关于docker基础操作

安装完成后

chkconfig docker on # 加入开机启动 

service docker start # 启动docker服务

配置文件 /etc/sysconfig/docker


基本信息查看

 docker version # 查看docker的版本号,包括客户端、服务端、依赖的Go等

  docker info # 查看系统(docker)层面信息,包括管理的images, containers数等 

docker pull centos 下载 

docker images [ centos ] 查看

0x03关于docker获取容器与容器的常规操作

搜索镜像

docker search <image> # 在docker index中搜索image 

下载镜像

docker pull <image> # 从docker registry server 中下拉image

查看镜像

docker images :# 列出

images docker images -a # 列出所有的images(包含历史)

docker rmi <image ID> :# 删除一个或多个image

操作演示

docker version

docker images

0x04关于docker容器的使用

概念说明:启动一个镜像即为创建它的容器,容器为镜像的实例

1.关于启动容器:

启动容器的方法有两种:

● 交互型容器:前台运行,可以通过控制台与容器交互。如果创建该容器的终端被关闭,则容器就变为停止状态。此外,在容器控制台中输入exit或者通过docker stop或docker kill也能终止容器。

● 后台型容器:后台运行,创建启动之后就与终端无关了,需要用docker stop或docker kill来终止。

1.交互型容器的命令与演示:

如图所示:注意填写 IMAGE ID 启动相应的镜像

docker run -i -t 0584b3d2cf6d /bin/bash

2.关于容器的修改与保存:

做简单的镜像更改并打包:创建imagetest文件夹

此时 复制窗口 进行commit 制作全新的镜像:

① 列出当前正在运行的容器 注意查看 container id 会在后面的commit中使用

② commit 保存更改并生成镜像

docker commit --author="303donatello" e91cf0291e79 centosimage:v1.0

// # commit保存对镜像的更改

docker images #查看实验结果

0x05关于docker容器的导入导出

导出:

以导出上面操作生成的centosimage为例:

1.启动相应的镜像生成容器:

docker run -i -t 0d123bf431d2 /bin/bash

2. docker ps -a #查看对应id

3.导出镜像:

导入:

导入镜像到docker(以上步骤产生的文件为例):

cat centosIE.tar | docker import - centosimport:v1.0

运行 验证:

被修改的镜像 导入并生成容器成功

0x06 其他参考等

1,获取Centos镜像

docker pull centos:latest

2,查看镜像运行情况

docker images centos

3,在容器下运行 shell bash

docker run -i -t centos /bin/bash

4,停止容器

docker stop

5,查看容器日志

docker logs -f

6,删除所有容器

docker rm $(docker ps -a -q)

7,删除镜像

docker rmi <image id/name>

8,提交容器更改到镜像仓库中

docker run -i -t centos /bin/bash

 useradd myuser

 exit

 docker ps -a |more

 docker commit myuser/centos

9,创建并运行容器中的 hello.sh

docker run -i -t myuser/centos /bin/bash

 touch /home/myuser/hello.sh

 echo "echo "Hello,World!"" > /home/myuser/hello.sh

 chmod +x /home/myuser/hello.sh

 exit

 docker commit myuser/centos

 docker run -i -t myuser/centos /bin/sh /home/myuser/hello.sh

10,在容器中运行Nginx

在容器中安装好Nginx,并提交到镜像中

docker run -t -i -p 80:80 nginx/centos /bin/bash

 启动Nginx

 /data/apps/nginx/sbin/nginx

 (还不清楚如何在后台运行!!!)

在浏览器访问宿主机80端口。

11,映射容器端口

docker run -d -p 192.168.9.11:2201:22 nginx/centos /usr/sbin/sshd -D

用ssh root@192.168.9.11 -p 2201 连接容器,提示:

Connection to 192.168.1.205 closed.(此问题还未解决!!!)

可能会遇到的问题:

 ##在容器里面修改用户密码的时候报错:

 /usr/share/cracklib/pw_dict.pwd: No such file or directory

 PWOpen: No such file or directory

解决:yum -y reinstall cracklib-dicts

查看容器

docker ps :列出当前所有正在运行的container

 docker ps -l :列出最近一次启动的container

 docker ps -a :列出所有的container(包含历史,即运行过的container)

 docker ps -q :列出最近一次运行的container ID

再次启动容器

docker start/stop/restart #:开启/停止/重启container 

 docker start [container_id] #:再次运行某个container (包括历史container)

 #进入正在运行的docker容器

 docker exec -it [container_id] /bin/bash 

 docker run -i -t -p <host_port:contain_port> #:映射 HOST 端口到容器,方便外部访问容器内服务,host_port 可以省略,省略表示把 container_port 映射到一个动态端口。

删除容器

docker rm <container...> #:删除一个或多个container

 docker rm docker ps -a -q #:删除所有的container

 docker ps -a -q | xargs docker rm #:同上, 删除所有的container

docker run 和 docker create 参数基本一样,run是创建容器并后台启动,create是只创建容器。

docker run 相当于docker create 和 docker start

延伸阅读与本文参考:

http://blog.csdn.net/opensure/article/details/46559071

[http://blog.csdn.net/dc_726/article/details/48206779?locationNum=1&fps=1](

关于docker--详解安装,常规操作,导入导出等(2017-3-29)的更多相关文章

  1. Docker详解(三)

    目录 1. Docker镜像 1.1 镜像存储 1.2 base镜像 1.3 镜像Commit 2. Docker容器数据卷 2.1 基本介绍 2.2 数据卷 2.3 数据卷容器 序言:前两章我们主要 ...

  2. Docker详解(四) — Dockerfile剖析

    目录 1.Dockfile简介 2. Dockerfile构建过程解析 3. Dockerfile体系结构 4. 案例 4.1 自定义mycentos 4.2 CMD/ENTRYPOINT 镜像案例 ...

  3. App.Config详解及读写操作

    App.Config详解及读写操作   App.Config详解 应用程序配置文件是标准的 XML 文件,XML 标记和属性是区分大小写的.它是可以按需要更改的,开发人员可以使用配置文件来更改设置,而 ...

  4. ASP.NET MVC Filters 4种默认过滤器的使用【附示例】 数据库常见死锁原因及处理 .NET源码中的链表 多线程下C#如何保证线程安全? .net实现支付宝在线支付 彻头彻尾理解单例模式与多线程 App.Config详解及读写操作 判断客户端是iOS还是Android,判断是不是在微信浏览器打开

    ASP.NET MVC Filters 4种默认过滤器的使用[附示例]   过滤器(Filters)的出现使得我们可以在ASP.NET MVC程序里更好的控制浏览器请求过来的URL,不是每个请求都会响 ...

  5. .NET DLL 保护措施详解(五)常规条件下的破解

    为了证实在常规手段破解下能有效保护程序核心功能(演示版本对AES加解密算法及数据库的密钥(一段字符串)进行了保护),特对此DLL保护思路进行相应的测试,包含了反编译及反射测试,看是否能得到AES加解密 ...

  6. Docker详解(二)

    目录 1.Docker常用命令 1.1 镜像命令 1.2 容器命令 1.2.1 常用的容器命令 1.2.2 重要的容器命令 序言:上一章我们初步介绍了一下Docker的概念,那么这次我们着手于Dock ...

  7. Docker详解(一)——

    Docker详解 https://www.cnblogs.com/antLaddie/p/14276726.html

  8. Linux下mongodb安装及数据导入导出教程

    Linux下mongodb安装及数据导入导出教程 #查看linux发行版本 cat /etc/issue #查看linux内核版本号 uname -r 一.Linux下mongodb安装的一般步骤 1 ...

  9. linux mysql 数据库操作导入导出 数据表导出导入

    linux mysql 数据库操作导入导出 数据表导出导入 1,数据库导入 mysql -uroot -p show databases; create database newdb; use 数据库 ...

  10. Docker入门详解——安装docker并利用docker搭建lnmp

    首先我们需先安装docker环境,这个比较简单,以centos7为例 docker在centos7上安装需要系统内核版本3.10+,可以通过uname -r查看内核版本号,如果版本不符请自行查阅资料更 ...

随机推荐

  1. 入门大数据---Spark整体复习

    一. Spark简介 1.1 前言 Apache Spark是一个基于内存的计算框架,它是Scala语言开发的,而且提供了一站式解决方案,提供了包括内存计算(Spark Core),流式计算(Spar ...

  2. python利用列表文件遍历

    关键词:文件遍历/列表 思路:先制作目标文件列表(txt/csv...均可),再逐行读取列表文件 1. 制作列表 linux 终端输入:# find ./abc -type f > list.t ...

  3. vue全家桶(4.2)

    5.2.使用vuex重构上面代码 Vuex是什么?官方定义:Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式.它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测 ...

  4. cp5200的一般步骤

    cp5200的一般步骤: 1.创建数据对象 hObj = CP5200_CommData_Create(nCommType, id, GetIDCode()); 2.生成所需要的数据,如 :生成设置亮 ...

  5. 半导体质量管理_Stargate

    监控您的SPC活动 生产质量指标概述 应定期评估统计信息,以便您可以更好地利用统计过程控制.通过这种方式,您可以快速发现质量缺陷并采取适当的措施做出反应.LineWorks STARGATE提供了生产 ...

  6. 洛谷 P5683 【[CSPJX2019]道路拆除】

    先用做的暴力,因为n最多才3000嘛,但是后来发现时间复杂度不止\(O\)(\({n}^2\)),然后就放弃了. 讲讲我的暴力+错误思路吧: 把1到s1和s2的最短路算出来,用SPFA,然后用DFS求 ...

  7. Selenium WebDriver使用

    目录 介绍 selenium webdriver chromedriver下载安装 1.下载 2.使用 3.测试 WebDriver常用操作 1.浏览器操作 2.窗口和弹框操作 3.cookies 操 ...

  8. css/html 空格,html空格符的显示、标示方式【html空格代码】

    在html里面空格的话,你直接敲打出来的空格是不可以的,下面将通过html和css中设置显示空格的实现总结: Html中空格 符号 编号 描述      不断行的空白(1个字符宽度), 不换行空格 全 ...

  9. chrome本地调试跨域问题

    1.关闭chrome浏览器(全部) 我们可以通过使用chrome命令行启动参数来改变chrome浏览器的设置,具体的启动参数说明参考这篇介绍.https://code.google.com/p/xia ...

  10. 【Flutter 实战】动画核心

    老孟导读:动画系统是任何一个UI框架的核心功能,也是开发者学习一个UI框架的重中之重,同时也是比较难掌握的一部分,下面我们就一层一层的揭开 Flutter 动画的面纱. 任何程序的动画原理都是一样的, ...