文章目录

    • @[toc]
  • docker概述
  • docker安装
  • docker原理
  • docker常用命令
    • 镜像命令
    • 容器命令
      • 进入\退出 容器
        • 进入容器
          • 1. docker attach
          • 2. docker exec
        • 退出容器
      • 容器启动与关闭
    • 查询容器/镜像信息
  • 修改容器启动项
    • 直接改配置文件
    • docker update
  • 容器数据卷和数据卷容器
    • 数据卷
    • 数据卷容器
  • docker网络
    • 概述
  • 修改容器导致容器故障无法运行
    • 使用docker cp命令
    • 直接改配置文件
  • docker环境变量详解
  • 注意

docker概述

docker安装

https://docs.docker.com/engine/install/centos/

  1. 下载docker的依赖环境
yum install -y yum-utils device-mapper-persistent-data lvm2
  1. 设置yum源
阿里,推荐
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
  1. 安装docker
docker-ce社区版,ee企业版
sudo yum install docker-ce docker-ce-cli containerd.io

docker默认安装最新版。
安装其它版本
https://www.runoob.com/docker/centos-docker-install.html
https://docs.docker.com/install/linux/docker-ce/centos/#install-from-a-package

docker version 判断安装是否成功
  1. 启动和开机启动
systemctl start docker
systemctl enable docker

关闭docker和静止开机自启

sudo systemctl stop docker
sudo systemctl disable docker
  1. 卸载docker
卸载旧版本
较旧的 Docker 版本称为 docker 或 docker-engine .
$ sudo yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine卸载新版docker ce
yum remove docker-cerm -rf /var/lib/docker

docker原理

&nesp;&nesp;docker有着比虚拟机更少的抽象层,由于Docker不需要实现硬件资源虚拟化,运行在Docker容器上的程序直接使用的都是实际物理机的硬件资源,所以Docker在cpu和内存利用率上更有效率。

&nesp;&nesp;当新建一个虚拟机时,虚拟机软件需要加载Guest OS,这个过程中需要引导、加载操作系统内核等操作,属于费时费资源的操作,所以新建虚拟机是分钟级别的。而Docker利用的是宿主机的内核,因此不需要Guest OS,这样就直接省略了重新加载一个操作系统的过程,因此新建一个Docker容器只需要几秒钟。

docker常用命令

镜像命令

删除指定的多个容器
docker rmi -f imageid1 imageid2 ...删除所有容器
docker rmi -f $(docker images -aq)

容器命令

进入\退出 容器

进入容器

1. docker attach
docker attach [OPTIONS] CONTAINER
docker attach进入是docker run后容器最初的shell,例如docker run后看到了日志输出,退出容器后执行docker attach进入容器后依旧可以看到日志输出例如 docker attach 容器id

注意:

  1. 通过docker attach进入容器后,输入exit后会导致container的停止。

2. docker exec
docker exec进入的是容器子shell,例如docker run后看到了日志输出,退出容器后执行docker exec进入容器后却什么都看不到docker exec -it mycentos /bin/bash

用docker exec -it命令进入容器如果输入exit命令直接退出container,但是不会使得container停止;


退出容器

exit1. 如果docker run 或者docker attach命令后进入容器终端,exit命令会退出并且停止容器;2. 如果是docker exec命令进入容器,exit命令只会退出容器但不会停止容器;
Ctrl+P+Q容器不停止退出

容器启动与关闭

docker start 容器ID
docker restart 容器IDdocker stop 容器ID
docker kill 容器id  #强制停止容器

查询容器/镜像信息

docker inspect 容器id/镜像id

修改容器启动项

直接改配置文件

先停止容器,不然无法修改配置文件
配置文件路径为:/var/lib/docker/containers/容器ID
在该目录下找到一个文件 hostconfig.json ,找到该文件中关键字 RestartPolicy
修改前配置:“RestartPolicy”:{“Name”:“no”,“MaximumRetryCount”:0}
修改后配置:“RestartPolicy”:{“Name”:“always”,“MaximumRetryCount”:0}
最后启动容器

docker update

从update -h中可以看出docker update主要用于更新cpu和memory

容器数据卷和数据卷容器

数据卷

容器内数据直接映射到本地宿主机(将容器的某个目录挂载到宿主机的某个目录下)。

注意:

  • 可以挂载文件作为数据卷
  • 如果主机目录为空,即使对应容器目录不为空,那么容器目录会被删除;

数据卷容器

命名的容器挂载数据卷,其他容器通过挂载这个父容器实现数据共享,挂载数据卷的容器称为数据卷荣容器。

创建数据卷容器
启动centos01容器:
docker run -it --name -v centos01 /home/ceshi:/home centoscentos02继承自centos01:
docker run -it --name centos02 --volumes-from centos01 centos

此时centos02里面也有/home数据卷,也是挂载到宿主机/home/ceshi目录下,并且无论在容器centos01,centos02,还是宿主机对应的数据卷中修改数据,3者的数据卷都是同步更新的;

注意,此时再来一个容器centos03 --volumes-from centos01,然后删除centos01容器,centsos02,centos03的容器数据卷还是共享的;


docker网络

概述

安装Docker时,它会自动创建三个网络,bridge(创建容器默认连接到此网络)、 none 、host

host:容器将不会虚拟出自己的网卡,配置自己的IP等,而是使用宿主机的IP和端口。

Container:创建的容器不会创建自己的网卡,配置自己的IP,而是和一个指定的容器共享IP、端口范围。

None:该模式关闭了容器的网络功能。

Bridge:此模式会为每一个容器分配、设置IP等,并将容器连接到一个docker0虚拟网桥,通过docker0网桥以及Iptables nat表配置与宿主机通信。

以上都是不用动手的,真正需要配置的是自定义网络。


修改容器导致容器故障无法运行

使用docker cp命令

docker cp命令在容器关闭的情况下也可以使用,将导致容器故障的文件copy到宿主机下改好后copy回容器

docker cp  容器id:容器路径 宿主机路径

直接改配置文件

方法如上面

docker环境变量详解

使用Dockerfile制作镜像时,指定环境变量,docker run 时使用-e参数使用环境变量
Dockerfile使用ENV命令指定环境变量,进入容器后,可以通过linux env命令查看改环境变量

例如mysql容器,大致是Dockerfile中指定密码是环境变量MYSQL_ROOT_PASSWORD的值,然后docker run -e MYSQL_ROOT_PASSWORD=asdada时给容器的环境变量设置了value

注意,ENV指定的环境变量,也作用到容器,例如安装jdk

ADD jdk-15.0.2_linux-x64_bin.tar.gz /usr/local/myjava/ENV JAVA_HOME /usr/local/myjava/jdk-15.0.2
ENV PATH $JAVA_HOME/bin:$PATH

进入容器后,也可以直接使用java命令。



注意

  1. docker容器运行必须有一个前台进程,如果没有前台进程执行,容器认为空闲,就会自行退出;
  2. 有时候容器的时区不对,可以在docker run时指定时区,或者进入容器里面修改时区

docker入门、docker基本命令相关推荐

  1. Docker入门——Docker是什么

    最近在工作中使用到了Docker,尽管几年前就已经对这个名字并不陌生,但却一直没有花时间来理解它. 本文试图带着以下几个问题来认识一下Docker:Docker是怎么样出现的?Docker是什么?Do ...

  2. Docker入门知识|基本命令|数据卷|dockerfile|发布镜像|基本概念

    文章目录 Docker 一.概述 二.安装 基本安装 阿里云镜像加速 三.基本 1.镜像启动流程 2.工作原理 3.帮助命令 4.镜像命令 5.容器命令 6.其它常用命令 7.Portainer可视化 ...

  3. Docker入门-docker compose的使用

    Compose简介 Compose项目是Docker官方的开源项目,负责实现对Docker容器集群的快速编排.其代码目前在https://github.com/docker/compose 上开源. ...

  4. docker 入门 —— docker 镜像命令

    docker 镜像命令 文章目录 常用镜像操作命令 常用容器操作命令 1.`docker images` 列出本地主机上的镜像 1.1.参数: 2.`docker search 镜像名字` 搜索镜像 ...

  5. docker 入门 —— docker容器数据卷volumes-from

    文章目录 使用前说明: 1.启动一个父容器dc01 2.dc02.dc03继承自dc01 命令格式 操作步骤如下: 3.回到dc01可以看到dc02.dc03各自添加的都能看到 4.删除dc01,dc ...

  6. docker 入门 —— docker容器常用的操作命令

    文章目录 1.`docker run` 新建并运行容器 1.1.`--name 别名` 给容器起别名 2.`docker ps` 列出当前docker中 `正在运行` 的 `容器` 2.1.`dock ...

  7. Docker入门与实战讲解

    × 首页 博客 学院 下载 GitChat TinyMind 论坛 问答 商城 VIP 活动 招聘 ITeye CSTO 写博客 发Chat 登录注册 relax_hb的博客 RSS订阅 原 Dock ...

  8. Docker入门——官方文档学习记录1

    Docker入门 Docker 概述 优势: 体系结构 The Docker daemon The Docker client Docker Desktop Docker Registries Doc ...

  9. Docker入门(这篇真的够详细)

    Docker入门 文章目录 Docker入门 docker的感性认识 docker的优势 感受一下docker的便利性 一.docker的核心技术 Namespaces 1.UTS Namespace ...

  10. Day15(Js入门、jquery入门、ajax入门、前后端分离开发跨域问题、linux环境准备、jdk_tomcat环境搭建、docker介绍及应用(docker安装、基本命令、安装tomcat))

    js入门 js代码辅助 window–>preferences–>javaScript–>Content Assist .abcdefghijklmnopqrstuvwxyz alt ...

最新文章

  1. 第十二单元文件的归档/压缩/传输
  2. 坚持c++,真正掌握c++(4)
  3. php+管道+pipe管道,angular2+管道pipe
  4. 深度学习(七十一)3D CNN时空特征学习
  5. 【BZOJ3158】千钧一发,网络流之最大权闭合子图
  6. android 内存抖动_android内存泄漏怎么破?一招教你搞定!
  7. 浏览器在线PDF预览取消下载按钮
  8. 工具变量与两阶段最小二乘stata
  9. 使用Python Snap7读取西门子触摸板 Dint LReal(int double)数据
  10. Ubuntu系统中文输入法配置安装(谷歌拼音)
  11. 产品经理入门——必备技能之【产品运营】
  12. LVM 'Can’t open /dev/sdb1 exclusively. Mounted filesystem?' Problem
  13. MySQL 查询学生的总成绩并进行排名_MySQL查询各科成绩前三名的记录及排名(不考虑成绩并列情况)...
  14. MCU-LCD屏与RGB-LCD屏的区别?
  15. 安全模式启动电脑和正常启动有什么区别
  16. NTU-RGBD-120数据集
  17. 解决线程安全问题的两种办法
  18. 脸萌~基于SVG绘制
  19. 2020年下半年系统集成项目管理工程师上午试题解析(一)
  20. 如何发送和接收RTP封包的H264,用FFmpeg解码

热门文章

  1. pycharm看php文件是乱码,Jetbrains-PhpStorm2019.2中文乱码问题
  2. Keras 开发你的第一个 Python 深度学习项目
  3. java套接字通信_Java网络通信套接字 | 学步园
  4. NumpyML : Linear Regression
  5. Pyspark:电影推荐
  6. 易筋SpringBoot 2.1 | 第三十五篇:实战Aparche Maven 的核心概念与理论 Maven仓库管理 从入门到精通
  7. 丢弃法(基于MXNet)
  8. adult Income 一个人的年收入是由各种因素造成的。直观上,它受个人的教育水平、年龄、性别、职业等因素的影响。
  9. JSP概述--JSP的起源,本质,运行原理
  10. ajax 单击事件删除,AJAX删除事件与加载数据方法介绍