docker学习2,docker基本命令

操作docker容器,和操作linux差不多,都是使用命令行操作。不同的是,操作docker需要使用docker的命令。docker的命令和linux的命令很多相似的,也有一些不同。废话不多说,开始学习。docker命令分为镜像相关,容器生命周期相关,容器操作相关,仓库相关等一系列命令。是用docker命令时,前要加上 docker ,比如查看docker版本,在终端输入 docker version

版本相关
  1. version 查看docker的版本,能看到docker的client和server的版本

    version

  2. info 显示 Docker 系统信息,包括镜像和容器数。

    info

    可以看到,有两个容器,一个运行中一个停止。本地还有两个镜像

本地镜像相关操作
  1. images 查看本地所有镜像

    images

  2. rmi 删除本地一个或多少镜像。这个命令和linux的rm命令很像,可以使用 -f 强制删除

  3. tag 为本地镜像打一个标签,可以理解为重命名。

    tag

可以看到,使用tag命令给mysql加了一个标签,两个镜像的id是相同的,说明还是同一个镜像。使用rmi命令删除一个,另一个不受影响。

  1. build 命令用于使用 Dockerfile 创建镜像。这个命令比较复杂,有很多参数,而且需要配合Dockerfile文件使用

  2. history 查看指定镜像的创建历史。

    • -H :以可读的格式打印镜像大小和日期,默认为true;
    • --no-trunc :显示完整的提交记录;
    • -q :仅列出提交记录ID。
  3. save 将本地的容器保存为一个文件。

    save

    已经把本地的redis 镜像保存到了当前目录

  4. load 导入使用 save 命令导出的镜像。

    load

    我们先把本地的redis镜像删除,再通过load命令把刚才导出的redis镜像再导入

  5. import 也是从本地文件导入镜像。和load 不同的是,import 命令需要指定导入后的镜像的name和tag

    import

    先把原有的redis镜像删掉,再使用import命名导入镜像,并指定name和tag。一般import命令配合export命令使用

容器仓库相关
  1. search 在远程仓库中搜索相关的镜像。

    search

    在远程仓库中搜索mysql相关的镜像

  2. pull 从远程仓库拉取镜像到本地,比如拉取mysql命令, docker pull mysql

容器生命周期相关
  1. run 创建一个新的容器并运行;run命令有很多参数,挑几个常用的介绍一个

    • -d: 后台运行容器,并返回容器ID;
    • -i: 以交互模式运行容器,通常与 -t 同时使用;
    • -t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
    • --name="nginx-lb": 为容器指定一个名称;注意这个前面是 --
    • -e: 设置环境变量;在用docker启动mysql的时候,会用到环境变量设置mysql的密码
    • -P: 随机端口映射,容器内部端口随机映射到主机的高端口,大写的P;
    • -p: 指定端口映射,格式为:主机(宿主)端口:容器端口;比如使用docker运行nginx时,将容器的nginx80端口映射到主机的8080端口;-p 8080:80
    • -m :设置容器使用内存最大值;
    • --volume , -v: 将主机上的目录挂载到容器内;格式为:主机目录:容器内的目录
      以运行mysql为例,
      run

      运行一个mysql容器,重命名为my_mysql,将容器的3306端口映射到主机的3366端口,并将mysql的存储目录/var/lib/mysql 挂载到用户目录的mysql_data目录下
  2. start 启动一个容器,可以使用容器的id也可以使用容器的name

  3. stop 停止一个容器

  4. restart 重启一个容器

  5. kill 杀死一个容器,和linux的kill命令很像,可以使用容器的name操作

  6. pause 暂停容器中所有的进程。

  7. unpause 恢复容器暂停的进程。

  8. create 创建一个容器,但是不启动这个容器

  9. exec 在运行的容器中执行命令。可以看做是进入到这个容器中。

    • -d :分离模式: 在后台运行
    • -i :默认打开,没有附加也保持STDIN 打开
    • -t :分配一个伪终端
      使用命令 docker exec -it redis 进入name为redis 的容器中
容器操作相关
  1. ps 列出当前机器上的容器

    • -a:列出所有的容器,包括没有运行的容器
    • -f :根据条件过滤显示的内容
    • -n :列出最近创建的n个容器
    • -q :静默模式,只显示容器编号
  2. top 查看容器中运行的进程信息,支持 ps 命令参数。

  3. logs 获取容器的日志

    • -f : 跟踪日志输出,和linux的 tail 的-f效果相同
    • --since :显示某个开始时间的所有日志
    • -t : 显示时间戳
    • --tail :仅列出最新N条容器日志
  4. **port ** 列出指定的容器的端口映射,或者查找将PRIVATE_PORT NAT到面向公众的端口。

  5. export 将容器导出为一个文件,和save命令相似,但是save命令操作的是镜像,export操作的是容器。save保存的文件没有丢失镜像的历史,可以回滚到之前。export 保存的文件再导入时会丢失镜像所有的历史,所以无法进行回滚
    使用命令 docker export name > filename

  6. commit 从指定容器创建一个新的镜像。

    • -a :提交的镜像作者
    • -c :使用Dockerfile指令来创建镜像
    • -m :提交时的说明文字
    • -p :在commit时,将容器暂停
      commit

      mariadb 容器生成一个新的镜像
  7. cp 在宿主机和容器之间复制文件。
    a.txt 复制到 name为 mysql 容器的 var 目录 docker cp a.txt redis:/var

你可能感兴趣的:(docker学习2,docker基本命令)