Docker简介 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器或Windows 机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。
废话不讲辣么多,干就完事
首先dokcer 官方仓库是搭建在国外的,所以我们需要 换源 *参考博客?** https://blog.csdn.net/doudou_mylove/article/details/105122843 获取专属 docker 加速地址 为啥要强行修改dns 呢?可能我只是想解析的更快点吧,男人不能不行,倒是必须得快?
sudo vim /etc/docker/daemon.json
{
"registry-mirrors": [
"https://vipxxx.mirror.aliyuncs.com"
],
"dns": [
"223.5.5.5",
"8.8.8.8"
]
}
sudo systemctl restart docker docker.service
Mac docker 可以在docker desktop 设置里面修改
docker 拉取(pull) 推送(push) 的是 容器(image)
docker pull nginx:latest
docker push nginx:latest
docker 运行(run) 完成后建立的叫 容器(Apps /Containers )
docker run nginx:latest
docker run -it \
--name cs \
-e "passwd=你的密码" \
-e "server_ip=你的服务器IP地址,可以是内网地址,比如10.0.4.6" \
-e "server_port=cs指定登陆端口" \
-e "aliasname=Bing Wallpaper" \
-e "dname=CN=www.microsoft.com, OU=Microsoft Corporation, O=Microsoft Corporation,
L=Redmond, S=WA, C=US" \
-p cs指定登陆端口:cs指定登陆端口 \
-p 云函数专用,可以是任意端口,后面443不可改变:443 \
-p 随意端口号:随意端口号 \
-p cs指定登陆端口:cs指定登陆端口/udp \
-p 云函数专用,可以是任意端口,后面443不可改变:443/udp \
-p 随意端口号:随意端口号/udp \
xrsec/cobaltstrike:none
是不是看的一头雾水?别急 看这里
docker run -it \ # 为啥要加 ‘\’ ?方便多行输入
--name cs \ # --name 指定容器名称
-e "passwd=你的密码" \ # 设置容器需要的环境变量,有点麻烦,在容器内部 echo $passwd 输出的就是 你的密码
-e "server_ip=你的服务器IP地址,可以是内网地址,比如10.0.4.6" \ # 容器内部 echo $server_ip 输出的就是你设置的IP地址
-e "server_port=cs指定登陆端口" \ # 以下忽略
-e "aliasname=Bing Wallpaper" \
-e "dname=CN=www.microsoft.com, OU=Microsoft Corporation, O=Microsoft Corporation,
L=Redmond, S=WA, C=US" \
-p cs指定登陆端口:cs指定登陆端口 \ # -p是把外部主机的端口(前面) 映射到 容器内部的端口(后面)
-p 云函数专用,可以是任意端口,后面443不可改变:443 \
-p 随意端口号:随意端口号 \
-p cs指定登陆端口:cs指定登陆端口/udp \
-p 云函数专用,可以是任意端口,后面443不可改变:443/udp \
-p 随意端口号:随意端口号/udp \
xrsec/cobaltstrike:none
如果你们希望容器自动重启,可以设置 restart 参数
Docker容器的重启策略如下: no,默认策略,在容器退出时不重启容器 on-failure,在容器非正常退出时(退出状态非0),才会重启容器 on-failure:3,在容器非正常退出时重启容器,最多重启3次 always,在容器退出时总是重启容器 unless-stopped,在容器退出时总是重启容器,但是不考虑在Docker守护进程启动时就已经停止了的容器
docker run -it --name test --restart=always nginx:latest # 总是重启
docker run -it --name test --restart=on-failure:3 nginx:latest # 最多重启三次
docker container update --restart=always 容器名字 # 让不能自动重启的 容器升级 成为 自动重启的 容器
docker inspect -f "{{ .RestartCount }}" 容器名字 # 查看容器重启次数
docker inspect -f "{{ .State.StartedAt }}" 容器名字 #查看容器最后一次的启动时间
新建讲完了,那我们讲一下基础维护吧
docker images # 查看本机Docker中存在哪些镜像
docker search images # 搜索images
docker pull images # 拉取 images
docker ps # 列出当前所有正在运行的容器
docker ps -a # 列出所有的容器
docker inspect $CONTAINER_ID(容器的ID,可以通过docker ps 查看) # 查看容器的相关信息
docker rm 容器名称 # 删除容器
docker restart 容器名称 # 重启容器
docker stop 容器名称 # 停止容器
docker start 容器名称 # 启动容器
docker logs 容器名称 # 查看容器日志报错
docker image prune -af # 删除多余镜像
掌握了这些你们就是大佬了,再学下去我就要要饭了?
?就拿这个考验老干部?
讲的比较简单
FROM ubuntu:18.04 #
LABEL maintainer="xrsec" #
LABEL mail="troy@zygd.site" # 设置容器信息
RUN mkdir /awvs # 代表 新建镜像 的时候需要让 构建镜像 时的 开发工程师 创建一个文件夹 到 新建的镜像里面
COPY awvs.sh /awvs # 代表 新建镜像 的时候需要让 构建镜像 时的 开发工程师 复制awvs.sh 到 新建的镜像 新建的 awvs 文件夹里面
COPY Dockerfile /awvs # 代表 新建镜像 的时候需要让 构建镜像 时的 开发工程师 复制Dockerfile 到 新建的镜像 新建的 awvs 文件夹里面
COPY xaa /awvs #
COPY xab /awvs #
COPY xac /awvs #
COPY xad /awvs #
COPY xae /awvs #
COPY xaf /awvs #
COPY awvs_listen.zip /awvs # 以上类似
# init
# RUN cp /etc/apt/sources.list /etc/apt/sources.list.bak \
# && sed -i "s/archive.ubuntu/mirrors.aliyun/g" /etc/apt/sources.list \
# && sed -i "s/security.ubuntu/mirrors.aliyun/g" /etc/apt/sources.list \
# && apt update -y \ # 这里是害怕你们因为网络的问题下载不了软件
RUN apt update -y \
&& apt upgrade -y \
&& apt-get install wget libxdamage1 libgtk-3-0 libasound2 libnss3 libxss1 libx11-xcb-dev sudo libgbm-dev curl ncurses-bin unzip -y # 代表 新建镜像 的时候需要让 构建镜像 时的 开发工程师 运行这样一段安装软件的命令 把软件安装到 新建的镜像里面
# && apt-get install wget libxdamage1 libgtk-3-0 libasound2 libnss3 libxss1 libx11-xcb-dev sudo libgbm-dev curl ncurses-bin unzip -y \
# && mv /etc/apt/sources.list.bak /etc/apt/sources.list #
# init_install
RUN cat /awvs/xaa /awvs/xab /awvs/xac /awvs/xad /awvs/xae /awvs/xaf > /awvs/awvs_x86.sh \ # 代表 新建镜像 的时候需要让 构建镜像 时的 开发工程师 运行这样一段合并文件的命令 把文件合并到 新建的镜像的新建的 awvs 文件夹里面 并保存为 awvs_x86.sh
&& chmod 777 /awvs/awvs_x86.sh \ # 代表 新建镜像 的时候需要让 构建镜像 时的 开发工程师 运行这样一段改变文件权限的命令 怕新建的镜像运行新的容器的时候 运行不了这个脚本文件
&& sed -i "s/read -r dummy/#read -r dummy/g" /awvs/awvs_x86.sh \ # 替换awvs_x86.sh 里面的一些内容
&& sed -i "s/pager=\"more\"/pager=\"cat\"/g" /awvs/awvs_x86.sh \ #
&& sed -i "s/read -r ans/ans=yes/g" /awvs/awvs_x86.sh \ #
&& sed -i "s/read -p \" Hostname \[\$host_name\]:\" hn/hn=awvs/g" /awvs/awvs_x86.sh \ #
&& sed -i "s/host_name=\$(hostname)/host_name=awvs/g" /awvs/awvs_x86.sh \ #
&& sed -i "s/read -p \" Hostname \[\$host_name\]:\" hn/awvs/g" /awvs/awvs_x86.sh \ #
&& sed -i "s/read -p ' Email: ' master_user/master_user=awvs@awvs.com/g" /awvs/awvs_x86.sh \ #
&& sed -i "s/read -sp ' Password: ' master_password/master_password=Awvs@awvs.com/g" /awvs/awvs_x86.sh \ #
&& sed -i "s/read -sp ' Password again: ' master_password2/master_password2=Awvs@awvs.com/g" /awvs/awvs_x86.sh \ #
&& sed -i "s/systemctl/\# systemctl/g" /awvs/awvs_x86.sh \ #
&& /bin/bash /awvs/awvs_x86.sh # 初始化一下配置文件,因为awvs 不运行的话不生成文件之后激活无法进行
# init_listen
RUN chmod 777 /awvs/awvs.sh \ #
&& unzip -d /awvs/awvs_listen /awvs/awvs_listen.zip \ #
&& chmod 444 /awvs/awvs_listen/license_info.json \ #
&& cp /awvs/awvs_listen/wvsc /home/acunetix/.acunetix/v_210628104/scanner/ \ #
&& cp /awvs/awvs_listen/license_info.json /home/acunetix/.acunetix/data/license/ \ #
&& cp /awvs/awvs_listen/wa_data.dat /home/acunetix/.acunetix/data/license/ \ #
&& chown acunetix:acunetix /home/acunetix/.acunetix/data/license/wa_data.dat # 哗啦啦一套操作猛如虎
ENTRYPOINT [ "/awvs/awvs.sh"] # 设置镜像运行成为容器的时候开机要干的第一件事
EXPOSE 3443 告诉后面的兄弟记得开3443端口
# ENV TZ='Asia/Shanghai' # 设置时区以免时间问题
# ENV LANG 'zh_CN.UTF-8' # 设置中文以免乱码
STOPSIGNAL SIGQUIT # 我也不知道,嘤嘤嘤
CMD ["/awvs/awvs.sh"] # 设置镜像运行成为容器的时候开机要干的第一件事