## <blockquote class="danger"><p>Docker命令【参考菜鸟教程:https://www.runoob.com/docker/docker-build-command.html】</p></blockquote>
## 通用命令:
Windows命令:
停止docker:``` Net stop com.docker.service ```
启动docker:``` Net start com.docker.service ```
Linux命令:
停止docker:``` systemctl start docker ```
启动docker:``` systemctl stop docker ```
重启docker:``` systemctl restart docker ```
docker设置随服务启动而自启动:``` systemctl enable docker ```
查看docker 运行状态:``` systemctl status docker ```
查看docker 版本号:``` docker version ```
查看docker 版本号:``` docker info ```
忘记某些命令时,进行查看与回顾:``` docker --help ```
如果忘记了 run命令 不知道可以带哪些参数 可以这样使用:``` docker run --help ```
## 镜像相关命令:
1. 删除镜像:``` docker pull 镜像 ```
2. 删除镜像:``` docker rmi 镜像名(镜像ID)```
3. 提交镜像:``` docker commit -m="提交信息" -a="作者信息" 容器名/容器ID 提交后的镜像名:Tag```
4. 将本地的镜像上传到镜像仓库,要先登陆到镜像仓库:```
docker push [OPTIONS] NAME[:TAG] ```
5. 删除多个镜像,用空格隔开即可:```
docker rmi -f 镜像名/镜像ID 镜像名/镜像ID 镜像名/镜像ID ```
6. 删除全部镜像 -a 意思为显示全部, -q 意思为只显示ID:```
docker rmi -f $(docker images -aq) ```
7. 强制删除镜像:```
docker image rm 镜像名称/镜像ID```
8. 强制删除全部镜像:```
docker rmi -f $(docker images -aq) --force```
9. 构建镜像(需要在Dockerfile同级目录下构建:说明(-t:设置 镜像的名字及tag)(最后的. 为当前目录)):```
docker build -t cat:1.0 .```
10. 强制删除镜像:```docker rmi 镜像名(镜像ID) --force```
## 容器相关命令:
1. 只看到正在运行的容器:``` docker ps ```
2. 查看所有容器:``` docker ps -a ```
3. 删除容器命令:【先停止容器:docker stop 容器名】
4. 删除全部容器命令:``` docker rm `docker ps -a -q` ```
5. 删除全部容器命令:``` docker rm `docker ps -a -q` ```
6. 强制删除全部容器命令:```docker rm `docker ps -a -q` --force```
7. 进入容器命令:
1:进入mysql命令: docker exec -it mysql(容器名或ID) /bin/bash
2:进入nginx命令: docker exec -it nginx(容器名或ID) /bin/bash【windows 使用git bash框输入时:winpty docker exec -it 容器名(容器ID) bash】
3:进入php命令: docker exec -it php(容器名或ID) /bin/bash
4:进入redis命令: docker exec -it redis(容器名或ID) /bin/bash
5:进入nginx命令: docker exec -it nginx(容器名或ID) /bin/bash
6:进入nginx后,不知道nginx配置文件位置: whereis nginx
7. 停止且删除指定容器命令:docker stop (容器名或ID) && docker rm (容器名或ID) (可直接删除: docker rm -f (容器名或ID))
8. 启动|关闭|重启容器:docker start|stop|restart 容器ID
9. 运行容器:docker run -it -d --name 要取的别名 镜像名:Tag /bin/bash
10. 退出容器:exit
## 容器日志相关命令:
1. 查询容器日志:``` docker logs (容器Name或CONTAINER ID) ```
2. 查询指定日志前多少条:``` docker logs 容器ID --tail=10 ```
## 其他相关命令:
1. 查询镜像版本:``` docker search(容器Name或CONTAINER ID) ```
2. 安装vim命令:``` apt-get update && apt-get install vim -y ```
3. 防火墙命令:
1.检验防火墙是否启动:firewall-cmd --state
2. 检查端口是否启动:firewall-cmd --permanent --zone=public --list-ports
3.开启 8080 端口:firewall-cmd --zone=public --add-port=8080/tcp --permanent
4.重新启动防火墙:firewall-cmd --reload
5.永久关闭防火墙:systemctl stop firewalld && systemctl disable firewalld
4. 查看Docker磁盘使用情况:docker system df
5. 删除名称或标签为none的镜像:docker rmi -f `docker images | grep '' | awk '{print $3}'`
6. 清除所有无容器使用的镜像 (只要是镜像无容器使用(容器正常运行)都会被删除,包括容器临时停止):docker system prune -a
7. 查找大文件:find / -type f -size +100M -print0 | xargs -0 du -h | sort -nr
8. 查找指定docker使用目录下大于指定大小文件:find / -type f -size +100M -print0 | xargs -0 du -h | sort -nr |grep '/var/lib/docker/overlay2/\*'
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>
- Docker容器化部署使用说明书
- 环境部署
- Windows系统
- Windows部署Docker
- 安装过程可能碰到的问题总结
- Docker部署环境
- Docker hub操作
- Docker 部署 laravel5.5问题总结
- Docker处理中文乱码问题
- Linux系统
- Centos7.2部署Docker
- Linux部署Docker准备前工作
- 部署docker问题总结
- Linux部署Docker粗略笔记
- 安装git
- Docker命令大全
- 问题
- php7.4 安装xlswriter扩展
- php7.2 DockerFile文件
- dockerFile和docker-composer区别
- docker-compose的使用
- docker-compose的使用问题总结
- docker-compose
- Windows系统
- docker-compose.yml编写
- nginx目录如下
- conf.d
- default.conf
- nginx.conf
- php目录如下
- Dockerfile
- redis目录如下
- redis.conf
- docker-compose使用说明
- Linux系统
- /workspace/html/config_dev
- html
- index.html
- index.php
- nginx
- conf
- nginx.production.conf
- conf.d
- default.conf
- log
- access.log
- error.log
- Dockerfile
- php
- conf
- php.production.ini
- php-fpm.conf
- log(目录)
- php-fpm.d
- www.conf
- supervisor
- conf
- log
- Dockerfile
- .env
- docker-compose.yml