什么是Docker?
Docker 是一个存储容器,主要用于linux和后台的虚拟容器
镜像和容器的关系:镜像类似类,容器类似实例。
镜像命令
查看镜像
docker images ls
docker images -q 查看所有镜像id
获取镜像
docker pull 镜像名
镜像分层的本质:镜像是根据联合文件系统创建的,在获取镜像的过程中,会优先创造镜像运行所需的环境,如运行mysql,就必须拉取操作系统内核,之后在创造mysql
查看镜像信息
docker inspect 镜像名
搜索镜像
docker search 镜像名
-f, --filter filter 条件查找
--format string 格式化输出内容
--limit int 输出个数限制
--no-trunc 全部输入,不截断
过滤查找
镜像删除
docker rmi 镜像名
-f 强制删除
-no-prune 不带标签的镜像
删除所有镜像
docker rmi -f $(docker images -q)
清理镜像
docker image prune -f
创造镜像
根据容器来创造镜像
docker commit -a "作者" -m "信息" 容器id 新镜像名:新版本
保存镜像
导出镜像保存到本地中
docker save -o 文件名.tar 镜像名
载入镜像
将本地镜像文件载入到docker中
docker load -i 文件名
docker load < 文件名
上传镜像
上传镜像到官方仓库中,需要登录
docker push 镜像名
容器命令
新建容器
docker create 镜像名
新建的容器处于停止状态,需要使用docker start 镜像名来启动
可以看到容器被创建
启动容器
docker start 容器id
新建并启动容器
docker run -it 镜像名
-i 标准输入输出
-t 伪终端执行
容器执行的常见错位码
❑ 125:Docker daemon执行出错,例如指定了不支持的Docker命令参数;
❑ 126:所指定命令无法执行,例如权限出错;
❑ 127:容器内命令无法找到。
后台运行容器
docker run -d 镜像名
查看容器输入
docker logs 容器id
停止容器
docker pause 容器id
终止容器
结束线程中的容器
docker stop 容器id
查看容器
docker ps 查看正在运行的容器
docker ps -a 查看所有容器
docker ps -q 查看正在运行的容器id
docker ps -aq 查看所有容器id
重启容器
重新开启终止状态的容器
docker restart 容器id
进入容器
后台运行容器时,无法进入容器,看不到其中的信息,需要进入容器中。
docker attach 容器id
另一种进入方式 exec进入
docker exec -it 容器id
删除容器
删除终止状态的容器,如果容器正在运行,则需要终止容器再删除或者强制删除容器
docker rm 容器id
docker rm -f 容器id 强制删除容器
docker rm $(docker ps -aq) 删除所有容器
导出容器
docker export -o 文件名.tar 容器id
>
导入容器
将容器文件导入为镜像
docker import 文件名 镜像名
查看容器
docker container inspect 容器id
查看容器内进程
docker top 容器id
查看容器内资源信息
会显示容器内硬件资源的使用情况
docker stats 容器id
复制文件
将主机中的文件复制到容器中
docker cp 主机文件路径 容器内路径
查看容器变更
docker container diff 容器id
查看端口映射
docker container port 容器id
更新配置
更新容器运行时的配置,主要时硬件资源的配置
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
<a name="QcGFo"></a>
# Docker镜像启动
<a name="LdiiH"></a>
## Docker启动mysql镜像
```shell
docker run -p 3306:3306 --name mysql
-v ~/mysql/log:/var/lib/mysql
-v ~/mysql/conf:/etc/mysql/conf.d
-v ~/mysql/logs:/logs
-e MYSQL_ROOT_PASSWORD=123456
-d mysql:5.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 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镜像
由于docker-redis中没有配置文件,所以需要最近在宿主机中创建配置文件
mkdir -p /mydata/redis/conf
touch /mydata/redis/conf/redis.conf
创建docker镜像
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 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镜像
docker search rabbitmq
docker pull rabbitmq
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
-d 后台运行
-p 隐射端口
–name 指定rabbitMQ名称
RABBITMQ_DEFAULT_USER 指定用户账号
RABBITMQ_DEFAULT_PASS 指定账号密码
## 此时连接 ip:15672再网站时无法获取图形化界面,rabbitmq容器中安装图形化界面
docker exec -it rabbitmq bash
rabbitmq-plugins enable rabbitmq_management