docker
1、docker常用指令
# 查看版本号
docker version
# 查看当前docker信息
docker info
# 查看所有镜像
docker images | docker image ls
// -a 查看运行和非运行的容器
// -q 返回正在运行的容器id
// -qa 返回所有容器的id
# 拉取一个镜像
docker pull 镜像名称
# 删除一个镜像
docker rmi 镜像名称
# 强制删除一个镜像
docker rmi -f 镜像名称
# 运行一个容器
docker run 镜像名称
// -p 将宿主机端口和容器端口进行映射 例子 docker run -p 8080(系统端口):8080(docker端口)tomcat
// -d 代表后台运行
// --name 表示给容器取一个名字
// -v 宿主机目录(绝对路径):容器内目录 实现宿主机目录和容器内目录的文件共享 会清空容器本身目录的数据,一般对容器进行写操作的时候使用
// -v 别名:容器内目录 使用别名可以自动创建映射卷并且不会清空原本容器的数据 创建在目录是 /var/lib/docker/voilumes/别名 一般对容器进行读操作的时候使用,对容器数据进行持久化
// // -v 宿主机目录(绝对路径):容器内目录:ro 表示容器内的目录只能读而不能写,就是容器内的目录发生改变无法影响到宿主机目录改变
// --network 网桥名称 可以指定容器使用的网桥
# 启动一个容器
docker start 容器名字或者容器id
# 重启一个容器
docker restart 容器名字或者容器id
# 正常停止一个容器
docker stop 容器名字或者容器id
# 立即停止一个容器
docker kill 容器名字或者容器id
# 删除一个容器
docker rm -f 容器id或者容器名字
# 删除所有容器
docker rm -f $(docker ps -aq)
# 查看容器内的进程
docker top 容器id或者容器名字
# 查看容器内部细节
docker inspect 容器id
# 查看容器的运行日志
docker logs [option] 容器id 或者容器名字
// -t 加入时间戳
// -f 跟随最新的日志打印
// --tail 数字 显示多少条
# 与容器内部进行交互
docker exec -it 容器id或者容器名字 bash
// bash表示容器内部的命令行。 每个容器都是一个小型的linux 系统
# 容器与宿主机之间复制文件
docker cp 文件|目录 容器id:容器路径
docker cp 容器id:容器资源路径 宿主机路径
# 与数据卷volum实现与数组机共享目录
docker run -v 宿主机路径|任意别名:容器内路径 镜像名
// 如果是宿主机路径必须是绝对路径,宿主机目录会覆盖容器内目录内容
// 如果是别名会在docker运行容器时自动在宿主机创建一个目录,并将容器目录文件复制到宿主机当中
# 打包镜像
docker save 镜像名 -o 名称.tar
# 载入镜像
docker load -i 名称.tar
# 容器打包成新的镜像
docker commit -m "描述信息" -a "作者信息" (容器id或者名称) 打包的镜像名称:标签
# 查看所有网桥
docker network ls
# 删除一个网桥
docker network rm 网桥名称
# 创建一个网桥
docker network create 网桥名称
# 查看数据卷
docker volume ls
# 查看数据卷细节
docker volume inspect 卷名
# docker file 指令
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-m4nDDiX3-1633094934964)(https://i.loli.net/2021/09/09/fxVye2DM3LFg4RH.png)]
# 构建一个dockerfile
docker build -t 生成出来的镜像名称:版本号 dockerFile文件
# dockerfile 文件内写法
# 依赖镜像
FROM 依赖的镜像。
# 执行语句
RUN 执行的语句
// 可以在执行镜像的时候对容器内执行对应的语句 (shell脚本 )
# 暴露端口
EXPOSE 端口号
// 可以将我们生成的容器的端口进行暴露,在run容器的时候使用 -p 端口映射来进行映射
# 设置进入容器后的工作目录
WORKDIR 路径
// 如果书写的是相对路径,则会在上一个路径下面相对(workdir可以重复使用)
# 将文件拷贝进容器
COPY 文件路径 镜像内路径
// 一般来说文件路径建议填写相对相对路径。因为dockerfile打包时会存在上下文路径。
ADD 路径|url 镜像内路径
// ADD命令可以对下载链接进行下载然后存入镜像内
# 指定允许挂载的路径
VOLUME ["路径"]
// 只有明确在之类说明的路径才可以进行挂在
# 新建一个变量(公共变量)
ENV 变量名 值
// 用 $变量名 的方式进行使用
# 容器运行后执行指令
ENTRYPOINT 指令
// 一般用来写固定写死的东西
# cmd容器运行后执行
CMD 指令
// 只能使用一个cmd指令,多个cmd指令以最后一个指令为准
// 可以在运行的时候手动将指令进行替换
// 一般用来传参 在cmd命令的上面使用 entrypoint["指令"] cmd["传参"]
docekr-compose
version: "3.0"
services:
tomcat:
container_name: memeda
image: "tomcat"
build:
context: ./root/aa
dockerfile: dockerfile
ports:
- "8080:8800"
- "777:777"
env_file:
- ./mysql.env
depends_on:
- mysql
volumes:
- /root/apps:/user/local/tomcat
- aa:/usr/local/tomcat
networks:
- hello
healthcheck:
test: ["CMD","curl","-f","http://localhost"]
interval: 1m30s
timeout: 10s
retries: 3
sysctls:
- net.core.somaxconn=1024
- net.ipv4.tcp_syncookies=0
ulimits:
nproc: 65535
nofile:
soft: 20000
hard: 40000
volumes:
aa:
external:
true
networks:
hello:
external:
true
docker-compose
# 运行docker-compose文件
docker-compose up // 如果文件名不是 docker-compose.yml 的话需要-f指定文件
// 指定文件名 -f 文件名
// 指定项目名 -p 项目名
// 所有容器后台运行 -d
# 停止所有容器
docker-compose down
# 进入指定的容器
docker-compose exec 服务id bash
# 查看项目中所有的容器
docker-compose ps
// -q 只打印容器id
# 重启项目中的服务
docker-compose restart 服务
// -t 指定重启前容器的超时时间 (认识10秒)
# 删除所有停止状态的服务
docker-compose rm service
// -f 强制删除
// -v 删除容器 挂在的数据卷(谨慎操作)
// 推荐先执行 docker-compose stop 来停止容器
# 启动or停止
docker-compose start
// 启动一个容器
docker-compose stop
// 停止一个容器 (-t 设置超时时间)
# 查看各个服务容器内运行的进程
docker-compose top
# 恢复处于暂停状态的服务
docker-compose unpause
# 查看某个容器的日志
docker-compsoe logs [容器id]
docker-portainer
# 下载镜像
docker pull portainer/portainer
# 原生启动
docker run -d
-p 8000:8000
-p 9000:9000
--name=portainer
--restart=always
-v /var/run/docker.sock:/var/run/docker.sock
-v portainer_data:/data
portainer/portainer
# 通过docker-compose.yml启动
portainer:
image: portainer/portainer
container_name: portainer
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- portainer_data:/data
networks:
- hello
ports:
- "8000:8000"
- "9000:9000"
|