美文网首页
【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