docker速查小手册
记录一些docker
常用指令
查看镜像
查看容器
进入正在运行的容器
1
| sudo docker exec -it ${容器id} bash
|
提交容器修改,保存为镜像
1
| sudo docker commit $(容器id) ${仓库名}:${版本号}
|
删除镜像
1
| sudo docker rmi ${镜像id(可只取前3字符)}
|
停止/启动容器
1
| sudo docker start/stop ${容器id(可3字符)}
|
删除容器(停止容器之后)
1
| sudo docker rm ${容器id(可3字符)}
|
查看容器详细信息
1
| sudo docker inspect ${容器id(可3字符)}
|
查看容器日志
1
| sudo docker logs ${容器id(可3字符)}
|
进入容器
1
| sudo docker exec -it ${容器id(可3字符)} /bin/bash
|
导出、导入
1 2
| sudo docker save -o ${导出路径/文件名及后缀(.tar.gz)} ${需要导出的镜像ID(可3字符)} sudo docker load -i ${导入路径/文件名及后缀(.tar.gz)}
|
或
1 2
| sudo docker export ${需要导出的容器id(可3字符)} > ${导出路径/文件名及后缀(.tar)} sudo docker import ${导入路径/文件名及后缀(.tar)} ${镜像名}
|
两种方式区别:
- 首先,
export
命令是从容器(container
)中导出tar
文件,而save
命令是从镜像(image
)中导出
- 文件大小不同:
export
导出的镜像文件小于save
保存的镜像
- 是否支持对镜像重命名:
import
命令可以为镜像指定新名称
load
命令不能对载入镜像重命名
- 是否支持将多个镜像打包到一个文件:
- 是否包含镜像历史:
export
导出(import
导入)是根据容器拿到的镜像,再导入时会丢失镜像所有的历史记录和元数据信息,即其仅保存容器当时的快照状态,所以无法进行回滚操作
save
保存(load
加载)的镜像,没有丢失镜像的历史,可以回滚到之前的层(layer
)
- 应用场景:
export
主要用来制作基础镜像,作为开发的基础环境
save
是将用到的镜像打包,然后拷贝到不能连接外网的服务器上并用load
容器之间互相复制文件
1
| sudo docker cp ${容器id(可3字符)}:${容器内路径} ${目标容器id(可3字符)}:${目标容器内路径}
|
基于当前容器创建镜像
1
| sudo docker commit -a "作者信息" -m "描述信息" ${容器id(可3字符)} ${镜像名:${版本号}}
|
docker run
用于根据指定的镜像创建和启动一个新的容器,
基本语法:
1
| docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
|
执行流程:
第一步,在指定镜像上创建一个可写的容器层
第二步,使用指定命令(COMMAND
)启动
简而言之,docker run
相当于执行两个API
: /containers/create、/containers/(id)/start
OPTIONS
说明:
-i
,以交互模式运行容器,通常与 -t
同时使用
-t
,启动容器后,为容器分配一个命令行,通常与 -i
同时使用
-v
,目录映射,容器目录挂载到宿主机目录,格式: <宿主机目录>:<容器目录>
-d
,守护进程,后台运行该容器
-p
,指定端口映射,格式:主机(宿主)端口:容器端口-P
,随机端口映射,容器内部端口随机映射到主机的端口
-u
,以什么用户身份创建容器--name "容器名字"
-m
, --memory bytes
,设置容器使用内存最大值
-h
, --hostname string
,指定容器的宿主机名
--dns
指定容器 dns 服务器
-e
设置环境变量
--restart
,Docker重启后,容器是否自动重启
--privileged
,容器内是否使用真正的root权限
很多指令随用随查即可,也可以直接加--help
查看帮助信息