目录
什么是docker?
docker就像是一个盒子
功能是将linux容器中的应用代码打包,可以轻松的在服务器之间进行迁移
提供了一种在安全,可重复的环境下自动部署软件的方式
类似沙盒的隔离机制(轻量虚拟机的感觉)
优势:
- docker解决了运行环境的问题,我在我机器上怎么运行,打包到另一个机器上还是怎么运行
- docker内的程序卡死了不会影响宿主机的程序,只要限制好docker机使用的资源
- 镜像可以生成多个容器独立运行,没有任何干扰.
docker仓库解决镜像传输的问题
换源:/etc/docker/目录下新建文件daemon.json(ps:要使用高权限,不然无法执行操作)
文件中写入
{
"registry-mirrors": [
"https://registry.docker-cn.com",
"https://pee6w651.mirror.aliyuncs.com"
]
}
保存退出即可
docker的网络模式
Bridge:虚拟出一个网卡,并配置一个个人ip,docker可以指定你想把容器内的某一个端口可以在容器所在主机
上的某一个端口它俩之间做一个映射
Host:和主机使用同一个网卡和ip
None:不与外界通讯
常用操作:
查看docker版本
docker version
帮助
docker run --help
重启docker服务
systemctl restart docker
搜索镜像:
docker search [关键字]
搜索结果的参数含义:
- NAME: 镜像仓库源的名称
- DESCRIPTION: 镜像描述
- OFFICIAL: 是否 docker 官方发布
- stars: 收藏数量。
- AUTOMATED: 自动构建
拉取镜像:
docker pull [options] NAME[:TAG]
通过此命令可以docker远程仓库拉取镜像到本地.
name是拉取镜像的名称,:TAG表示是可选的,如果不选表明时latest,如果选择表明是指定版本的.
options是拉取的一些参数.当不加请求地址的时候回去docker的官网(换源则去源地址)拉取镜像.
相关:
docker images 查看本地镜像
docker rmi [镜像id号] 删除镜像
运行:
docker run [options] IMAGE[:TAG] [COMMAND] [ARG..]
IMAGE是镜像的名字
COMMAND是运行起来的时候要执行什么命令.
ARG表示这条命令运行需要的参数.
事例:将docker放入容器运行
docker run -tid -p 8080:80 --name bugcrow medicean/vulapps:s_shiro_1 /bin/bash
参数分解:
-it 表示 与容器进行交互式启动
-d 表示可后台运行容器
-p 端口映射(宿主机无法直接访问到容器的端口,要将容器端口映射到宿主机)格式为宿主机端口:容器端口
--name 给要运行的容器 起的名字
/bin/bash 交互路径
这里是以medicean/vulapps:s_shiro_1镜像为基础生成名为bugcrow的可交互式容器放到后台运行,并将其80端口映射到主机的8080端口
这里插一句题外话:端口映射错了,我想复现shiro漏洞的,应该访问容器的8080端口
查看运行中的容器
docker ps
进入docker内部伪终端
docker exec -it [id号] bash
停止容器
docker stop 容器名
删除容器
docker rm 容器名(不能删除一个正在运行的容器,删除前要先对容器停止运行)
其他示例:
1.前台运行容器,ctrl+c可以停止运行
docker run hub.c.163.com/library/nginx
2.后台运行容器,前台不显示
docker run -d hub.c.163.com/library/nginx
3.在后台运行,开放主机8080端口映射到容器的80端口上.
docker run -d -p 8080:80 hub.c.163.com/library/nginx