docker常用命令
docker常用命令
在网络安全工作时常会用到docker,因为需要搭建很多靶场或开发环境去复现漏洞以及搭建各种渗透工具都需要用到docker,docker很方便,也非常好用。
(由于众所周知的事情,国内docker镜像仓库都ban掉了,各位网上搜一下方法即可,或者直接买海外云机器搭来玩)
个人理解
对于docker的镜像与容器,可以理解成镜像就是我们vmware虚拟机装机需要的ios镜像,肯定是要有镜像你才能装系统,装好的系统能用了就是一个容器了, 所以docker中的镜像与容器就是这样。
容器开启了就代表你已经安装好了一个容器了,就相当于你把系统开机还是关机而已,所以一定不要把镜像和容器搞混,容器才是你真正要用的,并且docker有区分对容器和镜像的操作,简直不要太贴心,方便的一p。
我对docker的理解就是pull镜像,run容器,开机即用,可配置。
docker对于我来说简直就是无敌的存在,因为他搭建环境只需要寥寥几条指令即可搭建起来复杂的环境,这些都得益于docker社区的各位大佬的贡献。
镜像常用命令
-
docker search
只搜索官方仓库,官方仓库地址:https://hub.docker.com
比如:docker search tomcat
-
docker images
查看本地镜像列表,image就是镜像docker images
-
docker pull
拉取镜像
比如:docker pull nginx:lastest ,后面跟的是版本号,如果不写的话默认最新版本。
-
docker push
推送镜像,也就是说你自己设计好的镜像可以打包上传在docker官方仓库,但是这需要你注册账号才能推送。docker push
-
docker rmi
rm就是删除,rmi就是rm image删除镜像的意思,可以通过名字或者镜像的id号来删除。
比如:docker rmi nginx:latest 或者 rmi 镜像id。 #可以同时删除多个镜像: docker rmi nginx:latest tomcat:jre17-temurin-jammy
(注意:有对应的镜像运行起来的容器的话镜像是不能通过这条指令删除的,需要将容器停下来才能进行删除。查看容器:docker container ls这个属于容器的常用指令)
-
docker save
打包容器,我们一般打包为.tar.gz后缀,打包出来的压缩包可以通过docker load加载进来,很方便
比如导出镜像(压缩包)格式:docker save 镜像名称:版本 -o docker_nginx_latest.tar.gz
docker save nginx:latest -o docker_nginx_latest.tar.gz
-
docker load
导入镜像,通过docker save打包出来的压缩包,可以直接通过docker load进行加载,他会自动解压加载进你的docker服务中去。docker load -i docker_nginx_latest.tar.gz
容器常用命令
- docker run 运行一个新的容器
-d #将运行的容器放在后台 -p #端口映射 -p 宿主机端口:docker容器端口 -name #指定容器运行起来的名字 ,比如docker run -d -p 80:80 --name whoisdhan --link 关联容器 #比如你运行一个wordpress需要数据库,那么就可以运行wordpress之前运行一个数据库,然后再将wordpress将其与数据库连接关联起来 -e MYSQL_ROOT_PASSWORD #设置容器属性,这里-e也是--env,环境变量,可以通过该参数设置环境变量在容器中 -it #分配一个终端进入容器操作,在容器开启后也能使用:docker exec -it 容器id/容器名 bash,也可以在容器开启的时候同时进入:docker run nginx:latest -it bash
- 查看容器 docker ps == docker container ls
- -a
#不加参数就是查看up状态的容器 #加上参数-a或者--all为显示所有容器 #-a == --all docker ps -a docker container ls -a
- -q
#-q是只显示容器id docker ps -q docker container ls -q
- -a
- 杀掉容器
#强制关闭容器,尽量不要用,很容易就启动不了了 docker kill 容器id/容器名
- 启动容器
docker start 容器id/容器名
- 停止容器
docker stop 容器id/容器名
- 重启容器
docker restart 容器id/容器名
- 删除容器
docker rm 容器id/容器名 #结合docker ps 参数,反引号可以把内容当作linux命令执行 #意思是查出所有容器id然后docker rm删除掉所有容器,-f就是强制删除(注入这个-f参数是因为rm才表示强制删除,后面还有其他也会用到-f,都会因为指令不同的意思而随着变化) docker rm -f `docker ps -aq`
- 查看容器内的进程
docker top 容器id/容器名
- 查看容器资源占用
#不填直接docker stats就是查看所有容器的资源占用情况 docker stats 容器id/容器名
- 容器命令执行
docker exec -it 容器id/容器名 执行的命令
- 进入容器终端
docker exec -it 容器id/容器名 /bin/bash #进入容器后exit可退出
- 容器执行命令
docker exec -it 容器id/容器名 ls
- 进入容器终端
- 查看所有容器的ip地址
{{}}双括号就是docker的格式,照做就行,.Name就是容器名其他以此类推英文名可网上查,-f参数后面跟着的是一个Go模板字符串,该字符串定义了输出的格式。docker inspect -f '{{.Name}} => {{.NetworkSettings.IPAddress }}' $(docker ps -aq)
制作镜像上传
学习官方如何上传镜像的
#首先pull一个系统下来运行
docker pull debian:latest
docker run -it --name whoisdhan -p 88:80 debian:latest
# 进入容器,上面其实已经进入了,如果没有进入就执行下面
docker exec -it whoisdhan /bin/bash
#安装nginx
apt update
apt install nginx -y
#启动nginx
nginx
#退出容器
exit
# 打包上传之前先停止容器
docker stop whoisdhan
#注意:commit后面whoisdhan是填写刚刚debian容器的名字或者容器id,后面跟的是你在docker仓库的账号名,然后/后面是你设置的镜像名以及版本号
docker commit whoisdhan username/whoisdhan_nginx:1.0
#打包好后就可以上传了,首次登录需要进行输入密码,这里就看他提示就行了。
docker login
#登录号后就可以push了
docker push username/whoisdhan_nginx:1.0
docker compose
docker-compose.yml文件
了解docker-compose.yml文件,相当一个脚本执行你想执行的容器,统一管理,一步到胃~!
version: '3' # docker-compose.yml的文件格式版本
services:
db: #容器名称
image: mysql:5.7 #这里如果当前docker不存在该镜像就会尝试去拉取
restart: always # 开机自启动的意思
environment: #环境变量不多说了
MYSQL_ROOT_PASSWORD: 123456
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: 123456 # 和下面的WORDPRESS_DB_PASSWORD值要对应上
wordpress:
depends_on:
- db
image: wordpress:5.6
ports:
- "87:80" # 端口映射
restart: always
environment:
WORDPRESS_DB_HOST: db
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: 123456
docker-compose常用命令
这里在docker-compose 和 docker compose都是能使用的,没有中间-的是安装的插件,有-的是独立安装compose的,但是常用指令一样。
以下操均为操作你编写好的文件即当前目录下的.yml
#需要你当前目录下有.yml你编写好的文件
docker-compose up -d
#停止并删除容器
#(是一个用来关闭并删除由 docker-compose.yml 文件定义的所有服务的命令。它会停止并移除容器,移除网络和默认创建的挂载卷)
docker-compose down
#重启
docker-compose restart
#开启/停止容器
docker-compose start/stop
本文来自博客园,作者:竹等寒,转载请注明原文链接。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析