docker 工作

#打包镜像 (两种写法)

docker save -o nginx.tar nginx:1.21.5

docker save nginx1.21.5 > nginx.tar

#上传镜像

docker load -i nginx.tar

docker load < nginx.tar

#简单启动run一下测试打包是否正常,docker是否可用

docker run -d -p 82:80 nginx:1.21.5

#常见启动run时使用的参数

--name=

-v 挂载 没有/就是卷挂载可以docker volume ls查到,有就是普通文件挂载

-d 后台启动

-p 指定端口映射

--restart=always

#进入容器内部

docker exec -it id /bin/bash

#想要修改里面容器里面的文件就提前挂载出来在外面修改

#部署私有镜像仓库

docker run -d -v /registry:/var/lib/registry -p 5000:5000 --restart=always --name=registry registry:latest

#删除容器

#写错名了删个容器

docker rm regietry

#删镜像

docker rmi registry:latest

#查看容器进程

docker top name

#上传镜像到仓库

#先打标签

docker tag nginx:1.21.5 127.0.0.1:5000/nginx:latest

#再上传

docker push 127.0.0.1:5000/nginx:latest

#查看是否上传成功

curl 127.0.0.1:5000/v2/_catalog

#docker常见命令

docker logs -f

docker images -q #获取镜像id

docker ps -q

docker ps -a

docker inspect

docker exec

dockers history 可以看到镜像构建的过程

docker stats 查看容器状态

docker volume ls 查看数据卷

#不像进容器内部只是执行一些查看命令(比如查看容器top)

docker exec -it name top

#查看容器镜像的占用信息

docker system df

#查看启动命令runlike

#先安装python环境

yum install python3 python3-pip -y

pip3 install runlike

echo 'export PATH=$PATH:/usr/local/bin' >> /etc/profile

source /etc/profile

#查看nginx容器启动时的容器参数

runlike nginx

#dockerfile------(解决镜像的一些构建问题)

执行命令

docker build 路径或url

# -f 参数可以指定哪个文件是dockerfile文件不用文件名是Dockerfile,后面都要跟上dockerfile所在目录路径

docker build -f /dockerfile-dir/test /dockerfile-dir

docker build -f /dockerfile-dir/test .

# -t 参数是构建镜像时给标签命名和版本,

docker build . -t centos:v1

#dockerfile内容

FROM 基于某个基础镜像开始构建

RUN 构建镜像时可以执行的命令

#RUN 两种写法,一种直接shell命令 一种用json格式"yum","install","-y","nginx",用shell就是用子进程可以基础前面设置的环境变量 ,而json会新开一个主进程之前的环境变量就失效了,推荐用shell

# 内有乾坤这个run,如果重复执行时会判断这个步骤也没有变如果变了就会执行,没变就会利用缓存(use cache),不仅是命令变,步骤变也一样相同命令原本是step2,变成3了也会重新执行**,是一旦哪一步开始变化后面的内容都会重新执行即使步骤和命令没变(所以要新增run内容最好在最后加)**

CMD ENTRYPOINT

#这是生产镜像最标准的写法:ENTRYPOINT 定程序,CMD 给默认参数。

#cmd会被参数覆盖,entrypoint不会

RUN = 做蛋糕的时候加面粉、奶油、水果,烤好就固定了

ENTRYPOINT = 蛋糕的主胚子,一直是它

CMD = 默认配的叉子,你想换勺子也可

LABEL 对镜像的一些描述

EXPOSE 对外暴露端口,只暴露不映射

ENV 环境变量

ARG 也是环境变量可以在构建时动态传参但也只有在构建时起作用build,

例: docker build . --build-arg=BUILD_VERSION=3.0

ADD #add,copy都可以传文件,但add可以自动解压,但有时会解压失败

COPY #所以更通常用copy然后用run解压

VOLUME /data

#就是把容器里的/data直接创建卷并挂载过去(默认在/var/lib/docker/volume/)

不能实现目录挂载,docker-compose.yml才可以

USER #指定某个用户执行run cmd ,entrypoint

WORKDIR #指定工作目录

onbuild 再执行基础镜像前需要执行的操作

healthcheck 健康检查

#docker-compose.yml------(镜像的使用)

#docker-compose应用

docker compose config 检查语法

docker compose up -d

#有时第一次构建错了,只改了文件就再次构建会有缓存任然拿旧镜像搞的一直错

可以加--build

#容器停止,down不要轻易用不然有一些数据卷会重启启动数据丢失

docker compose pause

#flask-web简单部署

version: "3.6" #必须

services: #必须

flask: #服务名自己取

build: . #dockerfile路径

ports:

  • 5000:5000

container_name: flask #镜像名

networks: #网络

  • web

redis:

image: redis #不用dockerfile就用image

container_name: redis2

networks:

  • web

volumes:

  • redis_data:/data #卷挂载

networks:

web:

driver: "bridge"

volumes: #创建卷

redis_data:

driver: "local"

相关推荐
老前端的功夫2 小时前
【Java从入门到入土】47:构建工具:Maven与Gradle的战争
java·python·maven
aaPIXa6222 小时前
C++模板元编程:在编译期完成计算,实现零运行时开销
java·开发语言·c++
夜郎king2 小时前
RuoYi-Vue3 企业级后台快速落地实战指南
java·开发语言
AI人工智能+电脑小能手3 小时前
【大白话说Java面试题 第156题】【06_Spring篇】第16题:Spring 用到了哪些设计模式?
java·spring·设计模式·代理模式·工厂模式
曹牧3 小时前
XML 解析过程中遇到 `org.xml.sax.SAXParseException
java·开发语言
想你依然心痛4 小时前
AtomCode 在 DevOps 场景中的实战:CI/CD 流水线脚本自动生成
运维·ci/cd·docker·devops·自动化部署·github actions
要开心吖ZSH4 小时前
处方物流信息同步优化:从 36 秒到亚秒级的踩坑记录
java·数据库·mysql·性能优化
Wang's Blog4 小时前
JavaWeb快速入门: MyBatis入门与实战
java·mybatis
EntyIU4 小时前
Java NIO 实战
java·开发语言·nio