美文网首页
【docker学习笔记】镜像、容器和数据卷

【docker学习笔记】镜像、容器和数据卷

作者: 一路向北__ | 来源:发表于2017-06-10 17:38 被阅读173次

docker安装

机器信息:linux centos

安装:yum install docker 
启动:systemctl enable docker && systemctl start docker
docker 配置信息位置:/usr/lib/systemd/system/docker.service

镜像image

1.1获取镜像

docker pull ubuntu
(没有tag标记,默认pull最新版本)

1.2查看镜像

docker images

1.3使用镜像启动容器

docker run -it ubuntu /bin/bash

1.4创建镜像

创建镜像有很多方法,用户可以从 Docker Hub 获取已有镜像并更新,也可以利用本地文件系统创建一个。

1.4.1 修改已有镜像

对已下载的镜像进行修改,然后提交到指定仓库。

1.4.2使用Dockerfile创建镜像

一个Dockerfile文件例子:

# This is a comment
FROM ubuntu:14.04
MAINTAINER Docker Newbee <newbee@docker.com>
RUN apt-get -qq update
RUN apt-get -qqy install ruby ruby-dev
RUN gem install sinatra

Dockerfile名词解释:

  • 使用#来注释
  • FROM 指令告诉 Docker 使用哪个镜像作为基础
  • MAINTAINER :表示维护者的信息
  • RUN 开头的指令会在创建中运行,比如安装一个软件包,在这里使用 apt-get 来安装了一些软件
  • ADD 命令复制本地文件到镜像
  • EXPOSE 命令来向外部开放端口
  • CMD 命令来描述容器启动后运行的程序等

启动镜像:

docker build -t "localhost/ubuntu:v2.0" .
(“-t”:仓库信息/镜像名称:镜像版本;“.”:Dockerfile存在于当前目录)
1.4.3从本地文件系统导入
sudo cat ubuntu-14.04-x86_64-minimal.tar.gz  |docker import - ubuntu:14.04

1.5修改镜像docker tag

docker tag 

1.6上传镜像

docker push

1.7存出和载入镜像

如果要导出镜像到本地文件,可以使用 docker save 命令。

docker save -o ubuntu_14.04.tar ubuntu:14.04

可以使用 docker load 从导出的本地文件中再导入到本地镜像库

docker load --input ubuntu_14.04.tar
或
docker load < ubuntu_14.04.tar

这将导入镜像以及其相关的元数据信息(包括标签等)。

1.8删除镜像

docker rmi

2容器

2.1启动容器

docker run -t -i ubuntu:14.04 /bin/bash
(-t 选项让Docker分配一个伪终端(pseudo-tty)并绑定到容器的标准输入上, -i 则让容器的标准输入保持打开。)

2.2守护态运行

更多的时候,需要让 Docker 容器在后台以守护态(Daemonized)形式运行。此时,可以通过添加 -d 参数来实现。

docker run -d ubuntu:14.04 /bin/sh -c "while true; do echo hello world; sleep 1; done"

docker ps 即可查看到刚才运行的容器
说明:

Docker容器后台运行,就必须有一个前台进程.容器运行的命令如果不是那些一直挂起的命令(比如运行top,tail),就是会自动退出的.
对于有一些你可能不知道怎么前台运行的程序,提供一个投机方案,你只需要在你启动的命令之后,添加类似于 tail top 这种可以前台运行的程序,这里特别推荐 tail ,然后持续输出你的log文件.tail -f /var/log/nginx/error.log
参考:http://blog.csdn.net/meegomeego/article/details/50707532

其他命令:

* docker ps -a:查看终止的进程
(处于终止状态的容器,可以通过 docker start 命令来重新启动)
* docker logs <contianer_id>
* docker stop 来终止一个运行中的容器。
* docker restart 命令会将一个运行态的容器终止,然后再重新启动它。

2.3进入容器

docker exec -it <container_id> /bin/bash

2.4导入和导出容器

使用 docker load 来导入镜像存储文件到本地镜像库,也可以使用 docker import 来导入一个容器快照到本地镜像库。

2.5删除容器

docker rm 

3.数据卷

3.1创建数据卷

docker run -d -P --name web -v /webapp training/webapp python app.py
(启动容器的时候通过-v参数指定数据卷,将/webapp 目录挂载到容器)

ps:也可以在 Dockerfile 中使用 VOLUME 来添加一个或者多个新的卷到由该镜像创建的任意容器。

3.2挂载一个主机目录作为数据卷:

docker run -d -P --name web -v /src/webapp:/opt/webapp training/webapp python app.py
(加载主机的 /src/webapp 目录到容器的 /opt/webapp 目录)

3.3挂载一个本地主机文件作为数据卷

docker run --rm -it -v ~/.bash_history:/.bash_history ubuntu /bin/bash
(这样就可以记录在容器输入过的命令了。)

3.4数据卷容器

如果你有一些持续更新的数据需要在容器之间共享,最好创建数据卷容器。
数据卷容器,其实就是一个正常的容器,专门用来提供数据卷供其它容器挂载的。
首先,创建一个命名的数据卷容器 dbdata:

docker run -d -v /dbdata --name dbdata training/postgres echo Data-only container for postgres

相关文章

网友评论

      本文标题:【docker学习笔记】镜像、容器和数据卷

      本文链接:https://www.haomeiwen.com/subject/kxfcqxtx.html