Mainly summarized from docker for beginners. So very simple
Docker概念
- 镜像(Image):
相当于蓝图,是构建的容器的基础。docker pull下载的就是镜像。 - 容器(Container):
实例化的镜像,docker run创建的就是容器 - Docker守护进程(Docker Daemon):
在主机上用于管理、运行和分发Docker容器的后台服务。用于客户端与操作系统交互 - Docker客户端(Docker Client):
用于与Docker Daemon交互的Docker命令行工具或其他客户端程序 - Docker Hub:
一个Docker Images的registry(一个存储了各种docker镜像的目录),可以在上面维护自己的docker镜像或从上面拉取镜像
Docker CheatSheet
镜像
- 查看镜像
docker images
#-------------------------------------------------------------------------------
# -q: 如果指定,则只显示镜像id
# -a: 如果指定,显示所有镜像
# -f: 用于筛选镜像
- 拉取镜像
docker pull l1nkm3/ubuntu_pwn:17.10
#-------------------------------------------------------------------------------
# l1nkm3: 仓库所有者
# ubuntu_pwn: 仓库名
# 17.10: 标签
- 运行镜像
docker run -it -p 8080:1234 l1nkm3/ubuntu_pwn:17.10 /bin/sh
#-------------------------------------------------------------------------------
# -it: 附加到一个交互式的终端
# -p 8080:1234: 将容器中的8080端口转发到本地的1234端口
# /bin/sh: 运行完该命令后退出
docker run --rm l1nkm3/ubuntu_pwn:17.10 /bin/sh
#-------------------------------------------------------------------------------
# --rm: docker容器退出后直接删除
docker run -d -P --name static-site prakhar1989/static-site
#-------------------------------------------------------------------------------
# -d: 运行后脱离(detach)
# -P: 将容器所有暴露出来的端口映射到随机的宿主机端口上,之后可以用docker port查看
# --name: 为容器指定名字,之后可以使用名字而不是id
docker run -v /tmp:/share ubuntu:17.10
#-------------------------------------------------------------------------------
# -v /tmp:/share 将主机的/tmp目录挂载到容器的/share目录
- 查看端口映射
docker port static-site
- 删除镜像
docker rmi 305297d7a235
容器
- 查看容器
docker ps -a
#-------------------------------------------------------------------------------
# -a: 指定后列出所有容器,否则列出正在运行的容器
docker ps -a -q -f status=exited
#-------------------------------------------------------------------------------
# -q: 只列出容器id
# -f status=exited: 状态为exited的容器。-f筛选满足条件的容器
- 启动容器
docker start -a hello-world
#-------------------------------------------------------------------------------
# -a: 指定后附加到该容器
- 停止容器
docker stop ff0a5c3750b9
#-------------------------------------------------------------------------------
# -t n: 等待n秒后停止,默认10秒
- 删除容器
docker rm 305297d7a235 ff0a5c3750b9
#-------------------------------------------------------------------------------
# 305297d7a235与ff0a5c3750b9: 容器的id,可以是唯一前缀
- 删除满足条件的容器
docker rm $(docker ps -a -q -f status=exited)
#-------------------------------------------------------------------------------
# -q: 只列出容器id
# -f status=exited: 状态为exited的容器。-f筛选满足条件的容器
docker container prune
#-------------------------------------------------------------------------------
# 与上一条指令作用相同
Docker 网络
- 查看网络
docker network ls
docker network inspect c2c695315b3a
- 创建网络
docker network create new_network
- 在网络下运行镜像容器
docker run --net new_network ubuntu:17.10
- 删除网络
docker network rm new_network
Dockerfile
# 指定基础镜像
FROM l1nkm3/ubuntu_pwn:17.10
# optional,说明维护者,最好加上联系方式
MAINTAINER L1nkM3
# 设置环境变量
ENV VERSION=0.1
# 执行指令
RUN echo "run command with RUN"
# 也可以写成
RUN ["echo", "\"run command with RUN\""]
# 暴露端口
EXPOSE 9981
# 指定接下来指令的工作路径
WORKDIR /tmp
# 指定接下来的用户
USER root
# 默认命令
CMD /bin/sh
# 入口命令,-i 参数传给这条指令
ENTRYPOINT ls
# 拷贝文件
COPY /etc/passw* /tmp