docker学习笔记(持续更新中)
### 一、啥子是docker
docker
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows操作系统的机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。---来自于百度百科
无论你学的是攻防技术还是编程,此篇文章都能帮你学习到docker的基本使用
由于本人比较懒而且每个看客使用的Linux系统不一样所以我就不再讲述如何安装docker,在各位看客学习docker之前需要先了解三个概念:镜像、容器、仓库
二、啥玩意儿是镜像
镜像
镜像可以简单的理解为手机上的软件安装包,不过这个安装包可以安装很多一样且相互独立的容器,我们创建or运行容器都需要我们的主机上存在镜像,有在docker hub上有官方以及众多用户发布的镜像
三、容器是啥,能吃吗
容器
容器我们可以简单理解为用QQ/微信多开器,都是应用且相互独立,结合上文对应的创建或者运行容器都需要我们主机上存在相应的镜像
四、这个仓库又双叒叕什么玩意儿
仓库
这个是仓库上有很多的镜像,我们用户可以往仓库上传自己制作好的镜像或者从仓库上下载其他人制作好的镜像,前提是你在docker hub注册并登录
在开始学习docker的基本命令之前我们得先学习一下基本的Linux命令,如果知道cd、rm、ls的看客了解就可以直接学习下面的docker基本使用命令了
ls的作用是列出当前目录下的文件、目录
ls
ls还有一些我们经常用到的参数作者就不在这多说了,如果想了解点击我
cd的作用是切换工作目录,通过上面我们知道当前目录下有桌面文件夹我们使用cd命令进入
cd 桌面
我们看到2比1多出了桌面二字代表我们已经进入桌面了,如果我们不知道自己在哪个目录可以通过pwd命令查看,cd ..是返回上一个目录
rm的作用是删除文件或者文件夹,rm常用的参数有-r、-f,-r的作用是将目录中的所有文件夹、文件逐一删除,-f是静默删除(使用-f之后系统不会询问你是否删除该文件或者要删除的文件不存在当前目录下系统也不会报错)
五、镜像的正确食用方法
镜像的基本命令
#当我们不知道docker的仓库有没有我们想要的镜像时我们就可以通过命令来搜索
docker search Ubuntu
NAME是镜像的名称,一般官方发布的镜像都会完全符合你搜索时的关键字
DESCRIPTION是镜像发布者对镜像的描述
STARS类似于我们朋友圈的点赞
OFFICIAL下有OK字样就代表是docker官方发布的镜像
AUTOMATED代表自动构建
虽然有search命令不过我还是推荐你们去docker hub查找因为他会列出可以下载的版本,通过search命令查找出来的是最新版本
# 下载镜像
docker pull Ubuntu:18.04
如果我们下载镜像不指定版本那么docker就会默认下载最新版
#查看本地镜像
docker images
REPOSITORY表示镜像的名称
TAG表示标签
IMAGE ID代表镜像的ID,每个镜像的ID都是不一样的
CREATED 代表镜像第一次下载时间
SIZE代表镜像的内存大小
记住下面这两个参数下面要用到
-a 显示全部
-q只显示镜像的ID
#删除镜像
docker rmi 镜像ID
#删除本地全部镜像
docker rmi $(docker images -qa)
这条命令的意思是,将docker images -qa传入docker rmi这个指令因此执行之后能清除全部的本地镜像
六、容器的正确食用姿势
容器的基本命令
#创建并启动容器
docker run -i -t --name test ubuntu:18.04 /bin/bash
-i代表你能和容器进行一个交互式操作
-t代表终端
--name test 代表给我们的容器起了个test的名称(适用于多个镜像运行时)
Ubuntu:18.04则是我们我们之前下载的镜像名:标签
/bin/bash代表交互式shell
docker run -itd 镜像名 /bin/bash
-d代表运行,使用此命令创建并启动容器后不会进入命令行界面而是后台运行
#启动容器后有三个方法可以退出容器
exit 退出并关闭容器
Ctrl+D 退出并关闭容器
Ctrl+p+q 退出不关闭容器
以上三种方式退出的方法各位看官分情况使用会使效率事半功倍
#查看容器
docker ps
打出指令之后我们发现啥也没有,其实这个命令只能查看那些正在运行的容器,要想看到那些停止运行的容器可以在ps后面加上-a参数这样我们就可以看到所有的容器了不管是在运行的或者是关闭的
加上-a参数之后我们就可以看到我们刚才启动容器时--name参数起的名称了,并且容器现在处于关闭状态
启动容器
docker start 容器ID
启动之后通过docker ps指令就能看到容器已经启动了,容器ID也可以替换成容器名称比如我上面的容器名称是test
停止容器
docker stop 容器ID
也是通过ps指令查看容器当前的状态,容器ID也可以替换成容器名称(前提是已经通过--name命名名称)
重启容器
docker restart 容器ID
七、我只进去,不蹭蹭
对于这种已经创建并且已经启动了的容器我们要怎么进入容器的命令行界面呢,下面介绍两种方式
- attach
- exec
具体的使用方式是这样的
docker attach 容器ID
docker exec -it 容器ID /bin/bash
两种都是进入容器的命令行界面的命令那有什么不同呢,我们使用两种方式进入后通过exit命令退出在使用ps命令,我们就能得知attach命令进入容器后使用exit命令退出后容器会停止运行,而exec命令不会
attach命令
exec命令
查看容器内的进程
docker top 容器ID/名称
导出容器快照
docker export 容器ID > Ubuntu.tar
上面的Ubuntu.tar可以替换成任意文件名
导入容器快照
docker import ./Ubuntu.tar
上面的./代表当前目录下,当然./Ubuntu.tar也可以替换成文件的目标网址
删除容器
docker rm -f 容器ID