• 恍惚间满眼星河,不对,那其实是你

为什么要docker

docker ps和images都是空的了_环境配置

之前需要运行环境 需要把虚拟机一起打包 才能模拟同样的环境,不让运维和开发因为运行环境配置不同而打架。

现在直接打包docker相关资源就可以将 相同的运行环境 配置在各种虚拟机,服务器上面。

镜像

相当于 java 中的类 。相当于模板,镜像可以打包。一个镜翔可以创建多个容器 。镜像也可以打包所有容器形成一个镜像文件 ,将这个镜像文件放在别的docker上面也可以跑起来。

容器

相当于java实例对象,可以启动多个容器,可以看作一个简易的linux ,可以放置redis ,mongodb ,mysql,一个容器只能装一种软件 。

docker ps和images都是空的了_镜像_02

docker命令

帮助,启动,停止,类命令

  • 启动docker: systemctl start docker
  • 停止docker: systemctl stop docker
  • 重启docker: systemctl restart docker
  • 查看docker状态: systemctl status docker
  • 开机自启 : systemctl enable docker
  • 查看docker 概要信息:docker info
  • 查看docker总体帮助命令:docker --help
  • 查看docker命令帮助文档: docker 具体命令 --help

镜像

docker ps和images都是空的了_环境配置_03

  • 强制删除镜像: docker rmi - f 【镜像id / 镜像名】 (可以停止正在运行的镜像, rm -f 强制删除)

docker ps和images都是空的了_容器_04


docker ps和images都是空的了_容器_05

查看docker容量

  • docker system df

docker 虚悬镜像

docker ps和images都是空的了_Docker_06

容器命令

  • 启动交互式容器(前台命令行)
  • docker ps和images都是空的了_命令操作_07

  • docker ps -*
  • docker ps和images都是空的了_镜像_08

  • 容器停止
  • docker ps和images都是空的了_Docker_09

  • 一次性删除多个容器实例
    1.docker rm -f $(docker ps -a -q)
    -q:静默模式 只显示容器编号
    2.docker ps -a -q | xargs docker rm
    相当于遍历容器编号 , 让编号 为 i 的容器 +docker rm
    docker ps -a -q 的结果集作为 xargs 的参数
  • 进入活着的容器
    1.开启容器后台运行 (启动容器守护模式)
    docker run -d ubuntu
    (例如后台启动 ubuntu ,但是dockers ps 后 容器直接退出了 , 这是docker 机制问题 docker 后台启动必须要有 一个前台进程 ,如果命令不是 top tail, 让容器一直挂起的命令 容器开启之后就会立即退出 )
  • 查看容器日志
    docker logs {容器id}
  • 查看容器内运行的进程
    docker top {容器id}
  • 查看容器内部细节
    docker inspect {容器id}
  • 重新进入容器实例 (先进入ubuntu容器控制台 ->ctrl+p+q:退出控制台 -》 docker attach {容器id} :重新进入容器 )
    1.(会导致容器停止 一般不用 )docker attach {容器id}
    attach :不会导致容器停止
    exit 退出会导致容器停止
  • docker ps和images都是空的了_Docker_10

2.(先进入ubuntu容器控制台 ->ctrl+p+q:退出控制台 -》 docker exec -it 28dbff6fe74f /bin/bash

:重新进入容器 控制台)

docker ps和images都是空的了_镜像_11


exec 是在容器中打开新的终端,并且可以启动新的线程

exit退出不会导致容器停止

示例进入redis容器 :

docker exec -it af0527d27e40(redis容器id) /bin/bash

redis-cli -p 6379 进入redis控制台

[root@VM-4-14-centos ~]# docker exec -it af0527d27e40 /bin/bash
root@af0527d27e40:/data# 
root@af0527d27e40:/data# redis-cli -p 6379
127.0.0.1:6379> ping
PONG
127.0.0.1:6379> set k1 v1 
OK
127.0.0.1:6379> get k1
"v1"
  • 容器数据拷贝主机

docker ps和images都是空的了_Docker_12


docker ps和images都是空的了_Docker_13