分享

Docker 简单入门

 0璇玑玉衡0 2017-09-15

当你阅读到这篇文章的时候,我就假定你已经知道docker是什么,并且不再作过多解释了。假如你真不知道这东西,我衷心建议你先去了解一下,然后再回到这篇文章重新开始并进行实操。在这篇文章中,我会从程序员的角度为你介绍docker。

以下是docker的工作流程图:

Docker 简单入门

你的主机大概需要配备三样东西去使用docker容器:

Docker 主机: Docker容器将会在上面运行的Linux虚拟主机。.

Docker 镜像: 类似于运行在vm虚拟机上的iso镜像,但它们是高度精简的版本。所有已经存在于docker主机上的多余的包或库都会被移除掉。

Docker 容器: Docker镜像的快照,你可以启动、停止、修改它们,或者将它们作为另一个镜像来发布。

Docker主机

从docker的官方网站下载并安装以后, 就会出现一个叫做default的虚拟机可以运行。如果不存在或者丢失了,你可以使用命令docker-machine 重新创建一个default虚拟机。

你可以使用上面的命令加上参数来指定虚拟机的磁盘大小和内存大小。如果你是要做数据科学方面的工作,强烈建议你安装多个不同配置和用途的docker虚拟机。查看虚拟机列表,使用docker-machine命令。

如下是输出的示例:

NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS

default * virtualbox Running tcp://192.168.99.100:2376 v17.04.0-ce

启动虚拟机使用docker-machine start命令。 就像我的写法一样,如果虚拟机名称是default的话,你可以不写名称;如果不是的话,一定要指定要启动虚拟机的名称。

也可以使用docker-machine status 命令检查docker虚拟机的状态。 该命令会输出 'running' 或 'stopped.'。

还有一点需要注意的是要确保你的操作系统能支持所有docker虚拟机的环境变量。你可以很方便地运行 docker-machine env 命令来安装设置所有的环境变量。

SET DOCKER_TLS_VERIFY=1

SET DOCKER_HOST=tcp://192.168.99.100:2376

SET DOCKER_CERT_PATH=C:\Users\kushukla\.docker\machine\machines\default

SET DOCKER_MACHINE_NAME=default

SET COMPOSE_CONVERT_WINDOWS_PATHS=true

REM Run this command to configure your shell:

REM @FOR /f 'tokens=*' %i IN ('docker-machine env') DO @%i

只需要拷贝并粘贴到终端或命令提示符,或者按注释设置环境变量。

Docker 镜像

好,一直都在说 Docker 主机。现在来 pull(拉取) 一些镜像到主机来运行。如果你知道某个库[译者注:这里指具体的镜像库],那么你可以使用 docker pull rocker/rstudio 命令下载镜像,但如果你不知道这个镜像,可以去 Docker Hub (类似于 GitHub);这是一个 Docker 镜像的仓库,你可以从这里选择一个镜像来开始。

现在使用 run(运行) 命令来安装另一个。run 和 pull 类似,它会检查镜像在本地是否存在,如果不存在,它会从 Docker Hub 拉取下来,再使用这个镜像启动一个新的容器。

docker run -p 8888:8888 --name tensorflow -it gcr.io/tensorflow/udacity-assignments:1.0.0

上面的参数基本上用来自定义容器。它表示要映射哪个端口(port),容器的名称(name)是什么,以及指定使用交互式 TTY。因此,如果这个命令阻塞终端千万不要吃惊,因为它是交互式TTY,也就是你终端的标准输入、标准输出和标准错误正连接着运行中的容器。

你可以使用 docker images 查看下载到 PC 上的各镜像。

REPOSITORY TAG IMAGE ID CREATED SIZE

rocker/rstudio latest 7a807646f0be 11 days ago 993MB

gcr.io/tensorflow/udacity-assignments 1.0.0 4e01459e7150 2 months ago 1.03GB

上表中,Docker 镜像使用镜像 ID 或库标识出来。这样一来,如果想删除某个镜像,可以运行这个命令:docker rmi 7a807646f0be

Docker 容器

Docker 镜像本质上是静态的,而容器可以启动/停止并进行实际工作。容器由 Docker 镜像创建。你可以运行下面的命令查看PC上所有容器。

docker ps -a

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

21d0cdc5051d gcr.io/tensorflow/udacity-assignments:1.0.0 '/run_jupyter.sh' 15 minutes ago Up 18 minutes tensorflow

如果去掉 -a 参数,则只能看到正在运行的容器。在我们的示例中,只有 rstudio 容器。

你可以通过 docker stop rstudio 停止容器

然后你可以猜到,启动容器是: docker start rstudio

我喜欢像下面这样启动:

docker run -d -p 8787:8787 -v /c/Users/kushukla:/home/rstudio/kushukla --name rstudio rocker/rstudio

这是因为我希望打开 8787 端口,并将我的本地目录连接到容器的文件系统,以便我的 R 代码可以在容器中访问。现在如果你想知道接下来会发生什么事情。我可以用浏览器打开 RStudio。IP 是在环境变量中指定的,而端口是在 Docker 的 run 命令中指定的。

Docker 简单入门

到此结束,希望你对此有兴趣。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多