Docker 实践答疑

基础用法

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,界面如下:


Docker 实践答疑_第1张图片
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
Docker 实践答疑_第2张图片

注:对于 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 实践答疑)