什么是Docker?

Docker 是一个存储容器,主要用于linux和后台的虚拟容器
镜像和容器的关系:镜像类似类,容器类似实例。
image.png

镜像命令

查看镜像

  1. docker images ls
  2. docker images -q 查看所有镜像id

image.png

获取镜像

  1. docker pull 镜像名

image.png

镜像分层的本质:镜像是根据联合文件系统创建的,在获取镜像的过程中,会优先创造镜像运行所需的环境,如运行mysql,就必须拉取操作系统内核,之后在创造mysql

查看镜像信息

  1. docker inspect 镜像名

image.png

搜索镜像

  1. docker search 镜像名
  1. -f, --filter filter 条件查找
  2. --format string 格式化输出内容
  3. --limit int 输出个数限制
  4. --no-trunc 全部输入,不截断

image.png
在docker官方本地仓库中去查找相关的镜像

过滤查找

image.png

镜像删除

  1. docker rmi 镜像名
  2. -f 强制删除
  3. -no-prune 不带标签的镜像

image.png
删除所有镜像

  1. docker rmi -f $(docker images -q)

清理镜像

  1. docker image prune -f

image.png

创造镜像

根据容器来创造镜像

  1. docker commit -a "作者" -m "信息" 容器id 新镜像名:新版本

现修改容器内容
image.png
根据容器创造一个新镜像,与原来的镜像不同
image.png

保存镜像

导出镜像保存到本地中

  1. docker save -o 文件名.tar 镜像名

image.png在当前文件夹中可以看到 mysql.tar
image.png

载入镜像

将本地镜像文件载入到docker中

  1. docker load -i 文件名
  2. docker load < 文件名

image.png

上传镜像

上传镜像到官方仓库中,需要登录

  1. docker push 镜像名

image.png

容器命令

新建容器

  1. docker create 镜像名

新建的容器处于停止状态,需要使用docker start 镜像名来启动
image.png
可以看到容器被创建

启动容器

  1. docker start 容器id

image.png
可以看到容器正在运行

新建并启动容器

  1. docker run -it 镜像名
  2. -i 标准输入输出
  3. -t 伪终端执行

image.png
容器执行的常见错位码
❑ 125:Docker daemon执行出错,例如指定了不支持的Docker命令参数;
❑ 126:所指定命令无法执行,例如权限出错;
❑ 127:容器内命令无法找到。

后台运行容器

  1. docker run -d 镜像名

image.png

查看容器输入

  1. docker logs 容器id

image.png
可以看到,容器运行并且不断输入hello world

停止容器

  1. docker pause 容器id

image.png

终止容器

结束线程中的容器

  1. docker stop 容器id

image.png

查看容器

  1. docker ps 查看正在运行的容器
  2. docker ps -a 查看所有容器
  3. docker ps -q 查看正在运行的容器id
  4. docker ps -aq 查看所有容器id

重启容器

重新开启终止状态的容器

  1. docker restart 容器id

进入容器

后台运行容器时,无法进入容器,看不到其中的信息,需要进入容器中。

  1. docker attach 容器id

image.png
另一种进入方式 exec进入

  1. docker exec -it 容器id

image.png

删除容器

删除终止状态的容器,如果容器正在运行,则需要终止容器再删除或者强制删除容器

  1. docker rm 容器id
  2. docker rm -f 容器id 强制删除容器
  3. docker rm $(docker ps -aq) 删除所有容器

导出容器

  1. docker export -o 文件名.tar 容器id
  2. >

image.png

导入容器

将容器文件导入为镜像

  1. docker import 文件名 镜像名

image.png

查看容器

  1. docker container inspect 容器id

image.png

查看容器内进程

  1. docker top 容器id

image.png

查看容器内资源信息

会显示容器内硬件资源的使用情况

  1. docker stats 容器id

image.png

复制文件

将主机中的文件复制到容器中

  1. docker cp 主机文件路径 容器内路径

image.png
image.png

查看容器变更

  1. docker container diff 容器id

image.png

查看端口映射

  1. docker container port 容器id

更新配置

更新容器运行时的配置,主要时硬件资源的配置

  1. docker update --某个硬件模块 设定值

docker数据管理

DockerFilie

dockersfilie组成

  • 基础镜像信息
  • 维护者信息
  • 镜像操作指令
  • 容器启动时执行指令 ```shell FROM WORDDIR COPY RUN 镜像建立时执行 CMD 执行命令,如果没阻塞,容器执行后关闭 EXPOSE 暴露端口 VOLUME 指定映射文件 /a/b ENV 容器内的环境变量 A=10 CMD echo $A ARG 容器参数 构建时有效,运行时无效 B=10 CMD echo $B 运行容器没有数据 ONBUILD—-当前镜像构建的时候不会执行,基于当前镜像的镜像去构建的时候才会执行 STOPSIGNAL—-指定容器使用什么信号,一般指定信号名 HEALTHCHECK—-检查容易的健康状态 SHELL—-指定linux为/bin/sh,windows为cmd
  1. <a name="QcGFo"></a>
  2. # Docker镜像启动
  3. <a name="LdiiH"></a>
  4. ## Docker启动mysql镜像
  5. ```shell
  6. docker run -p 3306:3306 --name mysql
  7. -v ~/mysql/log:/var/lib/mysql
  8. -v ~/mysql/conf:/etc/mysql/conf.d
  9. -v ~/mysql/logs:/logs
  10. -e MYSQL_ROOT_PASSWORD=123456
  11. -d mysql:5.7
  1. docker run -p 3306:3306 --name mysql \
  2. -v /mydata/mysql/log:/var/lib/mysql \
  3. -v /mydata/mysql/conf:/etc/mysql/ \
  4. -v /mydata/mysql/log:/var/log/mysql \
  5. -e MYSQL_ROOT_PASSWORD=123456 \
  6. -d mysql:5.7
  7. docker run -p 3306:3306 --name mysql -v /mydata/mysql/log:/var/lib/mysql -v /mydata/mysql/conf:/etc/mysql/ -v /mydata/mysql/log:/var/log/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7

docker启动redis镜像

  1. 由于docker-redis中没有配置文件,所以需要最近在宿主机中创建配置文件
  2. mkdir -p /mydata/redis/conf
  3. touch /mydata/redis/conf/redis.conf
  4. 创建docker镜像
  5. docker run -p 6379:6379 --name redis
  6. -v /mydata/redis/data:/data
  7. -v /mydata/redis/conf/redis.conf:/etc/redis/redis.conf
  8. -d redis redis-server /etc/redis/redis.conf
  9. docker run -p 6379:6379 --name redis -v /mydata/redis/data:/data -v /mydata/redis/conf/redis.conf:/etc/redis/redis.conf -d redis redis-server /etc/redis/redis.conf

Docker启动RabbitMQ镜像

  1. docker search rabbitmq
  2. docker pull rabbitmq
  3. docker run -d -p 15672:15672 -p 5672:5672 -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=admin --name rabbitmq --hostname=rabbitmqhostone rabbitmq:latest
  4. -d 后台运行
  5. -p 隐射端口
  6. name 指定rabbitMQ名称
  7. RABBITMQ_DEFAULT_USER 指定用户账号
  8. RABBITMQ_DEFAULT_PASS 指定账号密码
  9. ## 此时连接 ip:15672再网站时无法获取图形化界面,rabbitmq容器中安装图形化界面
  10. docker exec -it rabbitmq bash
  11. rabbitmq-plugins enable rabbitmq_management