Docker入门简记
Docker的容器环境实际上是借助类Linux命名空间,将各种系统资源按照容器不同划分了不同的命名空间进行隔离,为各个进程提供独立的运行环境
关键概念:容器,镜像
两个概念一起看,镜像好比平常系统中的各个可执行文件exe,每个可执行文件都会通过一个进程运行起来,容器则好比进程。
镜像有镜像仓库,好比各大应用市场,可通过下载的形式把镜像拉到本地
知道两个概念则可以使用docker,下面介绍使用中的命令
镜像相关命令
镜像拉取
docker pull [镜像名]
eg: docker pull jim3me/etcdkeeper
镜像创建
docker build -t[镜像名称] [DockerFile文件所在路径]
创建镜像的目录需要包含DockerFile文件,里面实质包含建立镜像时需要的操作,以类似于脚本的形式描述,次文件内容暂不在本篇范围内,一般网上支持docker运行的源码都会包含这个文件,github的项目尤为显著,一般可以cd到该目录下创建
cd /home/aa/Document/otherProject/proj1
docker build -t myimage .
镜像查看
docker images
镜像删除
docker image rm [镜像名|镜像id]
-f 加上此参数使得删除关联的卷标
容器相关命令
镜像运行(创建新的容器并把镜像丢到容器中运行)
docker run [镜像名|镜像id]
run可带命令本身的参数,也可带镜像运行的时候带的参数。命令的参数:
-I -t 交互模式
-privileged=true 以root用户的身份去运行,默认该值为false
-v [hostPath]:[containerPath] 路径或者文件从宿主机映射到容器中。如果hostPath的对象并不存在,则程序会在宿主中创建一个目录。这种操作应该是所谓的“持久化”,实际操作跟软连接和文件系统挂载有关系
--volumes-form [name|Id] 与指定容器共享卷标,但是并非额能完全共享,镜像只读层的内容则不会共享,仅共享读写层的内容。
-d 以守护模式运行,这样运行镜像时就不会同时进入镜像
-p [hostPort]:[containerPort] 端口映射
--name 容器名称,如不给则会随机生成一个名称
--net= 网络类型,分4种
host:与宿主共用网络
none:无网络环境
bridge:网桥模式,默认
container: 语法--net=container:[name|id] 与指定容器公共网络,一旦以这种形式设置,则无法在本容器中开启端口映射,所有映射均要在所属容器中开启。
容器停止
docker stop [containerId|containerName]
容器移除
docker rm [containerId|containerName]
容器重启
docker restart [containerId|containerName]
容器运行
docker start [containerId|containerName]
容器日志
docker logs [Id|Name] --since="yyyy-MM-ddThh:mm:ss" 年月日时分秒
容器重命名
查看所有容器
docker ps -a
查看所有运行的容器
docker ps
进入容器运行命令
docker exec [containerId|containerName] [exeName] [exe parameter]
eg:docker exec prometheus /bin/sh #进入普罗米修斯的容器中打开一个终端,在此命令中加上-it参数则不会因为该容器正在运行而被阻塞sh进程。
查看容器信息,包括端口映射,挂载,运行命令等
docker inspect [containerId|name]
修改容器设置,野蛮方法
因为基于Linux一切皆文件的定律,容器本身也是文件,容器信息定由文件记录,因此修改对应文件则可修改容器的信息。只要找对信息所放的位置,定能修改成功,
1.修改前先关闭容器;
2.打开配置文件,存放在/var/lib/docker/containers/{容器完整id}/
如果是端口映射hostscofig.json
最主要的是config.v2.json,此处包含了诸多配置,端口,环境变量,fs挂载
以修改端口映射为例,需要修改两个地方
a.hostconfig.json
“portBindings”:{
"8080/tcp": //容器
[{
“HostIp”:"",
"HostPort":"8080"//宿主
}]
}
b.config.v2.json
"ExposedPorts":{"8080/tcp":{}} //这里填的都是容器
3.重启docker #sudo service docker restart。通过inspece则可看到修改后的结果了
Docker入门简记的更多相关文章
- 第三章 Docker 入门
第三章 docker 入门 3.1 确保docker已经就绪 首先查看docker程序是否存在,功能是否正常 [#3#cloudsoar@cloudsoar-virtual-machine ~]$su ...
- Docker入门教程(九)10个镜像相关的API
Docker入门教程(九)10个镜像相关的API [编者的话]DockerOne组织翻译了Flux7的Docker入门教程,本文是系列入门教程的第九篇,重点介绍了镜像相关的Docker Remote ...
- Docker入门教程(八)Docker Remote API
Docker入门教程(八)Docker Remote API [编者的话]DockerOne组织翻译了Flux7的Docker入门教程,本文是系列入门教程的第八篇,重点介绍了Docker Remote ...
- Docker入门教程(七)Docker API
Docker入门教程(七)Docker API [编者的话]DockerOne组织翻译了Flux7的Docker入门教程,本文是系列入门教程的第七篇,重点介绍了Docker Registry API和 ...
- Docker入门教程(六)另外的15个Docker命令
Docker入门教程(六)另外的15个Docker命令 [编者的话]DockerOne组织翻译了Flux7的Docker入门教程,本文是系列入门教程的第六篇,继续介绍Docker命令.之前的第二篇文章 ...
- Docker入门教程(五)Docker安全
Docker入门教程(五)Docker安全 [编者的话]DockOne组织翻译了Flux7的Docker入门教程,本文是系列入门教程的第五篇,介绍了Docker的安全问题,依然是老话重谈,入门者可以通 ...
- Docker入门教程(四)Docker Registry
Docker入门教程(四)Docker Registry [编者的话]DockerOne组织翻译了Flux7的Docker入门教程,本文是系列入门教程的第四篇,介绍了Docker Registry,它 ...
- Docker入门教程(三)Dockerfile
Docker入门教程(三)Dockerfile [编者的话]DockerOne组织翻译了Flux7的Docker入门教程,本文是系列入门教程的第三篇,介绍了Dockerfile的语法,DockerOn ...
- Docker入门教程(二)命令
Docker入门教程(二)命令 [编者的话]DockerOne组织翻译了Flux7的Docker入门教程,本文是系列入门教程的第二篇,介绍了Docker的基本命令以及命令的用法和功能. 在Docker ...
随机推荐
- BZOJ.3170.[TJOI2013]松鼠聚会(切比雪夫距离转曼哈顿距离)
题目链接 将原坐标系每个点的坐标\((x,y)\)变为\((x+y,x-y)\),则原坐标系中的曼哈顿距离等于新坐标系中的切比雪夫距离. 反过来,将原坐标系每个点的坐标\((x,y)\)变为\((\f ...
- BZOJ.1568.[JSOI2008]Blue Mary开公司(李超线段树)
题目链接 线段树每个节点记录\(f(mid)\)最大的直线(在\(mid\)处函数值最大的直线),称作优势线段(还是直线啊...无所谓了). 如果是在区间插入线段会影响\(O(\log n)\)个区间 ...
- Map、Set使用过程中可能出现的问题
修改了key之后不能remove class Student implements Serializable { Integer id; String name; public Student(Int ...
- emacs 入门教程,菜单汉化,配置文件等杂乱文章
首先来一发ArchWiki的Emacs简体中文的入门教程 https://wiki.archlinux.org/index.php/Emacs_(%E7%AE%80%E4%BD%93%E4%B8%AD ...
- CY7C68013 USB接口相机开发记录 - 第二天:驱动修改
上次写了资料的下载,并对资料进行了分类,分完类看起来就比较清晰.同时通过强大的百度,也可以得到不少资料. 这里对比较关键的几个文件进行罗列: 一.驱动相关 cyusb.inf: 修改CYUSB.INF ...
- .net Kafka.Client多个Consumer Group对Topic消费不能完全覆盖研究总结(二)
依据Partition和Consumer的Rebalance策略,找到Kafka.Client Rebalance代码块,还原本地环境,跟踪调试,发现自定义Consumer Group 的Consum ...
- Mac redis入门
Mac redis入门 一.Redis简介 Redis是开源的key-value数据库,运行在内存中,但可以把数据持久化存到磁盘.Redis具有极高的性能,也为各种语言提供了丰富的接口,因此有着广泛的 ...
- visual studio 设计第一个WinForm小程序
WinForm小程序之消息框 首先打开visual studio 软件,然后[文件]-[新建]-[项目]-[Visual C#]-[Windows],选择Windows窗体应用程序,根据自己的需要修改 ...
- 如何确定Isilon里的磁盘是多大的?
在不知道节点任何信息的情况下,可以使用下面的方法来确定磁盘的大小. 1. 使用命令"sysctl efs.gmp.infos | less",能得到cluster的所有节点以及所有 ...
- Android设置屏幕旋转后保存数据
1.onCreate()方法中最后判断需要保存的状态值 if(savedInstanceState != null){ mCurrentIndex = savedInstanceState.getIn ...