docker常用命令大全

本文详细介绍了Docker的基本操作,包括查看版本、信息、镜像、容器的管理,以及如何运行、启动、停止和删除容器。此外,还讲解了Dockerfile的使用,用于自动化构建镜像,并展示了docker-compose的配置和使用,用于管理多个服务。内容涵盖了Docker的常用命令和实践应用。
摘要由CSDN通过智能技术生成

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: # 代替image 直接帮我们打包dockersfile
        context: ./root/aa # dockerfile的上下文目录
        dockerfile: dockerfile # 指定dockerfile 文件名(如果是默认 dockerfile 的话不用填写)
      ports: # 表示需要映射的端口
        - "8080:8800"
        - "777:777"
      env_file:
        - ./mysql.env # 这个文件里面全是 MYSQL_ROOT_PASSWORD=10000 的key,value结构
      depends_on: # 代表这个服务启动需要其他服务启动后才能运行
        - mysql # 表示这个服务需要等mysql服务启动后才会启动
      volumes: # 映射卷
        - /root/apps:/user/local/tomcat # 宿主机路径:容器路径
        - aa:/usr/local/tomcat # 名称:容器路径 使用这种方式必须在下面手动声明卷名
      networks:
        - hello # 指定网络 需要在下面使用networks指令创建网桥
      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  # true表示使用指定卷名 必须在启动服务之前先通过docker volume 命令创建
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"
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值