镜像是Docker的三大组件之一
1.获取镜像
Docker hub 上由大量的镜像
获取镜像命令:
docker pull [选项] [docker registry 地址[:端口号]/] 仓库名[:标签]
选项可以通过docker pull --help查看,
Docker 仓库地址:地址格式是<域名/IP>[:端口号]。默认地址 是Docker hub
仓库名:<用户名>/<软件名> ,如果不给用户名,默认位library,也就是官方镜像
运行:
docker run -it image_name bash
进入镜像容器,的shell交互界面。通过exit退出容器。
2.列出镜像
docker image ls
docker image ls -a
docker images
docker image ls image_name 列出部分镜像,
有 一些特殊镜像,仓库名和标签都是<none>, 查看:docker image ls -f dangling=true
docker image ls 支持强大的过滤参数--filter简写为-f
以特定格式显示镜像 docker image ls --format "{{.ID}}:{{.Repository}}"
删除虚悬镜像: docker image prune
3.删除镜像
docker image rm [选项] <镜像名1> [<镜像名2>] 可以通过镜像名或者ID删除
docker image ls --digests 也可以通过镜像摘要删除
有些镜像在运行需要停止后才能运行,有些镜像依赖的容器在运行,删除引起冲突,也不成功。
查看依赖的镜像docker ps -a
查找镜像依赖的容器,docker rm 删除,在删除原来冲突的镜像。 docker rmi 最终清除命令。因为docker rm删除可能是把标签和名字改为none,并没有在物理上清除。
4. 启动web服务器
docker run --name webserver -d -p 80:80 nginx
webserver指定服务名字
-p指定容器和服务器端口映射
nginx镜像
进入容器
docker exec -it webserver bash
5.commit制作镜像
docker commit [选项] <容器ID或容器名> [<仓库名>[:<标签>]]
docker commit --author "tao wang" --message "modified webpage" webserver nginx:v2
用docker image ls中查看新定制的镜像
慎用
6. 使用Dockerfile定制镜像
编写Dockerfile
FROM nginx
RUN echo '<h1> Hello,Docker!</h1> > /usr/share/nginx/html/index.heml
在Dockerfile目录执行
docker build -t nginx:v2
-t nginx:v2 构建成功后,最后的镜像名字
7.Dockerfile指令
from 指定的镜像
run 运行的指令
copy 复制文件,从源路径到镜像内目标路径
add 和copy性质基本一致,源路径可以是URL,Docker引擎会去下载这个链接文件放到目标路径
CMD ["可执行文件","参数1","参数2"]
8.docker compose
github一些file 参考