docker入门、docker基本命令
文章目录
- @[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/
- 下载docker的依赖环境
yum install -y yum-utils device-mapper-persistent-data lvm2
- 设置yum源
阿里,推荐
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
- 安装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 判断安装是否成功
- 启动和开机启动
systemctl start docker
systemctl enable docker
关闭docker和静止开机自启
sudo systemctl stop docker
sudo systemctl disable docker
- 卸载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
注意:
- 通过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命令。
注意
- docker容器运行必须有一个前台进程,如果没有前台进程执行,容器认为空闲,就会自行退出;
- 有时候容器的时区不对,可以在docker run时指定时区,或者进入容器里面修改时区
docker入门、docker基本命令相关推荐
- Docker入门——Docker是什么
最近在工作中使用到了Docker,尽管几年前就已经对这个名字并不陌生,但却一直没有花时间来理解它. 本文试图带着以下几个问题来认识一下Docker:Docker是怎么样出现的?Docker是什么?Do ...
- Docker入门知识|基本命令|数据卷|dockerfile|发布镜像|基本概念
文章目录 Docker 一.概述 二.安装 基本安装 阿里云镜像加速 三.基本 1.镜像启动流程 2.工作原理 3.帮助命令 4.镜像命令 5.容器命令 6.其它常用命令 7.Portainer可视化 ...
- Docker入门-docker compose的使用
Compose简介 Compose项目是Docker官方的开源项目,负责实现对Docker容器集群的快速编排.其代码目前在https://github.com/docker/compose 上开源. ...
- docker 入门 —— docker 镜像命令
docker 镜像命令 文章目录 常用镜像操作命令 常用容器操作命令 1.`docker images` 列出本地主机上的镜像 1.1.参数: 2.`docker search 镜像名字` 搜索镜像 ...
- docker 入门 —— docker容器数据卷volumes-from
文章目录 使用前说明: 1.启动一个父容器dc01 2.dc02.dc03继承自dc01 命令格式 操作步骤如下: 3.回到dc01可以看到dc02.dc03各自添加的都能看到 4.删除dc01,dc ...
- docker 入门 —— docker容器常用的操作命令
文章目录 1.`docker run` 新建并运行容器 1.1.`--name 别名` 给容器起别名 2.`docker ps` 列出当前docker中 `正在运行` 的 `容器` 2.1.`dock ...
- Docker入门与实战讲解
× 首页 博客 学院 下载 GitChat TinyMind 论坛 问答 商城 VIP 活动 招聘 ITeye CSTO 写博客 发Chat 登录注册 relax_hb的博客 RSS订阅 原 Dock ...
- Docker入门——官方文档学习记录1
Docker入门 Docker 概述 优势: 体系结构 The Docker daemon The Docker client Docker Desktop Docker Registries Doc ...
- Docker入门(这篇真的够详细)
Docker入门 文章目录 Docker入门 docker的感性认识 docker的优势 感受一下docker的便利性 一.docker的核心技术 Namespaces 1.UTS Namespace ...
- Day15(Js入门、jquery入门、ajax入门、前后端分离开发跨域问题、linux环境准备、jdk_tomcat环境搭建、docker介绍及应用(docker安装、基本命令、安装tomcat))
js入门 js代码辅助 window–>preferences–>javaScript–>Content Assist .abcdefghijklmnopqrstuvwxyz alt ...
最新文章
- 第十二单元文件的归档/压缩/传输
- 坚持c++,真正掌握c++(4)
- php+管道+pipe管道,angular2+管道pipe
- 深度学习(七十一)3D CNN时空特征学习
- 【BZOJ3158】千钧一发,网络流之最大权闭合子图
- android 内存抖动_android内存泄漏怎么破?一招教你搞定!
- 浏览器在线PDF预览取消下载按钮
- 工具变量与两阶段最小二乘stata
- 使用Python Snap7读取西门子触摸板 Dint LReal(int double)数据
- Ubuntu系统中文输入法配置安装(谷歌拼音)
- 产品经理入门——必备技能之【产品运营】
- LVM 'Can’t open /dev/sdb1 exclusively. Mounted filesystem?' Problem
- MySQL 查询学生的总成绩并进行排名_MySQL查询各科成绩前三名的记录及排名(不考虑成绩并列情况)...
- MCU-LCD屏与RGB-LCD屏的区别?
- 安全模式启动电脑和正常启动有什么区别
- NTU-RGBD-120数据集
- 解决线程安全问题的两种办法
- 脸萌~基于SVG绘制
- 2020年下半年系统集成项目管理工程师上午试题解析(一)
- 如何发送和接收RTP封包的H264,用FFmpeg解码
热门文章
- pycharm看php文件是乱码,Jetbrains-PhpStorm2019.2中文乱码问题
- Keras 开发你的第一个 Python 深度学习项目
- java套接字通信_Java网络通信套接字 | 学步园
- NumpyML : Linear Regression
- Pyspark:电影推荐
- 易筋SpringBoot 2.1 | 第三十五篇:实战Aparche Maven 的核心概念与理论 Maven仓库管理 从入门到精通
- 丢弃法(基于MXNet)
- adult Income 一个人的年收入是由各种因素造成的。直观上,它受个人的教育水平、年龄、性别、职业等因素的影响。
- JSP概述--JSP的起源,本质,运行原理
- ajax 单击事件删除,AJAX删除事件与加载数据方法介绍