Docker 基本操作

Docker 配置

镜像源配置

修改文件 /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.service

Docker 基础

Docker 包括三个基本概念

  • 镜像(Image):Docker 镜像(Image),就相当于是一个 root 文件系统。比如官方镜像 ubuntu:16.04 就包含了完整的一套 Ubuntu16.04 最小系统的 root 文件系统。
  • 容器(Container):镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。
  • 仓库(Repository):仓库可看成一个代码控制中心,用来保存镜像。

Docker 安装

Docker 镜像加速

Docker 基本操作

查看 Docker 命令
$ docker

如果查看具体某项命令的具体描述,可以使用 docker command --help

$ docker stats --help

在这里插入图片描述

Docker 镜像

查看本地主机上的镜像

$ docker images

在这里插入图片描述
各选项说明

  • REPOSITORY:表示镜像的仓库源
  • TAG:镜像的标签
  • IMAGE ID:镜像ID
  • CREATED:镜像创建时间
  • SIZE:镜像大小

同一个仓库源由多个版本,使用 TAG来定义不同的镜像,例如:docker.io/mysql:5.7docker.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
Docker 容器

启动容器需要使用镜像去启动,以下命令使用 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

Docker Compose

$ docker-compose [-f=<arg>...] [options] [COMMAND] [ARGS...]
  • -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:

  1. 如何更新容器内容?
    $ docker-compose pull
    $ docker-compose up --detach --build [container name]
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值