Docker服务命令
# 启动docker服务
systemctl start docker
# 停止docker服务
systemctl stop docker
# 查看docker状态
systemctl status docker
# 重启docker服务
systemctl restart docker
# 设置docker开机自启动
systemctl enable docker
Docker镜像命令
# 查看镜像:查看本地所有镜像
docker images
# 查看所有镜像的id
docker images -q
# 搜索镜像:从网络中查找需要的镜像
docker search 镜像名称
# 拉取镜像:从Docker仓库下载镜像到本地,镜像名称格式为:名称:版本号,如果版本号不指定则拉取最新版本
# 若不知道镜像版本,可以去hub.docker.com搜索对应镜像查看
docker pull 镜像名称
# 删除镜像:删除本地镜像
docker rmi 镜像id # 删除指定镜像
docker rmi `docker images -q` # 删除本地所有镜像,`docker images -q`相当于查出所有镜像id,然后传给rmi删除
Docker容器相关命令
# 查看容器
docker ps # 查看正在运行的容器
docker ps -a # 查看所有容器
# 创建并启动容器
docker run 参数
参数说明:
- -i : 保持容器运行,通常和 -t 使用,加入这两个参数后,容器创建后自动进入容器中,退出容器后,容器自动关闭
- -t : 为容器分配一个伪输入终端,通常与 -i 使用
- -d : 以守护(后台)模式运行容器,通常与 -i 使用
- -it : 创建的容器一般成为交互式容器,-id 创建的容器一般称为守护式容器
- –name : 为创建的容器命名
# 进入容器
docker exec 参数 # 退出容器,容器不会关闭
docker exec -it 容器id/容器名 /bin/bash
# 停止容器
docker stop 容器名称
# 启动容器
docker start 容器名称
# 删除容器: 如果容器是运行状态则删除失败
docker rm 容器名称
# 查看容器信息
docker inspect 容器名称
Docker容器的数据卷
数据卷
-
数据卷是宿主机中的一个目录或文件
-
当容器目录和数据卷目录绑定后,对方的修改会立即同步
-
一个数据卷可以被多和容器挂载
-
一个容器也可以被挂载多个数据卷
数据卷作用
-
容器数据持久化
-
外部机器与容器间通信
-
容器之间数据交换
配置数据卷
# 创建启动容器时,使用 -v 参数设置数据卷
docker run ... -v 宿主机目录(文件):容器内目录(文件) ...
-
注意事项
-
目录必须是绝对路径
-
若目录不存在,会自动创建
-
可以挂载多个数据卷
-
-
案例
# 将centos7镜像创建并启动容器命名为c1,将宿主机的/root/data挂载到c1容器的/root/c1
docker run -it --name=c1 -v /root/data:/root/c1 centos:7
# 一个容器挂载多个目录
# 将centos7镜像创建并启动命名为c1,将宿主机的/root/data1、/root/data2 挂载到容器的/root/data1、/root/data2目录
docker run -it --name=c1 -v /root/data1:/root/data1 -v /root/data2:/root/data2 centos:7
# 多个容器挂载一个目录,实现容器间数据共享
docker run -it --name=c1 -v /root/data:/root/data1 centos:7
docker run -it --name=c2 -v /root/data:/root/data2 centos:7
数据卷容器
多容器进行交换
-
多个容器挂载同一数据卷
-
数据卷容器
配置数据卷容器
# 创建c3数据卷容器,使用 -v 参数设置数据卷 /volume是自定义的容器名称
docker run -it --name=c3 -v /volume centos:7 /bin/bash
# 创建启动c1 c2 容器,使用 --volumes-from 参数设置数据卷
docker run -it --name=c1 --volumes-from c3 centos:7 /bin/bash
docker run -it --name=c2 --volumes-from c3 centos:7 /bin/bash
使用数据卷容器将会在宿主机上的 /var/lib/docker/volumes/…/_data 目录下生成源文件,而多个容器是共同维护该目录下的文件
Docker部署Tomcat
- 搜索tomcat镜像
docker search tomcat
- 拉取tomcat镜像
docker pull tomcat
- 创建容器,设置端口映射、目录映射
# 在/root目录下创建tomcat目录用于存储tomcat数据信息
mkdir ~/tomcat
cd ~/tomcat
docker run -id --name=tomcat \
-p 8000:8000 \
-v $PWD:/usr/local/tomcat/webapps \
tomcat:8
-
参数说明:
-
**-p 8080:8080:**将容器的8080端口映射到主机的8080端口
**-v $PWD:/usr/local/tomcat/webapps:**将主机中当前目录挂载到容器的webapps
-
- 使用外部机器访问tomcat
Dockerfile
镜像制作
1、容器转为镜像
# 将容器转为镜像
docker commit 容器id 镜像名称:版本号
# 将镜像打包
docker save -o 压缩文件名称 镜像名称:版本号
# 将压缩的镜像导入
docker load -i 压缩文件名称
挂载到本地的文件无法从容器转为镜像
Dockerfile概念
Dokcerfile关键字
关键字 | 作用 | 备注 |
---|---|---|
FROM | 指定父镜像 | 指定dockerfile基于那个image构建 |
MAINTAINER | 作者信息 | 用来标明这个dockerfile谁写的 |
LABEL | 标签 | 用来标明dockerfile的标签 可以使用Label代替Maintainer 最终都是在docker image基本信息中可以查看 |
RUN | 执行命令 | 执行一段命令 默认是/bin/sh 格式: RUN command 或者 RUN [“command” , “param1”,“param2”] |
CMD | 容器启动命令 | 提供启动容器时候的默认命令 和ENTRYPOINT配合使用.格式 CMD command param1 param2 或者 CMD [“command” , “param1”,“param2”] |
ENTRYPOINT | 入口 | 一般在制作一些执行就关闭的容器中会使用 |
COPY | 复制文件 | build的时候复制文件到image中 |
ADD | 添加文件 | build的时候添加文件到image中 不仅仅局限于当前build上下文 可以来源于远程服务 |
ENV | 环境变量 | 指定build时候的环境变量 可以在启动的容器的时候 通过-e覆盖 格式ENV name=value |
ARG | 构建参数 | 构建参数 只在构建的时候使用的参数 如果有ENV 那么ENV的相同名字的值始终覆盖arg的参数 |
VOLUME | 定义外部可以挂载的数据卷 | 指定build的image那些目录可以启动的时候挂载到文件系统中 启动容器的时候使用 -v 绑定 格式 VOLUME [“目录”] |
EXPOSE | 暴露端口 | 定义容器运行的时候监听的端口 启动容器的使用-p来绑定暴露端口 格式: EXPOSE 8080 或者 EXPOSE 8080/udp |
WORKDIR | 工作目录 | 指定容器内部的工作目录 如果没有创建则自动创建 如果指定/ 使用的是绝对地址 如果不是/开头那么是在上一条workdir的路径的相对路径 |
USER | 指定执行用户 | 指定build或者启动的时候 用户 在RUN CMD ENTRYPONT执行的时候的用户 |
HEALTHCHECK | 健康检查 | 指定监测当前容器的健康监测的命令 基本上没用 因为很多时候 应用本身有健康监测机制 |
ONBUILD | 触发器 | 当存在ONBUILD关键字的镜像作为基础镜像的时候 当执行FROM完成之后 会执行 ONBUILD的命令 但是不影响当前镜像 用处也不怎么大 |
STOPSIGNAL | 发送信号量到宿主机 | 该STOPSIGNAL指令设置将发送到容器的系统调用信号以退出。 |
SHELL | 指定执行脚本的shell | 指定RUN CMD ENTRYPOINT 执行命令的时候 使用的shell |
Dockerfile案例
发布springboot项目
发布springboot项目,注意记住暴露的端口号
由于Docker 官方已经弃用java8,若继续使用需要使用openjdk:8进行替换命令
# 通过dockerfile构建镜像 dockerfile路径可以相对可以绝对,镜像名称是自己设定,版本若不指定默认least,最后加 .
docker build -f dockefile文件路径 -t 镜像名称:版本 .
# 构造镜像后需要运行镜像
docker run -it --name app -p 8000:81 app
构建包含vim的centos
# 通过dockerfile构建镜像 dockerfile路径可以相对可以绝对,镜像名称是自己设定,版本若不指定默认least,最后加 .
docker build -f dockefile文件路径 -t 镜像名称:版本 .
# 构造镜像后需要运行镜像
docker run -it --name c1 centos:7
Docker-Compose
docker-compose参数介绍docker-compose常见的参数命令详解
dockerfile和docker-compose区别 dockerfile 与 docker-compose的区别
Docker私有仓库
Docker私有仓库