添加镜像加速器
# 在/etc/docker/daemon.json中添加下面内容(如果daemon.json不存在,请新建)
{
"registry-mirrors": [
"https://dockerhub.azk8s.cn",
"https://reg-mirror.qiniu.com"
]
}
# 重启服务
$ sudo systemctl daemon-reload
$ sudo systemctl restart docker
镜像操作
虚悬镜像
# 显示虚悬镜像
docker image ls -f dangling=true
# 清理镜像
docker image prune
显示镜像
# 显示顶级镜像
docker images
# 显示包括中间层镜像在内的所有镜像
docker images -a
# 根据仓库名列出镜像
docker images ubuntu
# 列出特定的某个镜像,也就是说指定仓库名和标签
docker images ubuntu:18.04
# 查看mongo:3.2之后安装的镜像
docker image ls -f since=mongo:3.2
# 查看mongo:3.2之前安装的镜像
docker image ls -f before=mongo:3.2
# 通过LABEL过滤镜像
docker image ls -f label=com.example.version=0.1
# 显示所有镜像的ID
docke images -aq
# 列出镜像ID和仓库名
docker images --format "{{.ID}}: {{.Repository}}"
# 表格等距显示,并且有标题行,和默认一样
docker images --format "table {{.ID}} {{.Repository}} {{.Tag}}"
# 显示摘要
docker images --digests
删除镜像
# 根据ID删除镜像(docker image rm 不一定都会产生删除镜像的行为,有可能仅仅是取消了某个标签而已)
docker image rm ID前三个字母
# 根据镜像名删除镜像
docker image rm centos
# 根据摘要删除镜像
# 配合docker images进行镜像删除
docker image rm $(docker images -q mysql)
运行镜像
- 检查本地是否存在指定的镜像,不存在就从公有仓库下载
- 利用镜像创建并启动一个容器
- 分配一个文件系统,并在只读的镜像层外面挂载一层可读写层
- 从宿主主机配置的网桥接口中桥接一个虚拟接口到容器中去
- 从地址池配置一个 ip 地址给容器
- 执行用户指定的应用程序
- 执行完毕后容器被终止
# 运行指定镜像, 指定端口并命名
docker run --name 容器名 -d -p 本机端口:镜像内部端口 镜像名:Tag
容器操作
启动容器
# 输出一个 “Hello World”,之后终止容器。(和本地执行 echo "hello world" 没有区别)
docker run ubuntu:18.04 /bin/echo 'Hello world'
# 运行镜像并启动一个 bash 终端,允许用户进行交互。
docker run -it ubuntu:18.04 /bin/bash
# 后台运行容器
docker run -d ubuntu:18.04 /bin/sh -c "while true; do echo hel
lo world; sleep 1; done"
# 启动已停止的容器
docker start 容器id
停止容器
docker stop 容器id或名
删除已停止镜像
docker container prune
获取容器的输出信息
docker container logs 容器id或名 字
进入正在运行的容器
docker attach 容器id或名
docker exec -it 容器id或名 bash
attach 和 exec 的区别:
attach后执行exit会停止容器的运行
exec后执行exit不会停止容器的运行
比较镜像的变动
docker diff 镜像名
将容器保存成镜像
docker commit -a "Username <Email>" -m "说明信息" 容器名 镜像名:tag
导出容器
docker export 镜像id > xxx.tar
导入容器
cat ubuntu.tar | docker import - test/ubuntu:v1.0
# 以通过指定 URL 或者某个目录来导入
docker import http://example.com/exampleimage.tgz example/imagerepo
Dockerfile
docker build -t "镜像名:Tag" . # .的作用是指定上下文的目录
Docker Hub
# 登录
docker login
# 搜索镜像
docker search xxx
# 拉取镜像
docker pull xxx
# 打标签
docker tag ubuntu:18.04 username/ubuntu:18.04
# 推送镜像
docker push username/ubuntu:18.04