Docker工作原理:
理解技巧:镜像是模板,容器是实例,镜像类似于Java的类,容器就是类对象new出来的实例。
百度云脑图下载:链接:https://pan.baidu.com/s/11ts5nkdlyFed1fxbFymwtw
提取码:oyzm
一.帮助启动类命令:
systemctl start docker #启动docker
systemctl stop docker #停止docker
systemctl restart docker #重启docker
systemctl status docker #查看docker状态
systemctl enable docker #开机启动
docker info #查看docker概要信息
docker --help #查看docker总体帮助文档
docker 具体命令 --help #查看docker命令帮助文档
二.镜像命令:
1.查看本地镜像
docker images #列出本地主机上的镜像
options说明: -a: 列出本地所有的镜像(包括历史映像层)
-q: 只显示镜像ID
2.搜索镜像
docker search 某个XXX镜像名字
option说明: --limit:只列出N个镜像,默认25个
docker search --limit 5 redis #只列出前5个redis,一般选第一个官方的即可
3.下载镜像到本地
docker pull 镜像名字[:TAG] #拉取指定版本号的镜像到本地,TAG是docker search后得到的,不加TAG就是默认拉取最新版本
docker pull redis # 拉取redis,默认最新
docker pull redis:6.0.8 #指定拉取6.0.8版本redis
4.查看docker的东西占用内存空间
docker system df #查看镜像/容器/数据卷所占的空间
5.删除镜像
docker rmi 某个xxx镜像名字 #删除指定名字的本地镜像
docker rmi 某个镜像XXX的ID #删除指定镜像ID的镜像
删除单个:docker rmi -f 镜像ID # 加-f强制删除
删除多个:docker rmi -f 镜像名1:TAG 镜像名2:TAG 或 docker rmi -f 镜像ID1 镜像ID2 镜像ID3
删除全部:docker rmi -f $(docker images -qa)
虚悬镜像建议删除:docker images后出来的镜像中仓库名和标签都是none的镜像
三.容器命令:
1.启动容器
docker run [options] IMAGE [其他命令] [其他参数] #启动容器
options说明(常用):有些是一个减号,有些是两个减号
--name='容器新名字' :为容器指定一个名称
-d: 后台运行容器并返回容器ID,也即启动守护式容器(后台运行)
-i:以交互模式运行容器,通常与-t同时使用
-t:为容器重新分配一个伪输入终端,通常与i同时使用;
也即启动交互式容器(前台有伪终端,等待交互)
-P:随机端口映射,大写P
-p:指定端口映射,小写p
启动交互式容器(前台命令行):
docker run -it --name=mycentos centos /bin/bash # 使用镜像centos:latest以交互模式启动一个容器,指定容器名字叫mycentos,并在容器内执行/bin/bash命令;-i是交互模式,-t是终端。
外部访问redis时,先通过docke端口映射获得里面的redis暴漏的端口,然后对应起来:
2.查看容器
docker ps [options] #显示当前正运行的容器
options说明:-a :列出当前所有正在运行的容器+历史上运行过的。
-l: 显示最近创建的容器。
-n: 显示最近n个创建的容器。
-q: 静默模式,只显示容器编号。
3.退出容器
!!!输入exit回车退出交互模式,容器会停止,按ctrl+p+q退出交互模式,容器不会停止!!!
4.启动已经停止的容器
docker start 容器ID或容器名
5.重启容器
docker restart 容器ID或容器名
6.停止容器
docker stop 容器ID或容器名
7.强制停止容器
docker kill 容器ID或容器名
8.删除’已经停止的’容器
docker rm 容器ID或容器名 #如果容器正在运行,则无法删除,需要先停止或者加-f强制删
docker rm -f $(docker ps -a -q) #一次性删除多个容器实例
docker ps -a -q | xargs docker rm #xargs是linux可变参数,左边值传给xargs,然后xargs再传到右边的命令
9.容器重点注意!!!
a.启动容器:docke run -d 容器名/容器ID #如果没有前台进程的不能用这个方式启动,一般MySQL、redis、nginx等有前台进程需要用这种方式启动,否则用-it的方式启动,如果退出交互模式后容器也会停止。
redis前后台启动演示: 前台交互启动:docker run -it redis /bin/bash---->退出交互模式后容器也会停止,docker ps没东西
后台守护式启动:docker run -d redis -----> 启动后再进入交互模式就行:docker exec -it 容器ID /bin/bash
b.查看容器日志
docker log 容器ID :比如启动redis失败,可以用这个命令查看启动时的出错日志
c.每个容器都可以看作是一个简易版的Linux环境(包括root用户权限,进程空间,用户空间和网络空间等)和运行在其中的应用程序。
docker top 容器ID #查看容器内正在运行的进程
docker inspect 容器ID #查看容器内部细节信息
d.后台守护式启动的容器,重新进入交互模式
docker exec -it 容器ID /bin/bash #在容器中打开新的终端,并且可以重新启动新的进程,用exit退出不会导致容器停止
docker attach -it 容器ID #直接进入容器启动命令的终端,不会启动新的进程,用exit退出会导致容器停止
推荐用第一种方式进入交互模式
e.容器内拷贝文件到主机
docker cp 容器ID:容器内路径 目标主机路径 # 把容器的文件拷贝到目的主机,避免容器被删除后里面的重要资料丢失,相当于备份
f.导出和导入容器
docker export 容器ID > 文件名.tar # 把整个容器备份成tar文件,当前路径下
docker cat 容器文件名.tar | docker import - 镜像用户/镜像名:镜像版本号 #import从tar包中的内容创建一个新的文件系统再导入为镜像
四.commit命令,提交容器副本使之成为一个新的镜像
docker commit -m="提交的描述信息" -a="作者" 容器ID 要创建的目标镜像名:[标签名]
案例演示:ubuntu安装vim
1.从Hub上下载Ubuntu镜像到本地并成功运行
2.原始的默认Ubuntu镜像是不带vim命令的
3.外网连通的情况下,安装vim
4.安装完后commit我们自己的新镜像
5.启动我们的新镜像,里面是带有vim命令的
docker pull ubuntu
docker run -it ubuntu /bin/bash #下载并运行Ubuntu
apt-get update #先更新下载工具
apt-get -y install vim #运行在Ubuntu里面安装vim工具
**安装完不要用exit退出Ubuntu,不然容器也会停止,用ctrl+q+p退出,让Ubuntu容器继续后台运行**
docker ps #得到上面已经安装好了vim的Ubuntu容器的id
执行commit命令生成自己的新镜像
docker commit -m="安装了vim工具" -a="李先生" 31cee62cf2fe myunbuntu:1.1.0
五.镜像分层概念