当前位置: 首页 > news >正文

Docker常用命令 - 黑马学习笔记

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 宿主机目录(文件):容器内目录(文件) ...
  • 注意事项

    1. 目录必须是绝对路径

    2. 若目录不存在,会自动创建

    3. 可以挂载多个数据卷

  • 案例

# 将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

数据卷容器

多容器进行交换

  1. 多个容器挂载同一数据卷

  2. 数据卷容器

配置数据卷容器

# 创建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

  1. 搜索tomcat镜像
docker search tomcat
  1. 拉取tomcat镜像
docker pull tomcat
  1. 创建容器,设置端口映射、目录映射
# 在/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

  1. 使用外部机器访问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私有仓库

相关文章:

  • 抽象⼯⼚模式
  • 基于React Native开发的非法App破解记录
  • 年度征文 | 回顾2022,展望2023(我难忘的2022,我憧憬的2023)
  • JavaScript篇.day08-DOM,节点,事件,定时器,位置及坐标
  • QML教程(七) JavaScript
  • 蓝桥杯寒假集训第四天(全球变暖DFS)
  • VScode中不同目录间python库函数的调用
  • C语言版扫雷——从0到1实现扫雷小游戏
  • 机器学习笔记 - 模式识别之图像特征提取和特征选择的基本方法总结
  • APP应用渗透测试思路
  • 微信小程序框架
  • 网络编程 udp/ip协议 c/s模型
  • 【数据结构】C语言实现链表(单链表部分)
  • JAVA练习8
  • 聊聊最适合程序员的画图工具
  • 《Javascript数据结构和算法》笔记-「字典和散列表」
  • AngularJS指令开发(1)——参数详解
  • avalon2.2的VM生成过程
  • CentOS7简单部署NFS
  • CSS实用技巧
  • js 实现textarea输入字数提示
  • Laravel 中的一个后期静态绑定
  • SSH 免密登录
  • Sublime text 3 3103 注册码
  • tweak 支持第三方库
  • 案例分享〡三拾众筹持续交付开发流程支撑创新业务
  • 什么软件可以提取视频中的音频制作成手机铃声
  • 探索 JS 中的模块化
  • 跳前端坑前,先看看这个!!
  • 我从编程教室毕业
  • 一个项目push到多个远程Git仓库
  • 《码出高效》学习笔记与书中错误记录
  • shell使用lftp连接ftp和sftp,并可以指定私钥
  • 测评:对于写作的人来说,Markdown是你最好的朋友 ...
  • 关于Kubernetes Dashboard漏洞CVE-2018-18264的修复公告
  • ​虚拟化系列介绍(十)
  • ​直流电和交流电有什么区别为什么这个时候又要变成直流电呢?交流转换到直流(整流器)直流变交流(逆变器)​
  • ### Error querying database. Cause: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException
  • #include
  • #pragma data_seg 共享数据区(转)
  • #我与Java虚拟机的故事#连载07:我放弃了对JVM的进一步学习
  • #中的引用型是什么意识_Java中四种引用有什么区别以及应用场景
  • ( 10 )MySQL中的外键
  • (10)STL算法之搜索(二) 二分查找
  • (6)设计一个TimeMap
  • (一)Neo4j下载安装以及初次使用
  • (转)3D模板阴影原理
  • (转)visual stdio 书签功能介绍
  • (转载)hibernate缓存
  • ***汇编语言 实验16 编写包含多个功能子程序的中断例程
  • ... fatal error LINK1120:1个无法解析的外部命令 的解决办法
  • .NET Core SkiaSharp 替代 System.Drawing.Common 的一些用法
  • .Net FrameWork总结
  • .net程序集学习心得
  • .考试倒计时43天!来提分啦!