修改文件 /etc/docker/daemon.json,如果没有的话创建
$ vim /etc/docker/daemon.json写入配置
{ "registry-mirrors" : [ "https://mirror.ccs.tencentyun.com", "http://registry.docker-cn.com", "http://docker.mirrors.ustc.edu.cn", "http://hub-mirror.c.163.com" ], "insecure-registries" : [ "registry.docker-cn.com", "docker.mirrors.ustc.edu.cn" ], "experimental" : true }然后重启 Docker 即可
# linux 重启方式 $ systemctl restart docker.serviceDocker 包括三个基本概念
镜像(Image):Docker 镜像(Image),就相当于是一个 root 文件系统。比如官方镜像 ubuntu:16.04 就包含了完整的一套 Ubuntu16.04 最小系统的 root 文件系统。容器(Container):镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。仓库(Repository):仓库可看成一个代码控制中心,用来保存镜像。Docker 安装
Docker 镜像加速
如果查看具体某项命令的具体描述,可以使用 docker command --help
$ docker stats --help查看本地主机上的镜像
$ docker images各选项说明
REPOSITORY:表示镜像的仓库源TAG:镜像的标签IMAGE ID:镜像IDCREATED:镜像创建时间SIZE:镜像大小同一个仓库源由多个版本,使用 TAG来定义不同的镜像,例如:docker.io/mysql:5.7、docker.io/mysql:latest 代表了不同版本 mysql 的镜像
获取新的镜像
$ docker pull mysql:5.7查找镜像
$ docker search httpd说明
NAME: 镜像仓库源的名称DESCRIPTION: 镜像的描述OFFICIAL: 是否 docker 官方发布stars: 点赞、喜欢AUTOMATED: 自动构建删除镜像命令,删除镜像可以加镜像名、镜像 ID 等
$ docker rmi mysql创建镜像,使用下面的方式可以创建镜像,详见 Dockerfile
从已经创建的容器中更新镜像,并且提交这个镜像使用 Dockerfile 指令来创建一个新的镜像Dockerfile 示例
FROM centos:6.7 MAINTAINER Fisher "test@163.com" RUN /bin/echo 'root:123456' |chpasswd RUN useradd wjw EXPOSE 22 EXPOSE 80 CMD /usr/sbin/sshd -D每一个指令都会在镜像上创建一个新的层,每一个指令的前缀都必须是大写的,所以可以用 && 在同层执行多个指令
然后执行命令创建
$ docker build -t wjw/centos:6.7 .-t:指定要创建的目标镜像名
.:Dockerfile 文件所在目录,可以指定Dockerfile 的绝对路径
为镜像添加 TAG,这里为 ID 860c279d2fec 的镜像添加新的 tag
$ docker tag <镜像 ID> wjw/centos:dev启动容器需要使用镜像去启动,以下命令使用 mysql 镜像启动一个容器,参数为以命令行模式进入该容器
$ docker run -it mysql /bin/bash -i: 交互式操作-t: 终端/bin/bash:放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是 /bin/bash-P:将容器内部使用的网络端口随机映射到我们使用的主机上-p 4000:5000:将本机 4000 映射到 docker 5000 端口查看运行的容器
$ docker ps $ docker ps -a $ docker ps -l -a 参数可以查看包括停止的容器-l 参数查询最后一次创建的容器启动一个停止的容器
$ docker start <容器 ID>-d 指定容器后台运行
$ docker run -itd --name mysql-test mysql /bin/bash-d后台运行的容器,可以使用命令进入容器,如下两种方式
docker attach:退出时会导致容器停止docker exec:推荐大家使用 docker exec 命令,因为此退出容器终端,不会导致容器的停止 $ docker attach <容器 ID> $ docker exec -it <容器 ID> /bin/bash停止容器
$ docker stop <容器 ID>重启容器
$ docker restart <容器 ID>导出容器,可以使用命令导出容器到本地文件
$ docker export <容器 ID> > mysql.tar $ docker export 123456 > mysql.tar选择刚才导出的文件,导入容器
$ cat docker/mysql.tar | docker import - test/mysql:v1也可以通过指定 URL 或者某个目录来导入
$ docker import http://example.com/exampleimage.tgz example/imagerepo删除容器
$ docker rm -f <容器 ID>清理掉所有处于终止状态的容器
$ docker container prune查看容器的端口映射情况
$ docker port <容器 ID> $ docker port <容器 name>查看日志,-f 让 docker logs 像使用 tail -f 一样来输出容器内部的标准输出
$ docker logs -f <容器 ID>我们还可以使用 docker top 来查看容器内部运行的进程
$ docker top <容器 ID>使用 docker inspect 来查看 Docker 的底层信息。它会返回一个 JSON 文件记录着 Docker 容器的配置和状态信息
$ docker inspect <容器 ID>查看内存使用情况
$ sudo docker system df-f, --file [FILE] 指定使用的 Compose 模板文件,默认为 docker-compose.yml,可以多次指定;
-p, --project-name [NAME] 指定项目名称,默认将使用所在目录名称作为项目名;
--x-networking 使用 Docker 的可拔插网络后端特性;
--x-network-driver [DRIVER] 指定网络后端的驱动,默认为 bridge;
--verbose 输出更多调试信息;
-v, --version 打印版本并退出;
常用命令
docker-compose [命令] --help: 获得一个命令的帮助docker-compose up -d nginx: 构建启动 nignx 容器 -d 在后台运行服务容器–no-color 不使用颜色来区分不同的服务的控制输出–no-deps 不启动服务所链接的容器–force-recreate 强制重新创建容器,不能与 –no-recreate 同时使用–no-recreate 如果容器已经存在,则不重新创建,不能与 –force-recreate 同时使用–no-build 不自动构建缺失的服务镜像–build 在启动容器前构建服务镜像–abort-on-container-exit 停止所有容器,如果任何一个容器被停止,不能与-d同时使用-t, –timeout TIMEOUT 停止容器时候的超时(默认为10秒)–remove-orphans 删除服务中没有在 compose 文件中定义的容器–scale SERVICE=NUM 设置服务运行容器的个数,将覆盖在 compose 中通过 scale 指定的参数 docker-compose exec nginx bash: 登录到 nginx 容器中docker-compose down: 此命令将会停止 up 命令所启动的容器,并移除网络 –rmi [type],删除镜像。all: 删除 compose 文件中定义的所有镜像;local: 删除镜像名为空的镜像-v, –volumes,删除已经在 compose 文件中定义的和匿名的附在容器上的数据卷–remove-orphans,删除服务中没有在 compose 中定义的容器 docker-compose ps: 列出项目中目前的所有容器docker-compose restart nginx: 重新启动nginx容器docker-compose build --no-cache nginx: 构建镜像 –compress 通过gzip压缩构建上下环境–force-rm 删除构建过程中的临时容器–no-cache 构建镜像过程中不使用缓存,–pull 始终尝试通过拉取操作来获取更新版本的镜像-m, –memory MEM为构建的容器设置内存大小–build-arg key=val为服务设置build-time变量 docker-compose top: 查看各个服务容器内运行的进程docker-compose logs -f nginx: 查看nginx的实时日志docker-compose images: 列出 Compose 文件包含的镜像docker-compose config: 验证文件配置 –resolve-image-digests 将镜像标签标记为摘要-q, –quiet 只验证配置,不输出。 当配置正确时,不输出任何内容,当文件配置错误,输出错误信息–services 打印服务名,一行一个–volumes 打印数据卷名,一行一个 docker-compose events --json nginx: 以json的形式输出nginx的docker日志docker-compose pause nginx: 暂停nignx容器docker-compose unpause nginx: 恢复ningx容器docker-compose rm nginx: 删除容器(删除前必须关闭容器,执行stop) –f, –force,强制直接删除,包括非停止状态的容器-v,删除容器所挂载的数据卷 docker-compose stop nginx: 停止nignx容器 -t, –timeout TIMEOUT 停止容器时候的超时(默认为10秒) docker-compose start nginx: 启动nignx容器docker-compose restart nginx: 重启项目中的nignx容器docker-compose run --no-deps --rm php-fpm php -v: 在php-fpm中不启动关联容器,并容器执行php -v 执行完成后删除容器eg:
如何更新容器内容?$ docker-compose pull $ docker-compose up --detach --build [container name]