文档章节

Docker从0开始

空心大白菜
 空心大白菜
发布于 2014/07/24 17:51
字数 1109
阅读 53
收藏 0

安装

参考官网即可。我在Ubuntu-14.04上通过User Guide没有任何问题。

Docker神奇的AUFS文件系统


AUFS (AnotherUnionFS in version 1, but advanced multi layered unification filesystem since version 2) implements a union mount for Linux file systems. Developed by Junjiro Okajima in 2006. aufs is a complete rewrite of the earlier Unionfs. It aimed to improve reliability and performance, but also introduced some new concepts, like writable branch balancing, and other improvements - some of which are now implemented in the Unionfs 2.x branch.


执行:docker info可以看到系统级别的信息。如下所示,可以看到docker使用的存储驱动叫aufs。简而言之,AUFS就是一个可堆叠联合文件系统,通过aufs可灵活组装一个目标容器,如在一个只读的操作系统上叠加一个可读可写的应用程序容器,当应用程序执行过程中发生数据变化,只在可写的容器层发生,这样可实现灵活的容器组装(如替换操作系统层而不影响应用程序层),同时无需像image一样需要保存成一个大文件,节省存储空间。

Containers: 2
Images: 20
Storage Driver: aufs
 Root Dir: /var/lib/docker/aufs
 Dirs: 24
Execution Driver: native-0.2
Kernel Version: 3.13.0-24-generic
WARNING: No swap limit support

烦人的sudo

ubuntu下每次执行docker都要输入sudo,比较烦人,可通过如下配置简化

# 添加当前用户到docker用户组里,注意这里的littcai为ubuntu server登录用户名
sudo gpasswd -a littcai docker
# 重启Docker后台监护进程
sudo service docker restart
# 重启之后,尝试一下,是否生效
docker version
#若还未生效,则系统重启,则生效
sudo reboot


运行

运行一个Redis服务

执行如下命令:运行一个名为common-redis的docker容器,-d表示以daemon方式运行,-p表示将容器内的6379端口映射到宿主主机的6379端口,这样一个最简单的redis服务就创建好了。

sudo docker run --name common-redis -d -p 6379:6379 redis


连接到Redis服务

运行redis-cli命令并link到之前运行的common-redis服务上,-it表示开一个tty终端,提供交互模式,--rm表示自动删除已运行存在的相同image的容器

sudo docker run -it --link common-redis:redis --rm redis sh -c 'exec redis-cli -h "$REDIS_PORT_6379_TCP_ADDR" -p "$REDIS_PORT_6379_TCP_PORT"'


Attach到Container

有时候我们需要重新进入一个正在运行的container,这里我们可以使用attach命令,其中-i表示以交互方式访问。当需要退出时,需使用ctrl-p + ctrl-q(注意是连续两个指令)而不是exit(exit会导致容器停止)。

docker attach -i f2b0ae55d07a



保存修改(new image)

首先用docker ps -a命令查询所有已创建的容器,如下图所示,得知其CONTAINER ID=f2b0ae55d07a

执行如下命令保存镜像,其中-m表示本次提交的注释,-a为author,f2b0ae55d07a为容器ID,ycai/ubuntu-jdk为镜像名称(此处通过前缀方式增加了用户名作为分类,方便查询),v1为tag名。

docker commit -m="Basic JDK ENV" -a="ycai" f2b0ae55d07a ycai/ubuntu-jdk:v1

提交成功后,可通过docker images命令查看镜像仓库中是否有刚才保存的镜像,如下图所示


拷贝文件

拷贝容器内文件到Host

sudo docker cp container:/path hostpath


拷贝Host文件到容器内
注:这个操作不修改原来的image内容,而是再它的基础上新建一个image.
sudo docker insert image url path


挂载Host目录到容器中

通过-v参数可以将Host的指定目录mount到目标容器的指定目录,这样就可以直接在Host中修改文件而不用每次都复制到容器中了。

sudo docker run --name tomcat -v /home/user/webapps:/opt/tomcat/webapps ubuntu-tomcat


Docker容器连接

未理解问题

问题:通过-v挂载了Host的一个目录到容器中,然而退出后通过start命令再启动该容器,则Host该目录下的文件变化没法体现到容器中,容器中在该目录下的文件操作无法体现到Host中,及mount失效了。
现象:将容器内挂载目录下的文件删掉,退出容器,再重新启动进入容器,发现目录又被重新mount上了,而且又支持双向同步了,诡异
分析:该目录同时也是Host通过mount方式挂载的一个远端存储,由于Host上mount失效导致三者之间不同步

© 著作权归作者所有

上一篇: Docker常见问题
下一篇: Ubuntu从0开始
空心大白菜
粉丝 16
博文 48
码字总数 15363
作品 0
宝山
程序员
私信 提问
Docker | 第二章:第一个Docker应用

前言 上一章节,已经简单讲解了相关方面的知识,相信大家已经有个概念了。这章节开始,开始进行实践操作。和学习任何一门语言一样,我们今天也开始从开始~ 对不了解的,可查看下第一章:Doc...

oKong
2018/07/31
272
0
99.docker简介、安装、镜像、创建镜像

25.1 docker简介 25.2 安装docker 25.3 镜像管理 25.4 通过容器创建镜像 25.1 docker简介 docker好比一个集装箱,我们可以把所有的想要运行的环境、软件包等等打包好,放到docker里。那你就可...

axin-linux
05/27
5
0
Docker 1.0 正式版来了!!!

Docker 1.0 正式版来了!!! 1.0 版本包含很多新特性,这也是 Docker 的首个产品级的版本。从今天开始,你将会一直听到一个新的概念 —— Docker as a platform ,其组件包括 Docker 引擎、...

oschina
2014/06/10
9.9K
33
Docker 部署 Spring Boot 项目初探

仅想在Docker里运行一个Spring Boot项目,捣鼓了许久。。。 本文主要适用于Windows环境下的Docker 一、运行环境 Windows 10 Maven 3.5 Docker 18.06.1-ce-win73 (19507) 二、创建Spring Boot...

AmosWang
2018/09/20
3.3K
6
centos 6.5 内核升级

一.运行docker Linux内核版本需要在3.8以上,针对centos6.5 内核为2.6的系统需要先升级内核.不然会特别卡,退出容器. 在yum的ELRepo源中,有mainline(3.13.1)、long-term(3.10.28)这2个内核...

kingkernel
2017/03/13
0
0

没有更多内容

加载失败,请刷新页面

加载更多

ubuntu 19.4 安装virtual

ubuntu 安装virtual 后报错 Solve “Result Code: NS_ERROR_FAILURE (0x80004005)” VirtualBox Error In Arch Linux $ sudo /sbin/vboxconfig 报错 “debconf: DbDriver ”config“: confi......

internetafei
11分钟前
4
0
思维导图技术分享

- by 文恒

程序员的自我成长
14分钟前
4
0
《将博客搬至CSDN》

将blog,也同步到CSDN中

温安适
22分钟前
7
0
watchbog再升级,企业黄金修补期不断缩小,或面临蠕虫和恶意攻击

概要 近日,阿里云安全团队发现wacthbo挖矿团伙[1]新增了CVE_2019_5475 的漏洞利用代码,并开始进行尝试性攻击。 通过对CVE_2019_5475漏洞的生命周期进行分析后发现,漏洞批量化利用的速度正...

大涛学长
25分钟前
4
0
深入理解JVM,虚拟机类加载机制

本人免费整理了Java高级资料,一共30G,需要自己领取; 传送门:https://mp.weixin.qq.com/s/JzddfH-7yNudmkjT0IRL8Q 类加载过程概览 类从被加载到虚拟机内存中开始,到卸载出内存为止,它的...

李红欧巴
26分钟前
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部