教程:http://dockone.io/article/103
1.容器
docker ps
查看正在运行的容器
docker stop 容器ID
停止容器
docker restart 容器ID
重启容器
2.镜像
DockerHub镜像中心 https://hub.docker.com/u/tianleidocker666/
docker build -t friendlyname .# 使用此目录的 Dockerfile 创建镜像
docker run -p 4000:80 friendlyname # 运行端口 4000 到 90 的“友好名称”映射
docker run -d -p 4000:80 friendlyname # 内容相同,但在分离模式下
docker ps # 查看所有正在运行的容器的列表
docker stop <hash> # 平稳地停止指定的容器
docker ps -a # 查看所有容器的列表,甚至包含未运行的容器
docker kill <hash> # 强制关闭指定的容器
docker rm <hash> # 从此机器中删除指定的容器
docker rm $(docker ps -a -q) # 从此机器中删除所有容器
docker images -a # 显示此机器上的所有镜像
docker rmi <imagename> # 从此机器中删除指定的镜像
docker rmi $(docker images -q) # 从此机器中删除所有镜像
docker login # 使用您的 Docker 凭证登录此 CLI 会话
docker tag <image> username/repository:tag # 标记 <image> 以上传到镜像库
docker push username/repository:tag # 将已标记的镜像上传到镜像库
docker run username/repository:tag
2.1
- 创建镜像
在 Dockerfile 文件夹下执行
docker image build -t 镜像名称 .
- 查看镜像列表
docker image ls
- 删除镜像
docker image rm 镜像ID
2.2
- 运行镜像
docker container run -p 机器端口:容器端口 镜像名称
2.3
- 标记镜像
docker image tag imageName username/repository:tag
例如
docker image tag friendlyhello tianleidocker666/first-docker-image:1.0.0
- 发布镜像, 在已经登录到了对应的
docker hub
前提下
docker image push username/repository:tag
例如
docker image push friendlyhello tianleidocker666/first-docker-image:1.0.0
- 拉取镜像
docker image pull busybox
eg: docker image pull riendlyhello tianleidocker666/first-docker-image:1.0.0
- 从远程镜像仓库中拉取并运行镜像
docker container run -p 机器端口:镜像端口 username/repository:tag
例如,本地仓库如果没有会从远程拉取
docker container run -p 5000:80 tianleidocker666/first-docker-image:1.0.0
3. DockerFile 编写
- FROM
FROM <image name>
- MAINTAINER:设置该镜像的作者。语法如下:
MAINTAINER <author name>
- RUN:在shell或者exec的环境下执行的命令。RUN指令会在新创建的镜像上添加新的层面,接下来提交的结果用在Dockerfile的下一条指令中。语法如下:
RUN 《command》
- ADD:复制文件指令。它有两个参数<source>和<destination>。destination是容器内的路径。source可以是URL或者是启动配置上下文中的一个文件。语法如下:
ADD 《src》 《destination》
CMD:提供了容器默认的执行命令。 Dockerfile只允许使用一次CMD指令。 使用多个CMD会抵消之前所有的指令,只有最后一个指令生效。 CMD有三种形式:
CMD ["executable","param1","param2"]
CMD ["param1","param2"]
CMD command param1 param2EXPOSE:指定容器在运行时监听的端口。语法如下:
EXPOSE <port>;
- ENTRYPOINT:配置给容器一个可执行的命令,这意味着在每次使用镜像创建容器时一个特定的应用程序可以被设置为默认程序。同时也意味着该镜像每次被调用时仅能运行指定的应用。类似于CMD,Docker只允许一个ENTRYPOINT,多个ENTRYPOINT会抵消之前所有的指令,只执行最后的ENTRYPOINT指令。语法如下:
ENTRYPOINT ["executable", "param1","param2"]
ENTRYPOINT command param1 param2
- WORKDIR:指定RUN、CMD与ENTRYPOINT命令的工作目录。语法如下:
WORKDIR /path/to/workdir
- ENV:设置环境变量。它们使用键值对,增加运行程序的灵活性。语法如下:
ENV <key> <value>
- USER:镜像正在运行时设置一个UID。语法如下:
USER <uid>
- VOLUME:授权访问从容器内到主机上的目录。语法如下:
VOLUME ["/data"]