docker笔记

1) docker安装

  • 按照官网说明安装docker,这个安装并不包含镜像安装

  • 为非root用户添加组权限sudo usermod -aG docker youname。添加完成它后注销重新登录以更新group缓存

  • 官网主站的docker hub实在太慢了,先替换为mirror。国内目前提供mirror的有官方mirror,ustc,daocloud, aliyun, 网易docker。参考国内 docker 仓库镜像对比,以及docker镜像说明。在我的ubuntu环境下,只需要在/etc/docker/目录下新建一个daemon.json文件,然后加入

{
  "registry-mirrors": ["https://registry.docker-cn.com"]
}

2) docker非常有用的命令

基本使用可以参考菜鸟教程

  • docker rename my-container-xxx new-container-yyy 重命名一个已经存在的docker
  • docker stop $(docker ps -a -q) 停止所有container
  • docker container prune 或者 docker rm $(docker ps -a -q) 清除所有的container
  • docker inspect xxx_container 查看容器的一些基本信息

3) docker volume

参考深入理解Docker Volume(一) , 深入理解Docker Volume(二)

docker volume是个比较复杂的概念,用来实现docker容器和host之间以及容器间的文件共享通信。

首先明确几个概念:

  • container只要你不显式rm是长期存在的
  • volume不是为了持久化
  • volume是为了容器及容器产生的数据分离

docker的文件系统是由多个文件系统叠加而成的
启动一个容器时, 在只读层上添加一个读写层,故只要容器存在(不论容器start或stop),在容器内所做的修改在再次进入容器的时候都能看到。然而当容器没rm的时候,你所做的修改都会丢失。这个时候我们可以通过自建volume来挂载一个host的目录到docker容器中。
挂载后的volume就像虚拟机中的共享文件夹一样。需要注意的是,在该volume中新建的文件的权限和docker中的一致,如果你用默认登录docker的话,看到的是root账户,新建的文件也都是root账户下的(即使在host机器中看来)

3.1) 初始化volume

查看挂载的详细情况可以通过docker inspect my_container来查看,目前是其中的mounts项

常见的两种方法有:

  • 运行时通过-v参数指定新建
    • 下面的命令将host机器中的/myhostpath/source目录(如果不存在会新建)挂载到docker容器中的 /mydockerpath/dest目录, 注意host的路径请用绝对路径,否则会定位到docker的系统目录,如/var/lib/docker/volumes

      docker run -v /myhostpath/source:/mydockerpath/dest -ti image /bin/bash
    • 下面的命令讲host中的某个目录(具体可以通过docker instpect查看)挂载到docker容器的/mydockerpath/dest目录

      docker run -v /mydockerpath/dest -ti image /bin/bash
  • Dockerfile中通过VOLUME命令来指定
    • Dockerfile文件中写

      FROM debian:wheezy
      VOLUME /data
  • 运行时–volumes-from 来继承别的容器的volume
    • 下面的命令创建一个image的容器,该容器继承了container1的volume定义,包括路径名

      docker run --volumes-from container1 -ti image /bin/bash

3.2) 删除volume

这个功能可能会更加重要,如果你已经使用docker rm来删除你的容器,那可能有很多的孤立的Volume仍在占用着空间。

Volume只有在下列情况下才能被删除:

该容器是用docker rm -v命令来删除的(-v是必不可少的)。
docker run中使用了--rm参数

即使用以上两种命令,也只能删除没有容器连接的Volume。连接到用户指定主机目录的Volume永远不会被docker删除。及通过-v显式指定的host端目录是不会别删除的

除非你已经很小心的,总是像这样来运行容器,否则你将会在/var/lib/docker/vfs/dir目录下得到一些僵尸文件和目录,并且还不容易说出它们到底代表什么。

4) Dockerfile

4.1) Dockerfile简介:

参考官方简介

Dockerfile是用来build自己的image是用的脚本文件,文件中有多个命令,docker服务先扫描一遍Dockerfile文件,无错的话依次执行其中的命令。注意命令是独立执行的,没有上下文,每次都像是独立执行,只commit结果,故你执行RUN cd /tmp对别的命令并没有任何影响。由于独立执行,故每次的执行结果可以做缓存以加速build过程。每个命令的执行结果被打patch到基础image(即你FROM的那个镜像)

5) 从container中调用host的x服务

如果你用docker来进行算法类学习,常有需要用x服务进行绘图统计, 这个时候就需要我们的容器调用host端的x服务。
参考ros的说明,其中介绍了常见的几种方法,下面介绍个人觉得最有用的方

docker run -it \
    --name YOURNAME \
    --user $(id -u) \
    --env="DISPLAY" \
    --workdir="/home/$USER" \
    --volume="/home/$USER:/home/$USER" \
    #--volume="/etc/group:/etc/group:ro" \ 这个可能会影响到一些软件的安装
    --volume="/etc/passwd:/etc/passwd:ro" \
    --volume="/etc/shadow:/etc/shadow:ro" \
    --volume="/etc/sudoers.d:/etc/sudoers.d:ro" \
    --volume="/etc/sudoers:/etc/sudoers:ro" \
    --volume="/tmp/.X11-unix:/tmp/.X11-unix:rw" \
    --privileged \
    --rm \
    ubuntu:16.04  bash

# 注意上面的--user $(id -u), 在老版本的docker中 可以使用 --user $USER, 但新版本的docker貌似讲--user操作排在了--volume的后面,但是用uid没有这个风险

上面启动脚本中做了以下的几点:

  • 将系统的账户信息挂入容器,同时以当前用户登陆,挂载了用户目录,对于修改目录下的文件,在host中能看到同账户的生成的文件
  • 共享/tmp/.X11-unix目录下的socket文件,用来调用x服务。同时由于账户信息没有变,所以不需要xhost授权
  • privileged参数用来使得container能够访问host的所有device(比如常见的摄像头)
### 回答1: 要下载Docker笔记,首先需要了解Docker是什么以及其使用场景。 Docker是一种开源的容器化平台,可以帮助用户打包、部署和运行应用程序。通过使用容器化技术,用户无需担心运行环境的差异,可以将应用程序和其依赖项打包到一个可移植的容器中,随时在不同的环境中运行。 要下载Docker笔记,可以按照以下几个步骤进行操作: 1. 首先,需要在计算机上安装Docker。可以从Docker官方网站(https://www.docker.com/)上下载适合自己操作系统的Docker安装包,并按照安装指南进行安装。 2. 安装完成后,需要启动Docker服务。根据操作系统的不同,可以在启动菜单或终端中找到Docker应用程序,并点击打开。在Docker控制台中,可以查看、管理容器以及进行其他操作。 3. 接下来,需要搜索并下载Docker笔记的镜像。可以使用Docker Hub(https://hub.docker.com/)这个官方的镜像仓库,搜索关键词以找到合适的笔记镜像。在搜索结果中,会显示镜像的名称、描述、标签等信息,选择一个合适的镜像。 4. 找到想要下载的笔记镜像后,可以使用Docker命令行工具或Docker控制台中的图形界面来下载镜像。通过输入命令`docker pull 镜像名称:标签`,即可下载对应的笔记镜像到本地。 5. 下载完成后,可以使用`docker images`命令在本地查看已下载的镜像列表。根据下载的笔记镜像的名称和标签,可以使用`docker run`命令来创建并启动一个容器,从而运行笔记。 通过以上步骤,就可以成功下载Docker笔记并在本地运行。希望这些信息对您有帮助! ### 回答2: 要下载Docker笔记,首先需要知道从哪里获取这些笔记Docker有一个官方文档网站,其中包含了大量关于Docker的技术文档、教程和示例以及各种使用场景的说明。用户可以访问Docker官方网站,在文档部分进行浏览和搜索,找到所需的笔记。 在Docker官方文档网站上,用户可以按照主题、标签或关键字进行检索,以找到相关的笔记。网站还提供了各种文件格式的下载选项,包括PDF、EPUB和HTML版本,用户可以根据自己的使用习惯选择适合的格式进行下载。 此外,还有一些第三方资源库和网站提供了Docker相关的笔记下载。例如GitHub上有很多开源项目,其中包含了Docker的使用笔记和示例代码。用户可以通过在GitHub上搜索关键字"Docker笔记"或"Docker notes"来找到相关的项目,然后根据项目的说明进行下载。 总之,下载Docker笔记可以通过Docker官方文档网站或第三方资源库进行。用户可以根据自己的需求和偏好选择下载适合自己的格式和来源。 ### 回答3: 要下载 Docker 笔记,首先需要确保已经安装了 Docker 客户端工具。然后按照以下步骤进行下载: 1. 打开终端或命令提示符,输入以下命令来下载 Docker 笔记Docker 镜像: ``` docker pull [镜像名称] ``` 这里的 `[镜像名称]` 是 Docker Hub 上提供的 Docker 镜像名称,可以根据需要搜索并选择合适的镜像。 2. 等待镜像下载完成后,使用以下命令来创建和运行一个 Docker 容器,并将笔记下载到本地: ``` docker run -it --name [容器名称] [镜像名称] [下载命令] ``` 这里的 `[容器名称]` 是用于标识容器的名称,`[下载命令]` 是具体的下载命令,可以根据下载方式的不同进行相应的设置。 3. 等待下载完成后,可以使用以下命令来停止并删除容器: ``` docker stop [容器名称] docker rm [容器名称] ``` 这里的 `[容器名称]` 是之前创建容器时指定的名称。 通过以上步骤,你就可以成功下载 Docker 笔记到本地了。记得根据实际需求选择适合的 Docker 镜像和下载命令,同时也可以通过 Docker Hub 上的文档和社区提供的资源,了解更多有关 Docker 的使用方法和技巧。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值