image相关

# 列出本机的所有 image 文件。
docker image ls
# 删除 image 文件
docker image rmi.. [imageName]
# 下拉image文件
docker pull [imageName]
# 搜索镜像
docker search [imageName]

容器相关

# 列出所有容器
docker ps -a
# 列出正在运行的容器
docker ps
# 列出最后运行的容器
docker ps -l
# 创建容器并进入 -命令行格式
docker run [imageName] --name [Name] -p 80:80 [容器80 映射宿主机的端口] -P [随机映射]
# 守护方式创建容器 -后台运行
docker run -di [后台运行] --name 
 # 进入后台的docker 
docker exec -it [containerName/containerID] /bin/bash [shpath]
# 停止运行
docker stop [containerID/containerName]
# 运行
docker stater [containerID/containerName]
# docker 详细信息
docker inspect [containerName]
# 删除容器 必须先停止
docker rm [containerName]
# docker 更新自动启动
docker update --restart=always [containerID]

文件拷贝

# 文件拷贝至容器
docker cp 拷贝的文件活目录 容器名:容器目录
# 文件拷贝至宿主机
docker cp 容器名称:容器目录 存放的文件目录

目录挂载

# 创建容器时 加-v参数
-v [宿主机]:[容器目录] #定目录挂载
# 匿名挂载 /var/lib/docker/volumes/ 在这个目录下
-v [容器目录] 
# 具名挂载
-v [具名名称]:[文件目录]
# 限制挂载读写
docker run -it [后台运行] -v [宿主机目录]:[容器目录]:[ro/rw][只读:读写] 镜像名字
# 继承挂载
--volumes-from 继承的容器名称 
# 查看继承关系 查看挂载文件夹的信息和对应容器的目录
/var/lib/docker/volumes/ 在这个目录下使用docker volumes inspect [目标文件夹]
# 查看容器的ip地址
docker inspect [containerName]

创建docker

1.首先先下拉目标镜像
2.生成容器并运行
3.上传所需要的安装包
4.将宿主机的安装包拷贝到容器中
5.进入容器命令行
6.安装所需要的安装软件
7.打包镜像
docker commit -a="作者" -m="备注" [containerName] [imageName:tag]

Dockerfile 常用指令

FROM <image>:<tag>
# 构建的新镜像来自哪个基础镜像,不已任何镜像为基础那么写法为FROM scratch 空镜像
MAINTAINER <name> # 镜像作者的联系方式,过时了
LABEL <key>=<value> # 镜像指定的标签
RUN <command> # 构建镜像运行时的shell命令
ADD <src>...<dest> # 拷贝文件或目录到镜像中,本地是压缩文件还可以解压,url可以直接下载
ADD Python3.7.tar /usr/local/Python37
COPY <src>...<dest> # 同上,但不支持自动解压
EXPOSE <port> [<port>/<portocol>] # 容器运行时的监听端口给外部,可以指定TCP还是UDP默认TCP.如果想使用容器与宿主机的端口有映射关系,在启动容器时加上-P参数
ENV <key> <value> (单个) ENV <key>=<value> (多个) # 设置容器内的环境变量
CMD	# 启动容器时执行的shell命令,在dockerfile中只能有一个命令,如果设置多条则只有最后一条会被执行
ENTRYPOINT # 同上 不会像CMD被覆盖
WORKDIR # 设置 CMD RUN ADD 命令的工作目录

docker build -f [DockerfilePath] -t [name:tag] [拷贝资源文件目录]

境像的备份、恢复、迁移

# 镜像备份
docker save [-o 写入文件目录] imagesName:tag
# 恢复
docker load [-i tag包目录]

Docker的网络模式

# 列出所有容器的网络情况
docker network ls
# 创建容器时指定网络模式
--network -net
bridge 桥接 默认
host 使用宿主机 
none 不使用网络设置
container 与其他容器共享