Docker 学习笔记
0x00 闲扯
因为要学内网,自己电脑又带不动,所以整了台学生机,发现docker和linux会的内容都太浅显了,还是再多学一点。
0x01 概念
Docker是基于go语言的,并遵从 Apache2.0 协议开源。它可以可以打包应用发布也可以虚拟化。它可以在物理机、虚拟机、云服务器上使用。
仓库(Repository):用来保存镜像;
镜像(Image):可以通过镜像创建对应的容器,它就像是容器的模板;
容器(Container):容器就像是镜像实例化后的实体,可以被创建、启动、暂停、停止、删除。
Docker Registry:一个 Docker Registry 中可以包含多个仓库(Repository);每个仓库可以包含多个标签(Tag);每个标签对应一个镜像。
通常,一个仓库会包含同一个软件不同版本的镜像,而标签就常用于对应该软件的各个版本。我们可以通过 <仓库名>:<标签> 的格式来指定具体是这个软件哪个版本的镜像。如果不给出标签,将以 latest 作为默认标签。
0x02 命令
怎么安装在我的另一篇文章里有:Kali 2020 搭建vulhub
docker search xxx
:从公开仓库查找镜像
NAME: 镜像仓库源的名称
STARS: 类似 Github 里面的 star,表示点赞、喜欢的意思。
OFFICIAL: 是否 docker 官方发布
AUTOMATED: 自动构建。
DESCRIPTION: 镜像的描述
docker login/logout
:登陆/出一个Docker镜像仓库,未登陆时默认为官方仓库
docker login -u root -p passwd
(账号在官网上创建https://hub.docker.com/)
OPTIONS说明:
-u :登陆的用户名
-p :登陆的密码
docker pull ubuntu
:拉取镜像(默认是下的最新版)
我们先用这条命令看看所有的镜像,可以看到多了一个ubuntu:
docker images -a
:列出本机上所有的镜像
docker push
: 将本地的镜像上传到镜像仓库,要先登陆到镜像仓库
我们经常在安装完之后都要使用这条命令判断我们的docker安装好了没:
docker run ubuntu /bin/echo "Hello world"
:创建容器并执行命令
docker:docker的二进制文件;
run:运行容器
ubuntu:指定镜像,如果不存在会自动下载,默认是最后一个版本,可以通过ubuntu:标签(标签就是版本号)来指定;
/bin/echo "Hello world":指定容器里要执行的命令
docker run -i -t ubuntu /bin/bash
:创建新容器并进入交互模式
-i : 允许你对容器内的标准输入 (STDIN) 进行交互
-t : 为容器重新指定一个伪终端或终端,通常与 -i 同时使用
-d : 后台模式,不进入命令行
--name xxx: 指定name
-P: 随机端口映射,容器内部端口随机映射到主机的高端口
-p: 指定端口映射,格式为:宿主机端口:容器端口
exit: 退出容器并停止
crl+P+Q:不停止容器退出
docker start id/name
:启动一个已停止的容器
docker stop id/name
:停止容器
docker restart id/name
:重启容器(myubuntu是我在上一步创建容器时起的名字)
docker rm id
:删除容器,必须处于停止状态 -f 表示强制
docker rm $(docker ps -a -q)
:删除所有容器
docker pause/unpause name
:暂停/恢复进程
docker ps
:查看容器(默认是列出正在运行的,如果没有就只有列名)
参数:
-a :显示所有的容器,包括未运行的。
-l :显示最近创建的容器。
-n :列出最近创建的n个容器。
-f :根据条件过滤显示的内容。
列的含义:
CONTAINER ID: 容器 ID。
IMAGE: 使用的镜像。
COMMAND: 启动容器时运行的命令。
CREATED: 容器的创建时间。
STATUS: 容器状态。
状态有7种:
created(已创建)
restarting(重启中)
running(运行中)
removing(迁移中)
paused(暂停)
exited(停止)
dead(死亡)
PORTS: 容器的端口信息和使用的连接类型(tcp\udp)。
NAMES: 自动分配的容器名称。
docker version
: 查看版本
docker info
: 显示详细信息
docker port name
:列出指定容器的端口映射
docker 命令 --help
:帮助
docker exec -it id /bin/bash
:进入容器(从后台进入命令行)
docker export id xxx.tar
:导出容器快照
docker import - xxx
:导入快照到xxx镜像
docker save
: 将指定镜像保存成 tar 归档文件。
比如:docker save ubuntu:load>/root/ubuntu.tar
docker load
: 导入使用 docker save 命令导出的镜像。
比如:docker load<ubuntu.tar
docker container prune
:清除所有终止状态的容器
docker logs -f id/name
:查看容器日志
docker history
:查看镜像创建历史
-f: 输出容器内部的标准输出。
docker top name
:查看容器内运行的进程