IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> docker常用命令大全 -> 正文阅读

[系统运维]docker常用命令大全

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"
  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2021-10-02 15:13:35  更:2021-10-02 15:15:19 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 17:57:02-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码