关于docker--详解安装,常规操作,导入导出等(2017-3-29)
测试环境 :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)的更多相关文章
- Docker详解(三)
目录 1. Docker镜像 1.1 镜像存储 1.2 base镜像 1.3 镜像Commit 2. Docker容器数据卷 2.1 基本介绍 2.2 数据卷 2.3 数据卷容器 序言:前两章我们主要 ...
- Docker详解(四) — Dockerfile剖析
目录 1.Dockfile简介 2. Dockerfile构建过程解析 3. Dockerfile体系结构 4. 案例 4.1 自定义mycentos 4.2 CMD/ENTRYPOINT 镜像案例 ...
- App.Config详解及读写操作
App.Config详解及读写操作 App.Config详解 应用程序配置文件是标准的 XML 文件,XML 标记和属性是区分大小写的.它是可以按需要更改的,开发人员可以使用配置文件来更改设置,而 ...
- ASP.NET MVC Filters 4种默认过滤器的使用【附示例】 数据库常见死锁原因及处理 .NET源码中的链表 多线程下C#如何保证线程安全? .net实现支付宝在线支付 彻头彻尾理解单例模式与多线程 App.Config详解及读写操作 判断客户端是iOS还是Android,判断是不是在微信浏览器打开
ASP.NET MVC Filters 4种默认过滤器的使用[附示例] 过滤器(Filters)的出现使得我们可以在ASP.NET MVC程序里更好的控制浏览器请求过来的URL,不是每个请求都会响 ...
- .NET DLL 保护措施详解(五)常规条件下的破解
为了证实在常规手段破解下能有效保护程序核心功能(演示版本对AES加解密算法及数据库的密钥(一段字符串)进行了保护),特对此DLL保护思路进行相应的测试,包含了反编译及反射测试,看是否能得到AES加解密 ...
- Docker详解(二)
目录 1.Docker常用命令 1.1 镜像命令 1.2 容器命令 1.2.1 常用的容器命令 1.2.2 重要的容器命令 序言:上一章我们初步介绍了一下Docker的概念,那么这次我们着手于Dock ...
- Docker详解(一)——
Docker详解 https://www.cnblogs.com/antLaddie/p/14276726.html
- Linux下mongodb安装及数据导入导出教程
Linux下mongodb安装及数据导入导出教程 #查看linux发行版本 cat /etc/issue #查看linux内核版本号 uname -r 一.Linux下mongodb安装的一般步骤 1 ...
- linux mysql 数据库操作导入导出 数据表导出导入
linux mysql 数据库操作导入导出 数据表导出导入 1,数据库导入 mysql -uroot -p show databases; create database newdb; use 数据库 ...
- Docker入门详解——安装docker并利用docker搭建lnmp
首先我们需先安装docker环境,这个比较简单,以centos7为例 docker在centos7上安装需要系统内核版本3.10+,可以通过uname -r查看内核版本号,如果版本不符请自行查阅资料更 ...
随机推荐
- SpringBoot--整合Lettuce redis
首先解释一下Lettuce客户端: Lettuce 和 Jedis 的都是连接Redis Server的客户端程序.Jedis在实现上是直连redis server,多线程环境下非线程安全,除非使用连 ...
- django 类视图的使用
使用django框架也有挺长时间了,但是一直都没有用过django的类视图,因为之前跟着网上教程学习时,觉得类视图是进阶的知识,可能目前还达不到吧 但今天在做项目的时候用到了,感觉真的太方便了吧,而且 ...
- 题解 P5937 【[CEOI1999]Parity Game】
这道题有两种做法,一种是 扩展域(种类并查集),一种是 边带权(带权并查集).种类并查集貌似应该都比带权并查集简单,所以先讲种类并查集的做法,再讲带权并查集 种类并查集 若 sum[ l ~ r ] ...
- code first 更新字段
protected override void Up(MigrationBuilder migrationBuilder) { migrationBuilder.AddColumn<string ...
- C++ ACE 动态加载链接库
添加头文件 #include <ace/DLL.h> #include <ace/DLL_Manager.h> 定义函数接口 typedef long (*PFN_TEST)( ...
- Java 内存分析之mat安装
有三款内存分析的工具 免费 VisualVM MAT 下载地址https://www.eclipse.org/mat/ mac 下面 under the current working directo ...
- java语言基础(四)_面向对象_类_对象_封装_构造
面向对象 Java语言是一种面向对象的程序设计语言,而面向对象思想是一种程序设计思想,我们在面向对象思想的指引下,使用Java语言去设计.开发计算机程序. 这里的对象泛指现实中一切事物,每种事物都具备 ...
- 浏览器缓存_HTTP强缓存和协商缓存
浏览器缓存 浏览器缓存是浏览器在本地磁盘对用户最近请求过的文档进行存储,当访问者再次访问同一页面时,浏览器就可以直接从本地磁盘加载文档. 所以根据上面的特点,浏览器缓存有下面的优点: 减少冗余的数据传 ...
- Java桌面应用程序打包
IDEA环境生成Jar 设置配置 File -> Project Structure -> Artifacts -> + -> JAR -> From modules w ...
- 【区间DP】低价回文
[区间DP]低价回文 标签(空格分隔): 区间DP 回文词 [题目描述] 追踪每头奶牛的去向是一件棘手的任务,为此农夫约翰安装了一套自动系统.他在每头牛身上安装了一个电子身份标签,当奶牛通过扫描器的时 ...