学习Docker
@(存笔记)
[TOC]
For Win
官方建议使用 Docker Machines 的实现。
常用命令
docker images # 列出所有镜像
docker ps # 列出运行的容器
docker ps -a # 列出所有容器
docker run --name test ubuntu # 将名为 ubuntu 的镜像启动生成容器,run命令的参数要在镜像名 ubuntu 之前
docker run -d ubuntu # 将名为 ubuntu 的镜像启动生成容器,并将改进程挂到后台运行
docker rm $(docker ps -q -a) # 一次性删除所有的已停止的容器,
docker rmi $(docker images -q) # 一次性删除所有的镜像
docker commit <CONTAINER ID> newimage # 将一个容器提交生成一个新的容器
docker images |grep none |awk '{print $3}'|xargs docker rmi # 删除所有None镜像
docker rmi $(docker images -q -f dangling=true) # 删除虚悬镜像<none>
Dockerfile语法
构建镜像时,是Docker的客户端(本机环境)给服务器端(Docker引擎,可以是在本机——通常开发时是在本机,也可以是远程主机)要指定一个上下文目录,可以理解为指定了一个本地的目录供服务器端操作。服务器端仅能操作该目录及其子目录。这就是为什么
COPY ../path/code /var/code
和COPY /srv/path/code /srv/code
会提示其路径无效。COPY ./code /var/code
意为指定了上下文目录下的/code
目录夹映射到镜像的/var/code
目录,而不能通过COPY ../code /var/code
指定上级目录。因为上级目录已经不属于上下文目录的控制范围。
COPY
FROM python:3.5 # 使用python:3.5作为基础镜像
COPY ./code /var/code # 将上级目录映射到镜像内路径
WORKDIR /var # 之前默认的工作目录是 /,在这命令之后是 /var
ENV ["python", "./code/foo.py"] # 容器启动后默认执行的命令
构建镜像
基本的构建命令
docker build -t account/easyctp:tag .
当Dockerfile就在当前目录时,直接指定Dockerfile所在路径.
。
在调试时,如果构建镜像有问题,尝试使用--no-cache
无缓存模式调试。
交互模式
注意参数的顺序
docker run --rm -it ubuntu /bin/bash
采用交互模式-it
进入ubuntu
之后,启动/bin/bash
作为交互工具。
启动参数
映射卷时,通常需要指定当前目录。不能直接使用.
,而是要使用$PWD
。并且注意要使用大写
docker run -v $PWD:/var/code ubuntu