美文网首页
Docker 实践答疑

Docker 实践答疑

作者: Devid | 来源:发表于2017-05-05 22:29 被阅读94次

    基础用法

    docker run 提示错误

    docker: Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?.
    See 'docker run --help'.
    

    解决方法:docker 服务未运行,请开启:

    sudo service docker start
    

    安装docker web管理界面程序shipyard

    shipyard提供了管理界面管理各种docker资源。
    项目地址:https://github.com/shipyard/shipyard
    安装方法:

    curl -s https://shipyard-project.com/deploy | bash -s
    

    安装完成后默认登录用户名密码为:admin/shipyard,界面如下:


    image.png

    docker ps 和docker ps -a

    • docker ps:列出正在运行的容器。
    • docker ps -a:列出所有容器,包括正在运行和停止的。

    创建守护式容器

    守护式容器是指后台长期运行的容器,没有交互式会话,适合长期运行的服务,如web程序。
    使用-d参数可以将容器放到后台运行,如:

    docker run --name webserver -d nginx
    

    使用阿里云镜像加速器加速docker

    对于使用 systemd (ubuntu 16.04)的系统,用 systemctl enable docker
    启用服务后,编辑 /etc/systemd/system/multi-user.target.wants/docker.service
    文件,找到 ExecStart=
    这一行,在这行最后添加加速器地址 --registry-mirror=<加速器地址>
    ,如:

    ExecStart=/usr/bin/dockerd --registry-mirror=https://v2kdqv13.mirror.aliyuncs.com
    

    注:对于 1.12 以前的版本,dockerd
    换成 docker daemon

    重新加载配置并且重新启动。

    $ sudo systemctl daemon-reload
    $ sudo systemctl restart docker
    

    检查加速器是否生效

    Linux系统下配置完加速器需要检查是否生效,在命令行执行 ps -ef | grep dockerd,如果从结果中看到了配置的 --registry-mirror 参数说明配置成功。

    $ sudo ps -ef | grep dockerd
    root   5346   1  0 19:03 ?    00:00:00 /usr/bin/dockerd --registry-mirror=https://v2kdqv13.mirror.aliyuncs.com
    

    将宿主机目录挂在到docker Nginx镜像进行静态网站测试

    如宿主机当前目录为website,我们想将其挂在到Nginx容器中,当修改本地website中内容时,站点内容随时刷新为本地内容,启动挂在方法如下:

    docker run -d -p 80:80 --name webserver -v $PWD/website:/usr/share/nginx/html:ro nginx
    

    同时使Nginx容器/usr/share/nginx/html目录变为只读。

    数据卷容器

    如果你有一些持续更新的数据需要在容器之间共享,最好创建数据卷容器。

    数据卷容器,其实就是一个正常的容器,专门用来提供数据卷供其它容器挂载的。

    基本用法

    首先,创建一个名为 dbdata 的数据卷容器:

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

    然后,在其他容器中使用 --volumes-from 来挂载 dbdata 容器中的数据卷。

    $ sudo docker run -d --volumes-from dbdata --name db1 training/postgres
    $ sudo docker run -d --volumes-from dbdata --name db2 training/postgres
    

    可以使用超过一个的 --volumes-from 参数来指定从多个容器挂载不同的数据卷。 也可以从其他已经挂载了数据卷的容器来级联挂载数据卷。

    $ sudo docker run -d --name db3 --volumes-from db1 training/postgres
    

    注意:使用 --volumes-from 参数所挂载数据卷的容器自己并不需要保持在运行状态。

    如果删除了挂载的容器(包括 dbdata、db1 和 db2),数据卷并不会被自动删除。如果要删除一个数据卷,必须在删除最后一个还挂载着它的容器时使用 docker rm -v 命令来指定同时删除关联的容器。 这可以让用户在容器之间升级和移动数据卷。

    相关文章

      网友评论

          本文标题:Docker 实践答疑

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