一)镜像仓库配置

docker官方提供仓库(Docker Hub),其上面有大量的高质量的可用镜像。安装之后,默认就使用的官方默认仓库,因此可以直接从上面获取镜像使用。但默认情况下其是从官方的library/下获取,如果我们想将自己定制的镜像上传至仓库,则我们必须先注册自己的仓库空间。由于众所周知的原因,我们访问外网有一些限制,比如这里就无法直接注册docker官方账号。

不过不用担心,国内许多大型云服务商提供针对Docker Hub的镜像加速服务,即可以从国内直接下载Docker Hub上的镜像,比如阿里云、网易云等。


这里以阿里云加速器为例,具体配置方法如下:

对于使用 systemd 的系统,比如centos7.x系列系统,请在 /etc/docker/daemon.json 中写入如下内容(如果文件不存在请新建该文件):

{

"registry-mirrors": [

"https://lfxql9az.mirror.aliyuncs.com"

]

}

然后重新启动服务:

#systemctl daemon-reload

#systemctl restart docker


注:

1. 查看阿里云加速器地址,我们需注册阿里云服务,注册时会选择地区,这个加速器因选择的地区不同而不同。

2. 阿里云注册地址:https://cr.console.aliyun.com/ 

例如,下图是我注册后的截图,该页也有配置加速器教程:

1.png


二)镜像操作

从镜像仓库获取镜像的命令是docker pull,其语法格式是:

# docker pull [选项] [Docker Registry 地址[:端口号]/]仓库名[:标签]


1)镜像获取

    a. 如上配置好镜像加速器后,如果想从官方直接拉取镜像,命令如下

    # docker pull 仓库名[:标签]        //如果只有仓库名,默认拉取latest标签的镜像,也可添加标签拉取特定版本的镜像

    b. 如果想拉取自己私有仓库的镜像,则需使用完整的语法格式。如下我在阿里云上建了自己的仓库,并且上传了自己的镜像,如果我想使用,则需运行如下命令:

    # docker pull registry.cn-hangzhou.aliyuncs.com/命名空间/仓库名[:标签] 

注:

1. 只要你注册了阿里云服务,并建立了自己的镜像仓库,那么点击仓库操作列的【管理】按钮会打开该仓库的详细信息页,在该页有详细的操作指南指导你如何使用该仓库:推送镜像至仓库、从仓库拉取镜像、重命名镜像等!!!

2. 拉取个人镜像(如果不是设置为私有)不需要登录,推送镜像到个人仓库则需要登录:

# docker login --username=xxx registry.cn-hangzhou.aliyuncs.com


2)镜像推送(即将本地镜像推送至远程仓库中,这里以阿里镜像仓库为例)

a. 登录阿里云Docker registry

# docker login --username=xxxx  registry.cn-hangzhou.aliyuncs.com

b. 给待推送的镜像打上相应tag

# docker tag [ImageId] registry.cn-hangzhou.aliyuncs.com/namespace/仓库名:[镜像版本号]

c. 将打了tag的镜像推送至仓库

# docker push registry.cn-hangzhou.aliyuncs.com/namespace/仓库名:[镜像版本号]      //当远程仓库中所命名的仓库不存在,会自动创建仓库;当仓库已存在,只要版本号不冲突则可成功推送


3)常用镜像操作命令

    a. 列出主机本地镜像: # docker image ls 

    b. 删除主机本地镜像: # docker image rm xxx

    c. 查看容器与镜像差异: # docker diff containerName

    d. 利用commit定制镜像:# docker commit [选项] <容器ID或容器名> [<仓库名>[:<标签>]]        //一般不用这种方式,因为会使容器变得非常臃肿,现在一般使用Dockerfile文件来动态定制镜像

    commit常见选项: --author(指定修改的作者), --message(记录本次修改的内容)

    e. 查看镜像修改历史: # docker history imageName


三)容器操作

    a. 运行镜像实例化容器: 有两种方式

        a.1 基于镜像新建一个容器并启动

            # docker run [选项] imageID [bash/sh...]

            eg. docker run -it XXXX bash        //启动xxxx并赋予一个基于bash的命令行终端

            常见选项参数有: -i, -t, --mount, -d等

            -t  //让docker分配一个伪终端并绑定到标准输入上

            -i  //让容器的标准输入保持打开

            -d  //后台启动容器

            --mount  //设置数据卷或共享宿主机文件夹

        a.2 重新启动处于停止状态的容器

        # docker container start containerID

    b. 容器查看

        # docker container ls [-a]   //不加-a仅可查看运行状态下的container,加上-a可查看运行及停止状态的container

    c. 进入容器

        如果是-d后台启动或者是start启动的容器,要进入容器需使用如下命令:

        # docker exec [选项] containerID [bash/sh...]

        常用选项参数:-i, -t

    d. 停止容器

        # docker container stop containerID

    e. 重启容器

        # docker container restart containerID

    f. 删除容器

        # docker container rm containerID  //删除特定的某个停止状态的容器

        # docker container prune   //删除所有停止状态的容器