这篇文章上次修改于 741 天前,可能其部分内容已经发生变化,如有疑问可询问作者。
0x01 安装Docker
yay -S docker
每次使用docker命令的时候都得添加sudo权限,否则就会报错: Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.38/images/json: dial unix /var/run/docker.sock: connect: permission denied ,因此,需要设置一下用户权限
# 创建docker组,有的会提示已经存在
sudo groupadd docker
# 将当前用户添加到docker组
sudo gpasswd -a 你的用户名 docker
# 重启生效,如果还是不行,就重启系统
sudo systemctl restart docker
0x02 优化Docker
2.1 换源
# 没有就创建这个文件,如果无法编辑,用命令chmod 777 daemon.json添加权限
vim /etc/docker/daemon.json
# 内容如下:
{
"registry-mirrors": [
"http://hub-mirror.c.163.com"
]
}
# 配置好了以后重启生效
sudo systemctl daemon-reload
sudo systemctl restart docker
如果需要更可靠的源,可以上阿里云申请一个自己的源,官网地址:https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors,左边菜单栏:镜像中心——镜像加速器,然后就能看到一个专属于你的加速地址
2.2 图形管理界面
官网地址:DockStation - Developing with Docker has never been so easy and convenient
DockStation是一个Docker 图形化客户端管理工具,图形化界面在 Linux 上还是比较方便的,感兴趣的同学可以体验一下:
0x03 安装docker compose
官网地址:https://github.com/docker/compose/releases
# 注意版本更新,我安装时版本为1.28.5
curl -L https://github.com/docker/compose/releases/download/1.28.5/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
# 给docker-compose执行权限
chmod +x /usr/local/bin/docker-compose
# docker-compose 基础命令
# 基本操作
docker-compose up -d
# 关闭并删除容器
docker-compose down
# 开启|关闭|重启已经存在的由docker-compose维护的容器
docker-compose start|stop|restart
# 运行当前内容,并重新构建
docker-compose up -d --build
0x04 基础命令
# 搜索镜像
docker search 关键词
#下载镜像
docker pull 镜像名
# 查看已下载的镜像列表
docker image ls
# 创建并使用容器
docker run -it --name 容器名 镜像名/镜像ID /bin/bash
# 查看当前容器
docker ps -adocker ps -a
# 统计信息
docker stats
# 启动容器
docker start 容器名/容器ID
# 重启容器
docker restart 容器名/容器ID
# 终止容器
docker stop 容器名/容器ID
# 终止所有容器
docker stop $(docker ps -aq)
# 连接容器
docker exec -it 容器名/容器ID /bin/bash
# 删除容器
docker rm 容器名/容器ID
# 删除所有容器
docker rm $(docker ps -aq)
# 删除镜像
docker rmi 镜像名/容器ID
# 删除所有镜像
docker rmi $(docker images -q)
# 端口映射:部署一个容器,并将80端口映射到宿主机的8000端口上
# 可以使用--name自定义部署的容器名
docker run -d -p 8000:80 --name 容器名 镜像名
# 也可以直接通过镜像部署
docker run -d -p 8000:80 镜像名
# dockerfile 部署镜像
docker build -t 自定义镜像名称
# docker-compose 部署
docker-compose up -d
# 构建新的镜像
docker commit -a "提交的镜像作者" -m "提交时的说明文字" 容器的ID 要创建的新的镜像
docker commit -a "国光" -m "wordpress_phpmyadmin" d64655e87ccc wordpress_phpmyadmin:v1
# 保存离线镜像
docker save -o 镜像文件名.tar 要保持的镜像
docker save -o wordpress_phpmyadmin.tar wordpress_phpmyadmin:latest
# 导入离线镜像
docker load --input 镜像文件名.tar
docker load --input wordpress_phpmyadmin.tar
# 挂载卷,以下是例子
docker run -d -p 9088:80 --name wordpress_phpmyadmin -v "`pwd`/mysql":/var/lib/mysql/ -v "`pwd`/app":/app/ wordpress_phpmyadmin:latest
0x05 Docker靶场操作中的常用命令
# 基本操作
docker run -d -p 物理端口1:容器端口1 -p 物理端口2:物理端口2 --name 容器名 <image-name>:<tag>
docker exec -it 容器名/ID bash
# 磁盘挂载
docker run -d -p 8080:80 -v 本机路径:容器路径 --name 容器名 <image-name>:<tag>
# 容器打包镜像
docker commit -a "作者" -m "备注" 容器ID <image-name>:<tag>
# 物理机拷贝到容器
docker cp test.txt 容器ID:/var/www/html
# 容器拷贝到物理机
docker cp 容器ID:/var/www/html/test.txt 物理机路径
# 查看容器
docker ps -a --no-trunc
# 停止所有容器 以此类推
docker stop $(dokcer ps -aq)
# 将容器打包成规范的镜像
docker commit <exiting-Container> <hub-user>/<repo-name>[:<tag>]
# 将镜像修改成规范的镜像
docker tag <existing-image> <hub-user>/<repo-name>[:<tag>]
# 登录 Docker Hub
docker login
# 上传推送镜像到公共仓库
docker push <hub-user>/<repo-name>:<tag>
# 当前目录的 Dockerfile 创建镜像
docker build -t <image-name>:<tag> .
# 指定文件构建镜像
docker build -f /path/to/a/Dockerfile -t <image-name>:<tag> .
# 将镜像保存 tar 包
docker save -o image-name.tar <image-name>:<tag>
# 导入 tar 镜像
docker load --input image-name.tar
0x06 参考
https://help.aliyun.com/document_detail/60750.html
没有评论