获取镜像的三种方式
- 从dockerhub获取镜像
- 本地镜像导出、导入
- 私有docker仓库
# 先搜索一下,查看镜像文件是否存在
docker search 镜像名:tag tag就是具体的标签版本
docker search centos
# 查看本地的镜像文件有哪些
docker images
docker image ls
# 下载docker镜像
docker pull centos # 默认是 centos:latest(最新版本)
docker pull centos:7.8.2003
# 查看docker镜像的存储路径
docker info | grep Root
Docker Root Dir: /var/lib/docker
# 镜像文件的存储目录
ll /var/lib/docker/image/overlay2/imagedb/content/sha256/
# 该目录下文件的作用是记录镜像和容器的配置关系
# 使用镜像生成不同的容器
# --it 开启一个交互式的终端 --rm 容器退出时删除该容器
[root@qzcsbj-harbor ~]# docker run -it --rm centos bash
[root@f0a706083ed1 /]# cat /etc/redhat-release
CentOS Linux release 8.4.2105
[root@f0a706083ed1 /]# exit
exit
[root@qzcsbj-harbor ~]# docker run -it --rm centos:7.8.2003 bash
[root@812c562a6bfc /]# cat /etc/redhat-release
CentOS Linux release 7.8.2003 (Core)
[root@812c562a6bfc /]# exit
exit
查看镜像
# 查看本地的全部镜像
docker images
# 查看具体的镜像
docker images centos
docker images nginx
# 指定具体的tag
docker images centos:7.8.2003
# 只列出镜像的id
# -q 只列出id
docker images -q
# 格式化显示镜像
# --format "{{}}"这是docker的模板语言
[root@docker01 ~]# docker images --format "{{.ID}}--{{.Repository}}"
4cdc5dd7eaad--nginx
08502081bff6--redis
9873176a8ff5--ubuntu
300e315adb2f--centos
afb6fca791e0--centos
# 以表格形式显示,美化
docker images --format "table {{.ID}}\t{{.Repository}}\t{{.Tag}}"
# 查看镜像文件是否存在
docker search 镜像名:tag tag就是具体的标签版本
docker search centos
删除镜像
# 下载镜像
docker pull hello-world
# 查看镜像id
docker images hello-world
# 根据镜像的id,名字,摘要等
# 被删除的镜像,不得有依赖的容器记录
docker rmi hello-world
# 显示所有的容器,包括未运行的
docker ps -a
# 删除容器记录
docker rm e332fe985eac
镜像管理
# 批量删除镜像的用法,rm
# 批量删除镜像,慎用
docker rmi `docker images -qa`
# 批量删除容器
docker rm `docker ps -qa`
# 导出镜像
# 比如默认运行的centos镜像,不提供vim功能,运行该容器后,在容器内安装vim
# 然后提交该镜像,再导出镜像该镜像为压缩文件,可以发给其他人用
# 运行镜像,生成容器并进入容器
docker run -it centos:7.8.2003 bash
# 导出镜像
docker image save centos:7.8.2003 > /opt/centos7.8.2003.tgz
ls -lh /opt
# 导入镜像
docker rmi `docker ps -aq`
docker rmi centos:7.8.2003
docker image load -i /opt/centos7.8.2003.tgz
# 查看镜像详细信息
# 查看docker服务的信息
docker info
# 查看镜像详细的信息
docker image inspect 镜像id
docker image inspect afb6fca791e0
Docker容器管理
docker run 等于创建+启动
docker run 镜像名,如果镜像不存在本地,则会在线下载该镜像
注意:容器内进程必须在前台运行,否则容器就会直接退出。
容器内,必须有一个进程在前台运行。
自己部署一个容器运行,命令不得再后台运行,前台运行即可。
我们运行nginx基础镜像,没有运行任何程序,因此容器直接挂掉
1.运行一个挂掉的容器
# 该写法是错误写法,产生了容器记录,但是容器内并没有程序在跑,因此挂了
docker run centos:7.8.2003
2. 运行容器,且进入容器内
docker run -it centos:7.8.2003 bash
3. 开启一个容器,让它帮你运行某个程序
docker run centos:7.8.2003 ping -c1 baidu.com
4. 运行一个活着的容器,docker ps可以看到的容器
# -d参数,让容器在后台跑着(针对宿主机而言)
docker run -d centos:7.8.2003 ping baidu.com
image.png
5. 丰富docker运行的参数
-d 后台运行
--rm 容器挂掉后自动被删除,使用docker stop 95d无法看到容器记录
--name 给容器取名
docker run -d --rm --name pythonav centos:7.8.2003 ping pythonav.cn
6. 查看容器日志
-f 实时监控日志
docker logs -f [容器id]
docker logs f0bca235a3ca | tail -3
7. 进入正在运行的容器空间内
docker exec -it f0bca235a3ca bash
8. 查看容器的详细信息
docker container inspect f0bca235a3ca
9. 容器的端口映射
# 后台运行nginx容器,且改名为nana,且端口映射宿主机的85端口,访问到容器内的80端口
docker run -d --name nana -p 85:80 nginx
# 查看容器
docker ps
# 查看容器的端口转发情况
docker port 3bcaf23f3f49
# 随机端口映射 -P 随机访问一个宿主机的空闲端口,映射到容器内打开的端口
docker run -d --name nana_nginx_88 -P nginx
docker ps -a
10. 容器的提交
# 运行基础的centos:7.8.2003,在容器内安装vim,然后提交新的镜像
# 新的镜像,再运行出的容器,默认就携带vim了
[root@qzcsbj-harbor ~]# docker run -it centos:7.8.2003 bash
[root@39da3ad323b7 /]# yum -y install vim
[root@39da3ad323b7 /]# exit
exit
[root@qzcsbj-harbor ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
39da3ad323b7 centos:7.8.2003 "bash" About a minute ago Exited (0) 27 seconds ago infallible_kepler
[root@qzcsbj-harbor ~]# docker commit 39da3ad323b7 nana/centos-vim-7.8.2003
sha256:aa12ab31b0d8867d87c98a7f9c39d7aa447bdae4028d4fddfef91fdb40aa1d27
[root@qzcsbj-harbor ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nana/centos-vim-7.8.2003 latest aa12ab31b0d8 20 seconds ago 382MB
nginx latest 4cdc5dd7eaad 43 hours ago 133MB
centos 7.8.2003 afb6fca791e0 14 months ago 203MB
[root@qzcsbj-harbor ~]# docker run -it aa1
[root@b862a92c93dd /]# vim a.txt
[root@b862a92c93dd /]# cat a.txt
Docker常用命令汇总
镜像常用命令
1、搜索镜像
docker search [镜像名称]
2、下载镜像
docker pull [镜像仓库URL]/[镜仓库命名空间]/[镜像仓库名称]:[版本号]
3、查看镜像列表
docker image ls
docker images
4、删除镜像
docker rmi [镜像名称|ID]
参数:
-f : 强制删除
5、清理镜像
docker image prune
参数:
-a : 清理所有未被使用的镜像
-f : 强制删除
6、镜像构建历史
docker history [镜像名称|ID]
7、登录镜像仓库
docker login [仓库URL] --username '用户名称' --password '密码'
8、上传镜像
docker push [镜像仓库URL]/[镜仓库命名空间]/[镜像仓库名称]:[版本号]
9、保存镜像
1、将容器直接保存为镜像
docker commit [容器名称|ID] [自定义镜像名称]
2、将容器打包成镜像
docker export
docker import
3、将镜像打包成镜像压缩包
docker save
docker load
10、镜像标签
docker tag [源镜像ID|名称] [新镜像名称]
11、镜像详细信息
docker inspect [镜像的ID|名称]
容器常用命令
docker create : 创建容器,但是未启动
docker rm : 删除容器
docker start : 启动容器
docker inspect : 查看容器的详细信息
docker cp : 复制
docker ps : 查看当前系统中正在运行的容器
docker load : 导入容器
docker logs : 查看容器日志
docker exec : 在宿主主机上执行一个容器内部的命令
docker run : 创建并启动一个容器
参数:
-d : 以守护进程方式运行
-p : 固定端口映射
-P : 随机端口映射
-i : 打开标准输出
-h : 设置容器内主机名
-t : 创建终端
-e : 设置容器内部的环境变量
-v : 目录映射
-m : 设置内存限制(默认:-1 不做任何限制)
--name : 设置容器名称
--rm : 当容器生命周期结束时,立即删除容器
--link : 连接一个容器
docker stop : 停止容器
docker restart : 重启容器
docker rename : 重命名容器
网友评论