多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
## <blockquote class="danger"><p>Docker命令【参考菜鸟教程:https://www.runoob.com/docker/docker-build-command.html】</p></blockquote> ## 通用命令: &nbsp;&nbsp;&nbsp;&nbsp;Windows命令: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;停止docker:``` Net stop com.docker.service ``` &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;启动docker:``` Net start com.docker.service ``` &nbsp;&nbsp;&nbsp;&nbsp;Linux命令: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;停止docker:``` systemctl start docker ``` &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;启动docker:``` systemctl stop docker ``` &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;重启docker:``` systemctl restart docker ``` &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;docker设置随服务启动而自启动:``` systemctl enable docker ``` &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;查看docker 运行状态:``` systemctl status docker ``` &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 查看docker 版本号:``` docker version ``` &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;查看docker 版本号:``` docker info ``` &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;忘记某些命令时,进行查看与回顾:``` docker --help ``` &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;如果忘记了 run命令 不知道可以带哪些参数 可以这样使用:``` docker run --help ``` ## 镜像相关命令: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1. 删除镜像:``` docker pull 镜像 ``` &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2. 删除镜像:``` docker rmi 镜像名(镜像ID)``` &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3. 提交镜像:``` docker commit -m="提交信息" -a="作者信息" 容器名/容器ID 提交后的镜像名:Tag``` &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;4. 将本地的镜像上传到镜像仓库,要先登陆到镜像仓库:``` docker push [OPTIONS] NAME[:TAG] ``` &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;5. 删除多个镜像,用空格隔开即可:``` docker rmi -f 镜像名/镜像ID 镜像名/镜像ID 镜像名/镜像ID ``` &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;6. 删除全部镜像 -a 意思为显示全部, -q 意思为只显示ID:``` docker rmi -f $(docker images -aq) ``` &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;7. 强制删除镜像:``` docker image rm 镜像名称/镜像ID``` &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;8. 强制删除全部镜像:``` docker rmi -f $(docker images -aq) --force``` &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;9. 构建镜像(需要在Dockerfile同级目录下构建:说明(-t:设置 镜像的名字及tag)(最后的. 为当前目录)):``` docker build -t cat:1.0 .``` &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;10. 强制删除镜像:```docker rmi 镜像名(镜像ID) --force``` ## 容器相关命令: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1. 只看到正在运行的容器:``` docker ps ``` &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2. 查看所有容器:``` docker ps -a ``` &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3. 删除容器命令:【先停止容器:docker stop 容器名】 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;4. 删除全部容器命令:``` docker rm `docker ps -a -q` ``` &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;5. 删除全部容器命令:``` docker rm `docker ps -a -q` ``` &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;6. 强制删除全部容器命令:```docker rm `docker ps -a -q` --force``` &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;7. 进入容器命令: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1:进入mysql命令: docker exec -it mysql(容器名或ID) /bin/bash &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2:进入nginx命令: docker exec -it nginx(容器名或ID) /bin/bash【windows 使用git bash框输入时:winpty docker exec -it 容器名(容器ID) bash】 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3:进入php命令: docker exec -it php(容器名或ID) /bin/bash &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;4:进入redis命令: docker exec -it redis(容器名或ID) /bin/bash &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;5:进入nginx命令: docker exec -it nginx(容器名或ID) /bin/bash &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;6:进入nginx后,不知道nginx配置文件位置: whereis nginx &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;7. 停止且删除指定容器命令:docker stop (容器名或ID) && docker rm (容器名或ID) (可直接删除: docker rm -f (容器名或ID)) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;8. 启动|关闭|重启容器:docker start|stop|restart 容器ID &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;9. 运行容器:docker run -it -d --name 要取的别名 镜像名:Tag /bin/bash &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;10. 退出容器:exit ## 容器日志相关命令: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1. 查询容器日志:``` docker logs (容器Name或CONTAINER ID) ``` &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2. 查询指定日志前多少条:``` docker logs 容器ID --tail=10 ``` ## 其他相关命令: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1. 查询镜像版本:``` docker search(容器Name或CONTAINER ID) ``` &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2. 安装vim命令:``` apt-get update && apt-get install vim -y ``` &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3. 防火墙命令: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1.检验防火墙是否启动:firewall-cmd --state &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2. 检查端口是否启动:firewall-cmd --permanent --zone=public --list-ports &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3.开启 8080 端口:firewall-cmd --zone=public --add-port=8080/tcp --permanent &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;4.重新启动防火墙:firewall-cmd --reload &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;5.永久关闭防火墙:systemctl stop firewalld && systemctl disable firewalld &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;4. 查看Docker磁盘使用情况:docker system df &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;5. 删除名称或标签为none的镜像:docker rmi -f `docker images | grep '' | awk '{print $3}'` &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;6. 清除所有无容器使用的镜像 (只要是镜像无容器使用(容器正常运行)都会被删除,包括容器临时停止):docker system prune -a &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;7. 查找大文件:find / -type f -size +100M -print0 | xargs -0 du -h | sort -nr &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;8. 查找指定docker使用目录下大于指定大小文件:find / -type f -size +100M -print0 | xargs -0 du -h | sort -nr |grep '/var/lib/docker/overlay2/\*' &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;9.docker-compose相关命令: docker-compose -h # 查看帮助 docker-compose version # 查看docker-compose是否安装成功(docker-compose版本) docker-compose ls # 查看正在运行的项目 docker-compose ls -a # 查看正在运行的项目,同时显示已停止的项目 docker-compose logs redis #查看 Compose 日志 docker compose images #列出创建的容器使用的图像 docker compose create # 为服务创建容器 docker-compose down # 停止并删除容器、网络 docker compose pause # 暂停服务 docker-compose -f docker-compose.yml up -d # -f 指定使用的Compose模板文件,默认为docker-compose.yml,可以多次指定 docker-compose up # 启动所有docker-compose服务 docker-compose up -d # 启动所有docker-compose服务并后台运行 docker-compose down # 停止并删除容器、网络、卷、镜像 docker-compose exec yml里面的服务id # 进入容器实例内部yml文件中写的服务id /bin/bash docker-compose ps # 展示当前docker-compose编排过的运行的所有容器 docker-compose top # 展示当前docker-compose编排过的容器进程 docker-compose logs yml里面的服务id # 查看容器输出日志 docker-compose config # 检查配置 docker-compose config -q # 检查配置,有问题才有输出 docker-compose restart # 重启服务 docker-compose start # 启动服务 docker-compose stop # 停止服务 docker-compose down && docker-compose up -d # 更新docker镜像及容器 docker-compose restart nginx(服务名) # 服务名称,注意不是docker-compose里面的别名 docker-compose restart php(服务名) # 服务名称,注意不是docker-compose里面的别名 ### <blockquote class="danger"><p>记住两个路径</p></blockquote> 1:进入容器后,查询nginx配置成功的欢迎html页面路径:cd /usr/share/nginx/html 下面有index.html(nginx欢迎界面),注意:此/usr/share/nginx下的除html目录外,一旦容器删除,就会全部删除其他目录 2:查询nginx主或子配置文件:vim /etc/nginx/nginx.conf(主配置文件) 或 cd /etc/nginx/conf.d(子配置文件) ### <blockquote class="danger"><p>注意事项</p></blockquote> 1:每次创建nginx容器后,检查STATUS(Up)是否开启:docker ps -a ,没有问题,启动容器:docker restart 容器ID 2:如果打开网站(域名),无法正常访问:使用命令:docker logs 容器ID(注意查询指定日志前多少条:docker logs 容器ID --tail=10),查询具体问题,解决 3:启动容器前,进入nginx内部容器中,使用nginx -t 命令检查是否出现报错问题,如果正常:可以启动容器(退出容器后执行),如果错误,先处理nginx报错问题,然后再启动容器 4:容器组成:镜像名称:镜像标签 5:解析:由于 docker 的运行模式是 C/S。我们本机是 C,docker 引擎是 S 6:使用下面的语句启动了另外一个nginx服务:docker run --name test -p:80:80 -d nginx ,如果显示Nginx标识,代表Nginx配置OK 7:说明 FROM 基础镜像,当前新镜像是基于哪个镜像的,指定一个已经存在的镜像作为模板,第一条必须是from MAINTAINER 镜像维护者的姓名和邮箱地址 RUN 容器构建时需要运行的命令 两种格式 shell格式(1) RUN yum -y install vim exec格式(2) ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"] 注意:RUN 是在 docker build时运行 EXPOSE 当前容器对外暴露出的端口 WORKDIR 指定在创建容器后,终端默认登陆的进来工作目录,一个落脚点 USER 指定该镜像以什么样的用户去执行,如果都不指定,默认是root ENV 用来在构建镜像过程中设置环境变量 ENV MY_PATH /usr/mytest 这个环境变量可以在后续的任何RUN指令中使用,这就如同在命令前面指定了环境变量前缀一样; 也可以在其它指令中直接使用这些环境变量, 比如:WORKDIR $MY_PATH ADD 将宿主机目录下的文件拷贝进镜像且会自动处理URL和解压tar压缩包 COPY 类似ADD,拷贝文件和目录到镜像中。 将从构建上下文目录中 <源路径> 的文件/目录复制到新的一层的镜像内的 <目标路径> 位置 COPY src dest COPY ["src", "dest"] <src源路径>:源文件或者源目录 <dest目标路径>:容器内的指定路径,该路径不用事先建好,路径不存在的话,会自动创建。 VOLUME 容器数据卷,用于数据保存和持久化工作 CMD 指定容器启动后的要干的事情 注意:Dockerfile 中可以有多个 CMD 指令, 但只有最后一个生效,CMD 会被 docker run 之后的参数替换 ### <blockquote class="danger"><p>创建容器</p></blockquote> 1. 创建容器: 创建php容器:7.4 docker pull php:7.4-fpm docker run --name myPhpDocker -p 2000:9000 -d -v /D/Docker/wwwroot:/wwwroot php:7.4-fpm【使用中】 1. 创建nginx容器: docker pull nginx:latest docker run --name myNginxDocker -p 3000:80 -d -v /D/Docker/wwwroot:/wwwroot -v /D/Docker/lnmp/nginx/conf:/etc/nginx/conf.d -v /D/Docker/lnmp/nginx/logs:/var/log/nginx --link myPhpDocker:php nginx【使用中】 1. 创建mysql容器:5.7.16-ucloudrel1-log docker pull mysql:5.7.16 docker run --name myMysqlDocker -p 4000:3306 -d -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7.16【使用中】 1. 创建redis容器:7.0 docker pull redis:7.0 docker run --name myRedisDocker -p 5000:6379 -d -v /D/Docker/lnmp/redis/redis.conf:/etc/redis/redis.conf --restart=always redis:7.0 redis-server --appendonly yes --requirepass "redis_123456" 1. 创建mongoDb容器: docker pull mongo:4.4.6 docker run --name myMongoDocker -p 6000:27017 -d -e MONGO_INITDB_ROOT_USERNAME=admin -e MONGO_INITDB_ROOT_PASSWORD=123456 mongo:4.4.6 <span style="color:red">进入mongoDb容器命令: docker exec -it myMongoDocker mongo admin</span>