安装docker

操作1:

1、由于我本来安装过一次,但失败了,所以要先卸载原来的版本

sudo apt-get remove docker docker-engine docker-ce docker.io

2、同时更新apt包

sudo apt-get update

3、安装下面的包——作用:允许 apt 包管理器通过 HTTPS 协议访问软件仓库

sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common

4、添加Docker官方的GPG密钥

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

(有时候不能成功,可以多试几次就好了)

5、 将Docker 的官方软件仓库添加到系统的软件源列表中

(以便后续可以通过 apt 包管理器安装和管理 Docker 软件包)

sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

后面继续操作,也都出现了问题,

这时候,在后面的报错中出现了

是有提示的

输入sudo apt-get install --fix-missing containerd.io后,重新上面的所有操作

就可以继续后面的操作了

6、再更新一下apt包索引

sudo apt-get update

7、安装最新版本的Docker CE

sudo apt-get install -y docker-ce

最后可以用systemctl status docker来看看是否成功

[!CAUTION]

1、解决docker下载速度过慢问题,更新源即可。
在/etc/docker/daemon.json中的{}添加:

"registry-mirrors": ["https://registry.docker-cn.com"]或者其他的源

没有daemon.json文件的可以自己创建

sudo vim /etc/docker/daemon.json——没有的话会自动创建的

格式:

1
2
3
{
"registry-mirrors": ["https://registry.docker-cn.com"]
}

2、上面的操作,我试了试很多的镜像源,在后面的操作中都是网络问题,没有成功

docker pull vuldocker/lamp——快速搭建一个Web的开发环境

1
2
3
4
5
6
docker run -d --name test -p 3000:80 vuldocker/lamp
//命令run 安装容器;
-d 参数 后台运行;
--name 取名字 取名为 test;
-p 参数 端口转发 将容器80端口转发到宿主机3000端口;
最后跟上镜像名

后面的操作:

我则是直接用了另一个命令load

我用的是其他人打包好的镜像下载下来了,

之后执行命令docker load --input dvwa.tar

然后看看是否加载成功docker images

最后启动容器docker run --rm -it -p 80:80 vulnerables/web-dvwa

运行后,如果在本机上运行的话,可以看运行后给的ip地址,输入即可访问

如果是在其他电脑上访问的话,就是要输入本机的ip地址了

登录后,就是一个setup.php页面,默认账号密码admin,password

[!TIP]

——如果你之前安装过apache2 ,可能80端口被占用了而导致出现问题

sudo systemctl stop apache2来停止运行,

同时如果是开机自启动的,可执行sudo systemctl disable apache2来停止

停止靶场:sudo stop ID(或者容器名)(也可以在运行进程的终端上,Ctrl+C结束进程)

开始靶场sudo start ID(或者容器名)

暂停:docker pause dvwa,恢复sudo docker unpause dvwa

sudo docker images——查看有什么容器

sudo docker ps——查看什么容器正在运行

docker

框架

  • 镜像(image):是个只读模版,可以用来创建Docker容器(1个/多个)

    • sudo docker images——查看有什么容器

    • 创建

      • Dockerfile创建

        • //dockerfile,以ubuntu+python为例
          #1. 选择基础镜像
          FROM ubuntu:22.04/php:7.4-apache
          
          #2 维护者信息(可选)
          LABEL maintainer="your-email@example.com"
          
          #3 设置工作目录(如果是想复制网上环境到本地环境,记得保持环境目录一致)
          WORKDIR /app
          
          #4 复制文件到镜像,这里是把当前目录的所有内容复制到镜像中
          COPY . /app
          
          #5 安装依赖
          RUN apt-get update && \
              apt-get install -y python3 python3-pip && \
              apt-get clean
              
          #6 安装Python依赖/PHP的依赖管理工具Composer等等
          RUN pip3 install -r requirements.txt
          
          #7 暴露端口
          EXPOSE 8080
          
          #8 设置环境变量
          ENV NODE_ENV production
          
          #9 容器启动命令(可选)
          CMD ["python3", "app.py"]
          
          
          
          指令	用途	示例
          FROM	基础镜像	FROM node:18-alpine
          RUN	执行命令	RUN npm install
          COPY	复制文件	COPY . /app
          ADD	复制+解压	ADD app.tar.gz /app
          CMD	容器启动命令	CMD ["npm", "start"]
          ENTRYPOINT	入口点	ENTRYPOINT ["python3"]
          ENV	环境变量	ENV PORT=8080
          ARG	构建参数	ARG VERSION=1.0
          EXPOSE	声明端口	EXPOSE 80
          VOLUME	挂载点	VOLUME /data
          
          
          //构建命令
          #构建镜像(当前目录要有Dockerfile)
          sudo docker build -t my-image .
          #指定Dockerfile路径(可选)
          sudo docker -t my-image -f ./Dockerfile
          
          sudo docker run -d -p 8080:80 --name my-image-test my-image 
          
          1
          2
          3
          4
          5
          6
          7
          8
          9
          10
          11
          12
          13
          14
          15
          16
          17
          18
          19
          20
          21
          22
          23

          - 容器(container):运行实例,可以被启动、开始、停止、删除;每个容器可以看做是一个简易版的Linux环境

          - `docker run (--rm) -it -p 80:80 (container's name)`——启动容器(`--rm`停止运行后,自动删除容器)

          - `sudo docker ps (-a)`——查看有什么容器在运行(所有容器)

          - `sudo stop ID(或容器名)`停止(不会删除容器)

          - `docker --rm 容器名`删除·
          - `docker container prune`删除所有停止的容器
          - `docker commit 容器名 new_image`(停止也可以commint)创建新的image

          - `sudo start ID(或容器名)`开始

          - `docker pause 容器名`——暂停,`sudo docker unpause 容器名`——恢复

          - 容器中**执行cmd**

          - ```bash
          sudo docker exec -it <容器名> 命令

          eg:sudo docker exec -it smarty-test ls -la templates_c/
  • 仓库(repository):集中存放镜像文件的地方.

    • sudo docker images就是查看本地镜像的仓库信息(REPOSITORY列是镜像的仓库名)
    • docker search 镜像名在Docker Hub上搜索镜像
    • docker inspect 镜像名或ID完整的信息,包括仓库

镜像的拉取

docker pull+ Docker Hub的地址/完整仓库地址

也可以本地导入(要已有镜像文件的压缩包)

docker load -i /path/to/your_image_file.tar

(latest标签指向的版本可能会变动,不推荐在生产环境中使用,以免因版本差异导致意外问题)