1. 帮助命令
docker version # 显示docker的版本
docker info # 显示docker的系统信息,包括镜像容器数量
docker 命令 --help #帮助
2. 镜像命令
docker images # 查看所有本地主机上的镜像
docker search # 搜索镜像
docker pull # 下载镜像
docker rmi # 删除镜像
# 查看所有镜像的id
docker images -aq
# 搜索镜像
docker search [镜像名]
# 下载镜像,如果不写tag 默认latest最新版
docker pull 镜像名[:tag]
# 指定版本下载
docker pull mysql:5.7
# 删除所有镜像 -f 强制删除
docker rmi -f $(docker images -aq)
docker rmi 镜像id # 删除一个镜像
3. 容器命令
说明:我们有了镜像才能创建容器,下载一个centos镜像来测试学习
docker pull centos # 下载centos 镜像, 后面不知道tag 默认为
# 常用命令
docker run -itd 镜像名[:tag] /bin/bash # 后台启动镜像
docker run -itd -p 宿主机端口:容器内部端口 镜像名 /bin/bash # 端口映射
docker run -itd -v 宿主机文件:容器文件 镜像名 /bin/bash # 文件映射
docker exec -it 容器id /bin/bash # 进入容器
exit #退出容器
Ctrl + P + Q # 挂起当前容器
docker ps [-a] # 列出正在运行的容器 [-a all 全部]
docker container list # 列出正在运行的容器
docker rm 容器id # 删除指定容器
docker start 容器id # 启动容器
docker restart 容器id # 重启容器
docker stop 容器id # 停止当前正在运行的容器
docker kill 容器id # 强制停止当前容器
1. 新建容器并启动
docker run [可选参数] imagesid
# 参数说明
--name="Name" # 容器名字
-d # 后台方式运行
-it # 使用交互式运行,进入容器查看内容
-p # 指定容器的端口 -p 宿主机端口:容器端口
-p ip:主机端口:容器端口
-p 主机端口:容器端口 (常用)
-p 容器端口
容器端口
-P(大写) # 随机指定端口
# 测试, 启动并进入容器
docker run -it centos /bin/bash
# 端口映射,和文件持久化
docker run -itd -p 宿主机端口:容器端口 -v 本地路径:容器路径 镜像名 /bin/bash
# docker 运行一个容器 将容器端口映射到宿主机, 将容器文件持久化挂载到本地。
# 从容器中退回主机
exit Ctrl+P+Q # 挂起容器
2. 列出所有的运行的容器
# docker ps # 列出当前正在运行的容器
-a # 列出当前正在运行的容器
-q # 列出容器的编号
-n=? # 显示最近创建的容器
docker ps -a # 列出所有容器
docker ps -aq # 列出当前所有容器的编号
3. 退出容器
exit # 直接退出容器停止并退出
Ctrl + P + Q # 容器不停止退出
4. 删除容器
docker rm 容器id # 删除指定容器
docker rm -f $(docker ps -aq) # 删除所有容器
docker ps -a -q | xargs docker rm # 删除所有容器
5. 启动和停止容器操作
docker start 容器id # 启动容器
docker restart 容器id # 重启容器
docker stop 容器id # 停止正在运行的容器
docker kill 容器id # 停止杀掉当前正在运行的容器
4. 进阶命令
6. 后台启动命令
# 命令docker run -d 镜像名
docker run -d centos
# 常见的坑,docker 容器使用后台运行,就必须要一个前台进程,docker发现没有应用,就会自动停止
# nginx, 容器启动后,发现自己没有提供服务,就会立刻停止,就没有程序了
docker run -itd centos /bin/bash
# 后台执行
7. 查看日志
docker logs -f -t --tail 10 容器
# 动态查看 最后10条日志 -f 动态 -t 时间戳
8. 查看容器中进程信息ps
docker top 容器id
9. 查看镜像的元数据
docker inspect 容器id
10. 进入当前正在运行的容器
# 我们通常容器都是使用后台方式运行的,偶尔需要进入后台修改一些配置
# exec (常用)
docker exec -it 容器id /bin/bash # (推荐) 进入容器后开启一个新的终端
docker attach 容器id # 进入容器正在执行的终端
11. 从容器内拷贝文件到主机上
docker cp 容器id:容器内文件路径 目标路径
12. 提交当前正在运行的容器为镜像
docker commit -m="描述信息" -a="s作者" 容器id 目标镜像:[tag]
docker commit -m "描述信息" 容器id 目标镜像:[tag]
13. 镜像导入导出
# 1. 镜像导出到本地
docker save -o 本地文件路径 目标镜像:版本 # -o output 将文件输出到本地
docker save > 本地文件路径 目标镜像:版本
# 2. 本地镜像导入到docker
docker load -i 本地tar镜像文件 # -i input 将文件输入到docker里面
docker load < 本地tar镜像文件
# docker export -o 容器id
# docker import 本地tar镜像文件 镜像名:tag # 导入tar镜像文件成镜像,
docker save和docker export的区别:
docker save保存的是镜像(image),docker export保存的是容器(container);
docker load用来载入镜像包,docker import用来载入容器包,但两者都会恢复为镜像;
docker load不能对载入的镜像重命名,而docker import可以为镜像指定新名称。
14. 镜像重命名
docker tag 原来的镜像名:版本 新名字:版本
#等同 docker tag 镜像ID 新名字:版本
docker rmi 原来的镜像名:版本 # 删除原来的镜像
15. 通过文件构建镜像
# 执行dockerfile 文件构建镜像
# docker build -f 文件路径 -t 镜像名:版本号 . # 最后面有个点
docker build -f mydockerfile -t mycentos:8 .
# 文件名为dockerfile时可以不加-f 因为dockerfile命名使用默认命名 因此不用使用-f 指定文件
docker build -t mytomcat:1 .
16. 创建网络
bridge # 桥接网络默认
host # 和所主机共享网络
none # 不配置网络,一般不用
docker run -d -P --name tomcat01 tomcat
等价于 => docker run -d -P --name tomcat01 --net bridge tomcat
# 创建网络
docker network create -d bridge --subnet 172.19.0.0/16 --gateway 172.19.0.1 mynet
# 运行容器使用此网络
docker run -d -P --name tomcat01 --net mynet tomcat
# 把 (容器ID或容器名) 容器加入 mynet 网络中
docker network connect mynet 容器ID或容器名
# 查看网络
docker network ls
docker network inspect mynet
5. 命令小结
# docker 命令介绍
docker --help
管理命令:
container 管理容器
image 管理镜像
network 管理网络
命令:
attach 进入到一个正在运行的容器
build 根据 Dockerfile 构建一个镜像
commit 根据容器的更改创建一个新的镜像
cp 在本地文件系统与容器中复制 文件/文件夹
create 创建一个新容器
diff 查看 docker 容器变化
events 从docker 服务获取容器实时事件
exec 在已存在的容器上运行命令
export 导出容器的内容流作为一个tar 归档文件【对应import】
history 展示一个镜像形成的历史
images 列出镜像
import 从 tar包中的内容创建一个新的文件系统镜像【对应export】
info 显示系统相关信息
inspect 查看容器详细信息
kill 杀死一个或多个正在运行的容器
load 从一个tar包中加载一个镜像【对应 save】
login 注册或者登录一个docker源服务器
logout 从当前docker registry 退出
logs 输出当前容器日志信息
pause 暂停一个或多个容器的所有进程
ps 列出所有容器
pull 拉取一个镜像或仓库到 registry
push 推送一个镜像或仓库到 registry
rename 重命名一个容器
restart 重新启动一个或多个容器
rm 删除一个或多个容器
rmi 删除一个或多个镜像
run 在一个新的容器中执行一条命令
search 在 Docker Hub 中搜索镜像
start 启动一个或多个已经停止运行的容器
stats 显示一个容器的实时资源占用
stop 停止一个或多个正在运行的容器
tag 为镜像创建一个新的标签
top 显示一个容器内的所有进程
unpause 恢复一个或多个容器内所有被暂停的进程
update 取消暂停容器
version 查看docker 版本
wait 截取容器停止时的退出状态