目录
CI/CD,全称为持续集成/持续交付(Continuous Integration/Continuous Delivery/Deployment),是一种软件开发实践,旨在通过自动化和频繁地集成、构建、测试、部署软件来快速、高效地提供软件应用。
持续集成(CI)强调在开发过程中频繁地集成代码。每当团队成员向版本控制系统(如Git)提交代码更改时,CI系统会自动触发构建过程。这确保了代码在提交后能够立即集成,从而尽早地发现和解决集成问题。
持续交付(CD)则是CI的延伸,它强调在每次成功集成后,软件都能够被构建、测试并准备好交付给最终用户。CD的目标是将软件从开发环境快速、安全地部署到生产环境,从而缩短软件从开发到上线的时间。
为了实现CI/CD,需要采用一系列自动化工具和流程,包括版本控制系统、自动化构建工具(如Jenkins、Travis CI等)、自动化测试工具(如Selenium、JUnit等)和容器化技术(如Docker)等。这些工具和技术共同协作,使得CI/CD过程能够高效、稳定地运行。
总之,CI/CD是一种重要的软件开发实践,它通过自动化和频繁的集成、构建、测试、部署来提高软件开发的效率和质量,从而加速软件产品的交付和迭代。
DevOps 是一种集开发(Development)和运维(Operations)于一体的软件交付方法。它强调团队之间的协作与沟通,打破传统开发和运维之间的壁垒,使得软件开发、测试、部署和运维等各个环节更加紧密地连接在一起,从而实现更快速、更高效、更稳定的软件交付。
在 DevOps 文化下,开发人员和运维人员需要紧密合作,共同承担责任和风险。开发团队需要编写高质量的代码,并进行充分的测试,确保软件能够稳定地运行;而运维团队则需要提供强大的基础设施和自动化工具,支持开发团队快速部署和运维软件。
DevOps 还强调自动化和持续改进。通过自动化工具和技术,可以自动化地构建、测试、部署和监控软件,减少人为错误和重复劳动,提高软件交付的效率和稳定性。同时,DevOps 也鼓励团队进行持续改进和反思,不断优化软件交付流程,提高团队的协作和创新能力。
K8S,全称为Kubernetes,是一个开源的容器编排系统,用于自动部署、扩展和管理容器化应用程序。K8S由Google开发并捐献给云原生计算基金会(CNCF)进行开源维护。下面将分别介绍K8S的概念、作用、和原理。
概念:
* Kubernetes(K8S)是一个用于自动化部署、扩展和管理容器化应用程序的开源平台。
* 它提供了一种将多个容器组合成一个单独的、可管理的实体的方法,这个实体被称为Pod。
* K8S还提供了一个用于管理和调度这些Pods的集群架构,使得容器化应用程序可以在不同的主机和环境中进行部署和运行。
作用:
* 自动部署和扩展:K8S可以自动部署和扩展应用程序,根据实际需求动态调整资源分配。
* 服务发现和负载均衡:K8S为容器提供统一的服务发现和负载均衡机制,使得应用程序可以轻松地互相通信。
* 自我修复和自动恢复:K8S具有自我修复和自动恢复功能,可以自动检测和修复应用程序中的问题。
* 滚动更新和版本控制:K8S支持滚动更新和版本控制,使得应用程序的更新和升级更加平滑和可控。
原理:
* K8S基于主从架构,由一个主节点(Master)和多个工作节点(Worker)组成。
* 主节点负责管理整个集群的状态和配置,包括调度Pods、管理资源、监控集群健康状态等。
* 工作节点负责运行容器化应用程序,包括启动和停止Pods、监控容器状态等。
* K8S通过API服务器提供RESTful API接口,使得用户可以通过命令行工具kubectl或第三方管理工具与集群进行交互。
* K8S使用一系列控制循环来确保集群状态符合预期,包括复制控制器(ReplicaSet)、部署(Deployment)、服务(Service)等。
总之,K8S是一个强大的容器编排系统,它提供了一种简单而高效的方式来管理和部署容器化应用程序。通过自动化的部署、扩展、服务发现和负载均衡等功能,K8S可以帮助开发者和运维人员更加轻松地管理和维护大规模容器化应用程序。
Jenkins是一个开源的、用Java编写的持续集成和持续交付(CI/CD)工具。它提供了一种简单易用的方式来自动化构建、测试和部署软件。Jenkins的主要目标是帮助开发团队加快软件开发过程,提高软件质量,并通过自动化流程减少手动操作和重复性工作。
Jenkins的使用主要涉及以下几个步骤:
安装和配置Jenkins:首先需要在服务器上安装Jenkins,并进行相应的配置,包括设置工作空间、配置构建工具、配置版本控制系统等。
创建和配置项目:在Jenkins中创建项目,并配置项目的构建过程,包括源代码管理、构建触发器、构建步骤、构建后操作等。
触发构建:当代码仓库中的代码发生变化时,Jenkins可以自动触发构建过程,包括拉取最新代码、编译、测试、打包、部署等。
监控和报告:Jenkins提供了丰富的监控和报告功能,可以实时查看构建过程的状态和结果,以及生成各种报告和图表,帮助开发团队更好地了解项目的构建和交付情况。
Jenkins的作用主要体现在以下几个方面:
持续集成:Jenkins通过自动化构建和测试过程,帮助开发团队实现持续集成,确保代码的质量和可维护性。
持续交付:Jenkins可以与版本控制系统、构建工具、部署工具等集成,实现自动化部署和持续交付,提高软件交付的效率和质量。
自动化流程:Jenkins通过自动化构建、测试和部署过程,减少手动操作和重复性工作,提高开发团队的效率。
Jenkins的原理主要涉及以下几个方面:
插件机制:Jenkins采用了插件机制,可以通过安装插件来扩展其功能,满足不同的需求。
构建流程:Jenkins的构建流程包括拉取代码、编译、测试、打包、部署等步骤,可以通过配置项目来定义具体的构建流程。
构建触发器:Jenkins支持多种构建触发器,包括定时触发器、代码变更触发器等,可以根据需求选择合适的触发器来触发构建过程。
构建结果反馈:Jenkins会将构建结果反馈给开发人员,包括构建成功或失败的信息、构建日志等,帮助开发人员快速定位和解决问题。
总之,Jenkins是一个强大的持续集成和持续交付工具,通过自动化构建、测试和部署过程,帮助开发团队提高软件开发效率和质量。
Docker是一个开源的应用容器引擎,它基于Go语言开发,使得开发者可以将应用及其依赖包打包到一个轻量级、可移植的容器中,并发布到任何流行的Linux或Windows操作系统的机器上,实现虚拟化。Docker的容器是完全使用沙箱机制,相互之间不会有任何接口,保证了容器的独立性。
Docker的原理主要包括以下四个方面:
命名空间(Namespace):Docker使用命名空间来隔离不同容器中的进程,每个容器都有自己独立的命名空间。这样可以确保容器内的进程无法访问其他容器的资源,从而实现了资源的隔离。
控制组(Control Groups):控制组用于限制容器的资源使用,例如CPU、内存、磁盘IO等。Docker使用控制组来确保容器不会占用过多的计算资源,并能够根据需求进行动态调整,使得资源利用更加合理。
联合文件系统(Union File System):Docker使用联合文件系统来实现容器的轻量化和高效性。它将多个只读文件系统(镜像层)以及一个可写文件系统(容器层)合并在一起,形成一个虚拟的文件系统。这样,当容器启动时,只需要加载必要的文件系统层,从而减少了启动时间和资源占用。
镜像(Image):Docker的镜像是容器的基础,它包含了运行应用程序所需的所有内容,包括操作系统、库文件、应用程序代码等。镜像可以被视为一个只读的模板,通过创建容器来运行应用程序。
Docker的主要作用包括:
运行环境的快速部署:通过Docker,开发者可以轻松地构建、测试和部署应用程序,而无需担心运行环境的配置和依赖问题。
虚拟化:Docker可以实现操作系统的虚拟化,使得应用程序可以在隔离的环境中运行,提高了应用程序的安全性和稳定性。
应用隔离:Docker使用命名空间和控制组等机制,确保了不同容器之间的隔离性,防止了应用程序之间的相互影响。
总的来说,Docker通过其独特的技术原理和强大的功能,为开发者提供了一个高效、灵活、安全的容器化平台,使得应用程序的部署、管理和维护变得更加简单和方便。
数据持久化问题
容器与数据分离:Docker的设计理念是鼓励将短暂的容器与长期保存的数据分离。这意味着,虽然容器在运行过程中可能会被销毁和重建,但挂载到容器外部的数据可以持久保存。
数据卷:Docker提供了一种称为“数据卷”的机制,允许你将容器内的特定目录挂载到宿主机上的持久化存储区域。这样,即使容器重启或重新创建,数据仍然保留在宿主机上。
例如,使用-v或--volume选项可以将数据卷挂载到容器中:
docker run -v /host/path:/container/path my_image
默认行为:如果不特别指定数据存储策略,容器的数据默认是临时的。这意味着当容器停止运行时,其内部的数据将被清除。这是为了保持容器的轻量级和快速启动。
绑定挂载:除了数据卷,还可以使用“绑定挂载”将宿主机上的目录直接映射到容器内的目录。这样,容器可以访问宿主机上的文件系统,从而实现数据的持久性。
Git是一种分布式版本控制系统,它的原理和作用如下:
**原理**:
Git的工作原理主要基于快照而非差异。每次提交时,Git都会为整个项目打一个快照并存储这个快照。这意味着每次的提交都会包含项目在那个时间点的完整副本。为了高效存储这些快照,Git采用了对象数据库的方式,每个文件在Git中都被视为一个对象,并通过SHA-1哈希算法为每个对象生成一个唯一的标识符。
Git还采用了分布式的设计,这意味着每个使用Git的用户都可以拥有完整的代码仓库的副本,包括所有的版本历史记录。这种设计使得Git可以在没有网络连接的情况下进行提交和查看版本历史,大大提高了工作的灵活性。
**作用**:
Git的主要作用在于版本控制。版本控制是一种记录文件内容变化,以便将来查阅特定版本修订情况的系统。通过Git,我们可以追踪文件的每一次改动,包括何时、由谁以及改动了什么内容。这对于团队协作、代码审查以及错误追踪都非常重要。
此外,Git还提供了许多强大的功能,如分支和合并。分支允许我们在不影响主线代码的情况下,进行新的功能开发或错误修复。合并则可以将这些改动整合到主线代码中。这些功能使得Git成为了许多大型项目的主要版本控制工具。
总的来说,Git是一种强大而灵活的版本控制系统,它不仅可以追踪文件的改动,还可以帮助我们在团队中更有效地协作和管理代码。
Maven是一个强大的软件项目构建和管理工具,它基于项目对象模型(Project Object Model,简称POM)的理念,能够通过一段核心描述信息来管理项目的构建、报告和文档信息。
Maven的主要作用体现在以下几个方面:
依赖管理:Maven可以自动下载、配置和管理项目所需的各种库和依赖,从而极大地简化了项目的构建和部署过程。此外,Maven还提供了依赖冲突解决机制,帮助开发者解决不同库之间的版本冲突问题。
项目构建:Maven提供了一套标准化的项目构建流程,包括编译、测试、打包、部署等。开发者只需通过简单的命令,就可以完成整个项目的构建过程。
文档生成:Maven可以自动生成项目的文档,包括API文档、用户手册等,这极大地提高了项目的可读性和可维护性。
Maven的工作原理基于其独特的项目对象模型(POM)。在Maven项目中,每个项目都有一个pom.xml文件,这个文件包含了项目的所有配置信息,如依赖、构建流程、插件等。Maven通过解析pom.xml文件,获取项目的配置信息,然后根据这些配置信息来执行相应的构建任务。
总的来说,Maven通过其强大的依赖管理、项目构建和文档生成功能,极大地简化了软件项目的开发和维护过程,提高了开发效率和项目的可维护性。
下载并安装vmware
下载centos7镜像:centos-7-isos-x86_64安装包下载_开源镜像站-阿里云 (aliyun.com)
配置启动虚拟机:4G内存 20G存储空间
配置网络
这里选的是桥接模式,默认是NAT模式,刚开始怎么都连不上网,后面移除了网络适配器,换成桥接就OK了。可以用 ip add命令查看ip,并用 ping www.baidu.com检查是否有网
首先需要大家虚拟机联网,安装yum工具
yum install -y yum-utils \
device-mapper-persistent-data \
lvm2 --skip-broken
然后更新本地镜像源:
# 设置docker镜像源
yum-config-manager \
--add-repo \
https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
sed -i 's/download.docker.com/mirrors.aliyun.com\/docker-ce/g' /etc/yum.repos.d/docker-ce.repo
yum makecache fast
然后输入命令:
yum install -y docker-ce
docker-ce为社区免费版本。稍等片刻,docker即可安装成功。
启动docker前,一定要关闭防火墙后!!
# 关闭
systemctl stop firewalld
# 禁止开机启动防火墙
systemctl disable firewalld
查看docker是否启动
docker images
通过命令启动docker:
systemctl start docker # 启动docker服务
systemctl stop docker # 停止docker服务
systemctl restart docker # 重启docker服务
然后输入命令,可以查看docker版本:
docker -v
如果启动时出现错误
提示:Job for docker.service failed because the control process exited with error code. See "systemctl status docker.service" and "journalctl -xe" for details.
1
# 进入docker目录
cd /etc/docker/
# 修改daemon的类型(这里不用执行)
#mv daemon.json daemon.conf
# 重启docker
systemctl restart docker
执行以下命令,打开 /etc/docker/daemon.json 配置文件
vi /etc/docker/daemon.json
按 i 切换至编辑模式,添加以下内容,并保存。
{
"registry-mirrors": [
"https://kfwkfulq.mirror.aliyuncs.com",
"https://2lqq34jg.mirror.aliyuncs.com",
"https://pee6w651.mirror.aliyuncs.com",
"https://registry.docker-cn.com",
"http://hub-mirror.c.163.com"
],
"dns": ["8.8.8.8","8.8.4.4"]
}
备注:清华大学开源软件镜像站 | Tsinghua Open Source Mirror
重启Docker
systemctl restart docker
service docker restart
#查看镜像源
docker info
Linux下需要通过命令下载:
# 安装
curl -L https://github.com/docker/compose/releases/download/1.23.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
# 修改权限
chmod +x /usr/local/bin/docker-compose
2.3.Base自动补全命令:
# 补全命令
curl -L https://raw.githubusercontent.com/docker/compose/1.29.1/contrib/completion/bash/docker-compose > /etc/bash_completion.d/docker-compose
如果这里出现错误,需要修改自己的hosts文件:
echo "199.232.68.133 raw.githubusercontent.com" >> /etc/hosts
查看版本
docker-compose -verison
拉取官方registry镜像:
docker pull registry
运行registry容器:
Docker官方的Docker Registry是一个基础版本的Docker镜像仓库,具备仓库管理的完整功能,但是没有图形化界面。
搭建方式比较简单,命令如下:
docker run -d \
--restart=always \
--name registry \
-p 5000:5000 \
-v registry-data:/var/lib/registry \
registry
命令中挂载了一个数据卷registry-data到容器内的/var/lib/registry 目录,这是私有镜像库存放数据的目录。
启动成功后,可以使用 docker ps 查看
访问http://YourIp:5000/v2/_catalog
可以查看当前私有镜像服务中包含的镜像
注意:如果你的私有仓库没有使用https,需要在Docker客户端上修改/etc/docker/daemon.json文件(如果文件不存在则新建),添加私有仓库地址到"insecure-registries"列表中,然后重启Docker服务。例如,在daemon.json文件中添加以下内容:
{
"insecure-registries": ["192.168.10.2:5000"]
}
然后,使用命令systemctl restart docker重启Docker服务。
当配置了这个选项后,Docker 在与这些指定的镜像仓库通信时,将不再验证 TLS 证书,从而绕过了 Docker 的安全机制。
#创建docker-compose.yml文件
cd /usr/local
mkdir docker
cd docker/
mkdir gitlab_docker
cd gitlab_docker
vi docker-compose.yml
#内容如下 ,volumes设置了很多挂载盘 因为非常重要要保留数据和配置 不然重启数据就没了
version: '3.3'
services:
gitlab:
image: 'gitlab/gitlab-ce:latest'
restart: always
hostname: 'gitlab'
environment:
GITLAB_OMNIBUS_CONFIG: |
external_url 'http://192.168.10.2:8300' # web站点访问地址
gitlab_rails['gitlab_shell_ssh_port'] = 2224
ports:
- '8300:8300' #
# - '8443:8443'
- '2224:2224'
volumes:
- ./config:/etc/gitlab
- ./data:/var/opt/gitlab # 挂载卷
- ./logs:/var/log/gitlab
# logging:
# driver: 'json-file'
# options:
# max-size: '2g'
#查看镜像
docker search gitlab
#拉镜像(要确保走国内镜像分分钟就好,不然等一天吧)
docker pull gitlab/gitlab-ce:latest
#查看镜像是否拉取
docker images
#在docker compose.yml目录下启动gitlab(要一小会3M)
docker-compose up -d
#查看启动日志
docker-compose logs -f
期间可以访问地址
http://192.168.10.2:8300
看看是否启动,502响应码说明还在启动中
#启动后进入docker主机内部查看默认root密码
#docker exec -it
docker exec -it gitlab_docker_gitlab_1_ca4d609390ad /bin/bash
容器名称可以用docker ps查看目前启动的容器
# 备注 容器重命名
docker rename old_container_name new_container_name
cat /etc/gitlab/initial_root_password
#登录gitlab
下载jkd和maven 的tar.gz包,放到虚拟机
#解压到目录
tar -zxvf jdk-8u231-linux-x64.tar.gz -C /usr/local
#重命名(可以省略,【tab】指快捷补全文件名)
cd /usr/local/
mv jdk【tab】 jdk/
mv apache【tab】 maven/
修改setting文件
cd maven/conf
#加入阿里云地址和jdk8编译插件
#设置环境变量
#编编辑 profile末尾加入
vi ~/.bash_profile
export JAVA_HOME=/usr/local/jdk
export PATH=$PATH:$JAVA_HOME/bin
export M2_HOME=/usr/local/maven
export PATH=$PATH:$M2_HOME/bin
#执行以下命令使更改生效:
source ~/.bash_profile
#验证
java -version
mvn -v
#拉镜像
docker pull jenkins/jenkins
在/usr/local下建docker文件夹,并建jenkins_docker 子目录
mkdir docker
cd docker
mkdir jenkins_docker
cd jenkins_docker
创建docker-composr.yml文件(注意格式 不然无法启动虚拟机 对的格式会有颜色标记)
vi docker-compose.yml
version: '3'
services: # 集合
docker_jenkins:
user: root # 为了避免一些权限问题,这里使用了 root
restart: always # 重启方式
image: jenkins/jenkins # 指定服务所使用的镜像,这里选择了 LTS (长期支持)
container_name: jenkins # 容器名称
ports: # 对外暴露的端口定义
- 8080:8080 # 访问 Jenkins 服务端口
- 50000:50000
volumes: # 卷挂载路径
- /var/vol_dockers/jenkins_home/:/var/jenkins_home # 这是我们一开始创建的目录挂载到容器内的 jenkins_home 目录
- /var/run/docker.sock:/var/run/docker.sock
- /usr/bin/docker:/usr/bin/docker # 这是为了我们可以在容器内使用 docker 命令
- /usr/local/bin/docker-compose:/usr/local/bin/docker-compose
#在docker compose.yml目录下启动(要一小会3M)
docker-compose up -d
备注#重启docker-compose
docker-compose restart
#查看启动日志
docker-compose logs -f
#密码cd925599e21f4879b8a3e369fe7a977d
/var/jenkins_home/secrets/initialAdminPassword
#升级jenkins不然很多插件用不了,先浏览器下载高版本war
#上传到主机,并复制到虚拟机内
docker cp jenkins.war jenkins_ts:/usr/share/jenkins/jenkins.war
docker restart jenkins
#重新访问jenkins地址,提示消失,而且还是中文的
#复制jdk和maven 到jenkins虚拟机
cp -r /usr/local/jdk /var/vol_dockers/jenkins_home/
cp -r /usr/local/maven /var/vol_dockers/jenkins_home/
备注:
/var/vol_dockers/jenkins_home/:/var/jenkins_home 是我们的挂载目录
jenkins界面备注jar和maven
/var/jenkins_home/jdk
/var/jenkins_home/maven
jenkins安装Publish Over SSH插件
进入系统配置 管理publish over ssh,并在高级配置勾选使用密码,后测试连接(remote 文件需要先建好)
创建测试文件
上传git
创建gitlab项目
http://192.168.10.2:8300/root/mytest.git
然后push就可以
查看gitlab
构建
【控制台输出】查看构建日志
进入jenkins容器查看workspace,所有工程都会放这里
看到mytest说明第一步从gitlab构建项目成功,接下来配置自动部署
clean package -DskipTest
查看构建日志
配置构建后上传服务器
查看上传成功
接下来最后一步,上传成功后自动启动
项目配置dockerfile
docker\Dockerfile
#FROM quay.io/ncross/hacbs-test-simple-jdk8:latest
FROM openjdk:8-jdk-alpine
COPY mytest.jar /var/vol_dockers/jenkins_home/
WORKDIR /var/vol_dockers/jenkins_home/
CMD java -jar mytest.jar
docker\docker-compose.yaml
version: '3.1'
services: # 集合
mytest:
build:
context: ./
dockerfile: Dockerfile
restart: always # 重启方式
image: mytest:v1.0.0 # 指定服务所使用的镜像,这里选择了 LTS (长期支持)
container_name: mytest # 容器名称
ports: # 对外暴露的端口定义
- 8081:8081
配置jenkins构建后置事件
重点配置Exec command
cd /usr/local/sshtest/docker
mv ../target/*jar ./
docker-compose down
docker-compose up -d --build
docker image prune -f
备注 /usr/local/sshtest 就是构建好发送给服务器的路径
docker image prune -f 为了清理没用的image
启动项目后访问不了,原因是项目端口默认8080 但是docker-compose配置了 8081:8081.
解决办法:项目端口改为8081
#命令查看ip
ip add
#检查是否有网
ping www.baidu.com
#重新启动网络
systemctl restart network
#进入网络配置文件并修改保存(可能不是eth0)
vi /etc/sysconfig/network-scripts/ifcfg-eth0
修改 # i;保存# esc + :wq + enter
参考配置
BOOTPROTO=static (如果是chcp 后面可能不配)
ONBOOT=yes
HWADDR=虚拟机mac地址
IPADDR=设置虚拟机ip地址,与主机ip在同一网段
NETMASK=设置子网掩码
GATEWAY=设置虚拟网关与主机相同
DNS1=设置dns与主机相同
#文件递归cp
cp -r /usr/local/jdk /var/vol_dockers/jenkins_home/
#删除目录下所有文件
rm -rf *
#删除文件
rm
#清屏幕
clear
#查看当前路径(显示当前工作目录的绝对路径)
pwd
#查看文件夹下文件
ls
#编辑文件
vim /etc/docker/daemon.json
Vim是Vi的升级版本,它不仅保留了Vi的所有指令和功能,还增加了许多新的特性和改进,使得编辑和编程更加高效和便捷。
#自动补全
Tab快捷键
systemctl start firewalld.service#启动firewall
systemctl stop firewalld.service#停止firewall
systemctl disable firewalld.service#禁止firewall开机启动
systemctl status firewalld.service#查看状态
开启: service iptables start
关闭: service iptables stop
systemctl是CentOS7的服务管理工具中主要的工具,它融合之前service和chkconfig的功能于一体。
启动一个服务:systemctl start firewalld.service
关闭一个服务:systemctl stop firewalld.service
重启一个服务:systemctl restart firewalld.service
显示一个服务的状态:systemctl status firewalld.service
在开机时启用一个服务:systemctl enable firewalld.service
在开机时禁用一个服务:systemctl disable firewalld.service
查看服务是否开机启动:systemctl is-enabled firewalld.service
查看已启动的服务列表:systemctl list-unit-files|grep enabled
查看启动失败的服务列表:systemctl --failed
netstat -pnt | grep :80 | wc -l 去掉后面的 "| wc -l"就能看到详细信息了
netstat -an|grep 22
vi/vim /etc/profile
source /etc/profile(使修改立即生效)
echo $PATH(查看PATH值)
lsblk 查看分区和磁盘fdisk -l
cfdisk /dev/sda 查看分区
df -hl
du -bs dir_name
ps -ef | grep
netstat -ntlp查看端口netstat –tunlp
netstat –apn | grep 8080
ps -aux | grep pid查看
kill -9 [PID]
pwdx pid 查看路径
文件夹:mkdir 权限 xx;mkdir xx;mkdir 777 xx
文件:vi/vim xx :wq
tail -f -n 100 xxx
vi/vim(编辑);shift+:wq(退出编辑保存);shift+:q(退出编辑);shift+:q!(强制退出);Esc->/关键字(查找关键字) n(下一条) shift+n(上一条)
#启动docker
systemctl start docker # 启动docker服务
systemctl stop docker # 停止docker服务
systemctl restart docker # 重启docker服务
service docker restart
#删除空镜像
docker image prune -f
#查看特定的镜像,可以使用 grep 命令进行过滤,例如查看名为 ubuntu 的镜像:
docker images | grep ubuntu
#查看包括中间层镜像的所有镜像
docker images -a
#进入容器
docker exec -it
#查看启动的容器
docker ps 查看
#启动容器
docker-compose up -d
#查看启动日志
docker-compose logs -f
#重命名容器
docker rename old_container_name new_container_name
#复制文件到容器
docker cp jenkins.war jenkins_ts:/usr/share/jenkins/jenkins.war
#重启容器
docker restart jenkins
#正在运行的容器
docker ps
#最近创建的容器
docker ps --latest
# 备注 容器重命名
docker rename old_container_name new_container_name
#退出容器
exit
#停止并退出容器
docker stop