文档章节

Docker初步实践遇到的一些问题

Finley.Hamilton
 Finley.Hamilton
发布于 2014/12/03 14:17
字数 870
阅读 894
收藏 21

为什么删除不了有些Images

当你试图删除一个你不用的image的时候,有时候会告诉你有个container正在使用这个镜像,但是docker ps 并没有发现相关的container,这个是由于对container的exit理解不深造成的。

这里有两个不同的单词,images和container。其中images很好理解,跟平常使用的虚拟机的镜像一个意思,相当于一个模版,而container则是images运行时的的状态。docker对于运行过的image都保留一个状态(container),可以使用命令docker ps来查看正在运行的container,对于已经退出的container,则可以使用docker ps -a来查看。 如果你退出了一个container而忘记保存其中的数据,你可以使用docker ps -a来找到对应的运行过的container使用docker commit命令将其保存为image然后运行。

事实上你需要rm掉那个container才可以进行rmi的操作

docker ps -a
docker rm ${container_id}
docker rmi ${iamge_id}

在Ubuntu下使用docker 但是不想写sudo

原理还是将用户加入docker组 问题解决

挂起一个container

Ctrl+p, Ctrl+q

#不小心exit但是数据没有保存

docker ps -a

检查所有的关掉的container

docker restart ${old_container_id}

但是问题是,也许你会觉得有些container明明都不用了却还在那里碍眼,可以删掉所有旧的container

docker rm $(docker ps -a -q) #这个更暴力一点
docker ps -a | grep 'weeks ago' | awk '{print $1}' | xargs --no-run-if-empty docker rm # 个人更喜欢这个

或者是有些时候你想删掉中间层的镜像

有些时候你可以在run里头加这个参数,这样在退出container的时候就会直接删掉那个container了

--rm=false Automatically remove the container when it exits

Docker commit and docker push

commit是commit一个正在运行的container作为一个新的镜像 push是把整个repo都推上去,包括所有的tag 和git一样的

#指定端口

docker run -ti -p 主机端口:容器端口 镜像 命令
docker ps nostalgic_morse # 用于查看端口映射的情况

#挂载数据卷 挂载数据卷才是Best Practice,Docker的本质不希望和主机发生太多的关系,不要太指望在主机上放数据文件 这篇文章 讲了这件事情的Best practice,反正就是使用data-only-container就对了

主要是还说了另外的方法的drawback

数据卷说白了就是什么都不做的卷

  • 拉一个数据镜像
docker pull maxexcloo/data

这个镜像其实很简单,看一下Dockerfile

FROM busybox:latest
MAINTAINER Max Schaefer <max@excloo.com>
RUN mkdir /data
VOLUME /data

基于buzybox,在我看来buzybox就是linux命令的一个子集

You can also use the VOLUME instruction in a Dockerfile to add one or more new volumes to any container created from that image.

这个 VOLUME关键字和 run后面的参数 -v是一个意思,在我看来这个数据是没有办法持久化的(2014.12.10)

  • 不拉镜像
docker run -ti --name web -v /src/webapp:/opt/webapp training/webapp python app.py

--name="" Assign a name to the container

注意这两个的区别

-v, --volume=[] Bind mount a volume (e.g., from the host: -v /host:/container, from Docker: -v /container)

这个是指定目录

--volumes-from=[] Mount volumes from the specified container(s)

这个后面跟container_id或者是--name指定的名字

在一个指定的container里头跑一条命令

docker exec container_id command

查看docker container的ip

docker inspect ${CONTAINER_ID}

© 著作权归作者所有

下一篇: JVM 内存模型
Finley.Hamilton

Finley.Hamilton

粉丝 5
博文 45
码字总数 15431
作品 0
广州
私信 提问
CI Weekly #8 | CI/CD 技能进阶路线

在使用 flow.ci 进行持续集成的过程中,也许你会遇到一些小麻烦。最近我们整理了一些常见问题在 flow.ci 文档之 FAQ,希望对你有用。如果你遇到其他问题,也可以通过「在线消息」或去 Gitter...

风起云飞fir_im
2016/12/22
32
0
docker化你的java应用(下)

前言 在《docker化你的java应用(上)》中,我们已经初步接触了docker的核心概念与思想,本篇博客将对docker进行实践,会介绍一些docker常用的命令,并通过docker化一个java项目来进一步认识...

张丰哲
2018/05/16
0
0
Docker 系列七(Duubo 微服务部署实践).

一、前言 之前我们公司部署服务,就是大家都懂的那一套(安装JDK、Tomcat —> 编译好文件或者打war包上传 —> 启动Tomcat),这种部署方式一直持续了很久,带来的问题也很多: 1、繁重的发布...

JMCui
2018/08/22
0
0
Node.js 微服务实践:基于容器的一站式命令行工具链

作者:个推Node.js 开发工程师 之诺 背景与摘要 由于工程数量的快速增长,个推在实践基于 Node.js 的微服务开发的过程中,遇到了如下问题: 每次新建项目都需要安装一次依赖,这些依赖之间基...

个推
02/20
0
0
Docker学习路线图 (持续更新中)

Docker学习路线图 最近很多阿里内部的同学和客户私信来咨询如何学习 Docker 技术。为此,我们列了一个路线图供大家学习Docker和阿里云容器服务。这个列表包含了一些社区的优秀资料和我们的原...

易立
2016/05/09
0
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周六乱弹 —— 早上儿子问我他是怎么来的

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @凉小生 :#今日歌曲推荐# 少点戾气,愿你和这个世界温柔以待。中岛美嘉的单曲《僕が死のうと思ったのは (曾经我也想过一了百了)》 《僕が死の...

小小编辑
48分钟前
74
1
Excption与Error包结构,OOM 你遇到过哪些情况,SOF 你遇到过哪些情况

Throwable 是 Java 中所有错误与异常的超类,Throwable 包含两个子类,Error 与 Exception 。用于指示发生了异常情况。 Java 抛出的 Throwable 可以分成三种类型。 被检查异常(checked Exc...

Garphy
今天
9
0
计算机实现原理专题--二进制减法器(二)

在计算机实现原理专题--二进制减法器(一)中说明了基本原理,现准备说明如何来实现。 首先第一步255-b运算相当于对b进行按位取反,因此可将8个非门组成如下图的形式: 由于每次做减法时,我...

FAT_mt
昨天
6
0
好程序员大数据学习路线分享函数+map映射+元祖

好程序员大数据学习路线分享函数+map映射+元祖,大数据各个平台上的语言实现 hadoop 由java实现,2003年至今,三大块:数据处理,数据存储,数据计算 存储: hbase --> 数据成表 处理: hive --> 数...

好程序员官方
昨天
7
0
tabel 中含有复选框的列 数据理解

1、el-ui中实现某一列为复选框 实现多选非常简单: 手动添加一个el-table-column,设type属性为selction即可; 2、@selection-change事件:选项发生勾选状态变化时触发该事件 <el-table @sel...

everthing
昨天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部