一、docker的一些基础概念
1.1 配置Docker使用中国镜像
由于中国国情原因,docker hub最好使用国内的镜像,设置脚本如下:
dockerd --registry-mirror=https://registry.docker-cn.com
# 使用命令配置curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://ac8437da.m.daocloud.io
# lunux一键切换脚本
镜像地址合集:
参考参考:https://www.daocloud.io/mirror#accelerator-doc
二、使用镜像
通用命令:
- 删除本地镜像:
docker rmi [选项] <镜像1> [<镜像2> ...]
, 在 Docker 1.13+ 版本中推荐使用 docker image 来管理镜像docker image rm
- 删除虚悬镜像的指令:
docker rmi $(docker images -q -f dangling=true)
- 删除所有仓库名为 redis 的镜像:
docker rmi $(docker images -q redis)
- 删除所有在 mongo:3.2 之前的镜像:
docker rmi $(docker images -q -f before=mongo:3.2)
- 删除虚悬镜像的指令:
从 Docker Registry 获取镜像的命令是 docker pull。其命令格式为:
docker pull [选项] [Docker Registry地址]<仓库名>:<标签>
具体的选项可以通过 docker pull --help
命令看到,这里我们说一下镜像名称的格式。
Docker Registry 地址:地址的格式一般是 <域名/IP>[:端口号]。默认地址是 Docker Hub。
仓库名:如之前所说,这里的仓库名是两段式名称,即 <用户名>/<软件名>。对于 Docker Hub,如果不给出用户名,则默认为 library,也就是官方镜像。
例子:
运行镜像
|
|
docker run 就是运行容器的命令,具体格式我们会在后面的章节讲解,我们这里简要的说明一下上面用到的参数。
-it
:这是两个参数,一个是 -i:交互式操作,一个是 -t 终端。我们这里打算进入 bash 执行一些命令并查看返回结果,因此我们需要交互式终端。--rm
:这个参数是说容器退出后随之将其删除。默认情况下,为了排障需求,退出的容器并不会立即删除,除非手动 docker rm。我们这里只是随便执行个命令,看看结果,不需要排障和保留结果,因此使用 –rm 可以避免浪费空间。ubuntu:14.04
:这是指用 ubuntu:14.04 镜像为基础来启动容器。bash
:放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是 bash。
进入容器后,我们可以在 Shell 下操作,执行任何所需的命令。这里,我们执行了 cat /etc/os-release,这是 Linux 常用的查看当前系统版本的命令,从返回的结果可以看到容器内是 Ubuntu 14.04.5 LTS 系统。
最后我们通过 exit 退出了这个容器。
|
|
列出镜像
- docker images : 查看所有的镜像
- docker system df : 查看镜像的体积
查看虚悬镜像
- docker images -f dangling=true: 查看虚悬镜像
由于新旧镜像同名,旧镜像名称被取消,从而出现仓库名、标签均为的镜像。这类无标签镜像也被称为 虚悬镜像(dangling image) ,可以用 docker images -f dangling=true
命令专门显示这类镜像.
一般来说,虚悬镜像已经失去了存在的价值,是可以随意删除的,可以用下面的命令删除:
docker rmi $(docker images -q -f dangling=true)
在 Docker 1.13+ 版本中你可以便捷的使用以下命令来删除虚悬镜像:
docker image prune
中间层镜像
为了加速镜像构建、重复利用资源,Docker 会利用 中间层镜像。所以在使用一段时间后,可能会看到一些依赖的中间层镜像。默认的 docker images 列表中只会显示顶层镜像,如果希望显示包括中间层镜像在内的所有镜像的话,需要加 -a 参数。
docker images -a
这样会看到很多无标签的镜像,与之前的虚悬镜像不同,这些无标签的镜像很多都是中间层镜像,是其它镜像所依赖的镜像。这些无标签镜像不应该删除,否则会导致上层镜像因为依赖丢失而出错。实际上,这些镜像也没必要删除,因为之前说过,相同的层只会存一遍,而这些镜像是别的镜像的依赖,因此并不会因为它们被列出来而多存了一份,无论如何你也会需要它们。只要删除那些依赖它们的镜像后,这些依赖的中间层镜像也会被连带删除。
更多列出镜像的方法请参考:https://yeasy.gitbooks.io/docker_practice/content/image/list.html
docker commit使用
Dockerfile 定制镜像
|
|
docker build 命令进行镜像构建。其格式为:
docker build [选项] <上下文路径/URL/->
在这里我们指定了最终镜像的名称 -t nginx:v3,构建成功后,我们可以像之前运行 nginx:v2 那样来运行这个镜像,其结果会和 nginx:v2 一样。
在 Docker 1.13+ 版本中推荐使用 docker image 来管理镜像。
docker image build
三、容器使用
进入容器交互模式: docker exec -it {容器名称} bash
范例
docker run -d -p 8081:80 --name webserver nginx
- `-p` 指定端口转发,将容器的80端口转发到本机的8081端口
- `--name webserver` 给容器取别名webserver
docker run -it --rm ubuntu:14.04 bash
- `--rm` 退出后删除
- `-it` 交互模式
- `bash` 使用bash作为交互模式
四、docker-compose安装和使用
要使用docker-compose,先要检查系统是否加载overlayfs,如果是centos7以上则默认已经加载。可以使用lsmod | grep overlay
来检查是否加载,如果没有,则使用如下命令去加载:
|
|
编辑docker配置文件,让docker使用overlay文件系统
vim /etc/sysconfig/docker
OPTIONS=’–selinux-enabled -s overlay
具体可以参考文章:https://blog.csdn.net/oxo_520/article/details/79873710
|
|