镜像(image)与容器(container)
image
-
Docker image是一个只读的文件
-
这个文件包含文件系统,源码,库文件,依赖,以及一些运行所需要的文件
-
可以理解为一个模板
-
docker image是一个分层的概念
-
docker image可以从镜像仓库(docker hub等)中拉取
Container
-
docker 容器是一个运行的镜像
-
实质上是复制image并在image上层加了read-write(可读可写的容器层)
-
基于同一个image可以创建多个container
一些容器与镜像操作的命令命令
操作 | 指令 |
---|---|
查看正在运行的容器 | docker ps |
查看所有的容器(包括已停止的) | docker ps -a |
停止/重启/删除容器 | docker stop/restart/rm DockerID |
查看镜像 | docker images |
删除镜像 | docker rmi -f imagesID |
运行一个镜像 | docker run 镜像名称 |
拉取镜像 | docker pull 镜像名称 (docker pull ubuntu) |
docker创建容器
docker创建一个容器前需要拥有一个docker image
拉取镜像
docker pull 镜像名
镜像名后面也可以加版本号来指定版本
查看拉取到的镜像
docker images
启动容器
docker run --name nginx -p 8001:80 -d nginx
-
–name 为创建的容器起一个名称
-
-p 表示端口映射 映射规则->主机端口:docker端口
-
-d 表示在后台运行docker
-
末尾的nginx表示使用的镜像
此时访问http://127.0.0.1:8001/就可以看到nginx的界面
docker run的一些参数
指令 | 操作 |
---|---|
-d | 后台运行 |
-p | 端口映射 |
–name | 为容器指定一个名称 |
-m | 容器能使用的最大内存 |
docker 批量处理
docker ps -aq #查看所有容器的id
docker rm -f $(docker ps -aq) #删除所有的容器,rm执行参数也可以替换为stop,restart
docker images aq #查看所有镜像的id
docker rmi -f $(docker images aq) #删除所有的容器
docker 日志监控
docker logs DockerID #查看一个docker容器的日志记录
docker attach DockerID #实时查看docker容器日志
docker交互模式
docker exec -it DockerId 操作命令
docker exec -it DockerId passwd #修改docker 密码
使用sh或者bash操作命令,相当于连接到了docker的shell,进入到了docker的内部,推荐bash,bash为sh的超集
docker exec -it DockerId bash
exit #退出交互
docker 容器的导入与导出
导出
docker image save 镜像名:版本号 -o 名称.tar
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wLn6Enl7-1689510660212)(./img/save.png)]
导入
docker image load -i 镜像文件
docker镜像提交到仓库
登入docker hub
docker login #输入账号和密码
修改本地镜像标签名
docker tag 本地镜像名 账户名/镜像名:版本名
#我个人比较喜欢的方式是,不符合规范,但是挺好用的
docker tag 本地镜像名 账户名/仓库名:镜像名
上传到镜像仓库
docker push 镜像名
commit从容器创建一个新的镜像
一个镜像构建容器之后,并且在该容器里面进行了修改操作,如果删除了该容器,再次从镜像构建容器,修改的操作,将会还原并不会保留。如何修改容器之后,想将修改的操作保存到镜像中去,可以使用commit命令
docker commit [选项] 容器id [REPOSITORY[:TAG]]
选项
- **-a 😗*提交的镜像作者;
- **-c 😗*使用Dockerfile指令来创建镜像;
- **-m 😗*提交时的说明文字;
- **-p 😗*在commit时,将容器暂停。