Git和docker的简单使用

Git

  1. 基本原理:

    Git是跟强大而公开的代码库Github相关联的工具,如果是学习跟计算机相关或者是需要实现功能性的代码,大多数学习计算机的人都会接触到Github,Git则是用于管理自己开发过程的代码的一个工具,在其中的官网(Git - 安装 Git)下载安装之后,就可以得到其中的主要的工具git bash,git bash是类似shell bash的工具,git bash中集成了一系列便于用户管理开发某一功能性程序过程的各个代码文件的指令。

    使用git bash进行开发代码文件的管理的几个步骤为:创建本地仓库,并初始化;对本地仓库添加基础的文件;然后对本地仓库进行跟踪;创建分支,修改或者添加个人的所需要的文件;保存修改后的文件到本地仓库;若是分支部分经过审核没有问题再对分支进行合并到master主分支中

    如果要进行远程端操控的话,首先得再github上面创造一个账号,并创建一个远程端仓库,然后把本地仓库跟远程端仓库使用指令链接起来,这样就可以实现远程端仓库在本地的控制。

  2. 实验步骤:

    基础操作:1.创建本地仓库:

    Git下载好之后在自己的鼠标右键里面会多出两个关于git的快捷选项,首秀首先关注的是Git bash,想要创建本地仓库的地方右键打开Git bash。

    打开之后并不是我这样的,会要求你输入一个用户名和邮箱,这个可以随便输入,第一是因为只是方便git记录修改的身份信息,然后还可以使用指令git config --global user.name “name”和git config --global user.email “email”来进行修改。输入完成之后就会进入如上界面。

    先创建文件夹,然后进入到文件夹内部之后初始化仓库,然后对仓库添加所需要文件:

    先用mkdir mygit创建一个名为mygit的文件夹

    cd mygit进入到mygit文件夹之后使用git init初始化仓库。

    随便创建一个文件git0.txt使用git add git0.txt把这个文件添加到暂存区。

    然后使用git commit把暂存区的文件提交到仓库的工作区里。

    这样我们的仓库就创建完毕了,不过需要注意的是,初始化仓库之后并不算完,此时的仓库还没有完成,若是不随意给仓库的工作区提交一个文件的话,仓库是不会自动创建主要分支的,然后这个仓库也属于一种不可被使用的状态。

  3. 分支管理:Git能狗从版本控制的家族分离出来就是因为其中的分支管理功能是即方便又强大的。这给代码开发提供了极大的可塑性。

    还是以刚刚成功创建的仓库为例子:

    分支管理中,有唯一一个主分支和多个副分支的,其中主要分支是经过测试之后代码稳定,功能达到预期的代码部分,一般是不能随意修改的。而副分支则是可以随意修改(修改自己创建的分支),因为副分支是随时可以被还原的。

    先看看刚创建的仓库的分支,使用git branch进行查看:

    刚创建完成的分支数量只有一,那就是主要分支:master,若是觉得master看不太习惯的话,还可以使用git branch -master main,这样就把master分支重命名为main分支了。

    就如上所说,我们一般不修改master分支中的内容,而是在分支上面进行修改,假设其中git0.txt的内容为“i love github”。

    使用git checkout -b feet0,这样我们就创建并切换到了名为feet0的分支中了。

    若是已经创建了一个分支,使用git checkout name就可以切换到name分支了

    切换之后我们使用cat指令看看目前文件内容是什么:

    现在在这个分支对文件进行修改,使用vim指令添加一行“i love math,too”,然后观察master分支和feet0分支的文件内容有什么不同。

    从上面可以看到当我们切换到副分支之后修改文件内容之后然后然后从暂存区域提交到仓库中,之后再切回到主分支之后,文件里面的内容恢复了。这便是分支管理的作用,既起到了保护稳定代码的作用,也为开发者放开手脚修改代码提供了保障。

  4. 远程协作:

    然后就是远程协作:远程协作指的是再github上面共同对同一个程序进行开发,并且各个开发者所写的代码都存在一个类似“网盘”的地方。

    首先在github上面创建一个远程仓库:

    创建之后复制自己仓库的链接,然后在想要建立本地链接的地方打开git bash,然后输入git clone url之后等待其自动克隆下来

    有可能会要求登录自己的账号进行验证。

    然后使用git remote add name url进行一个远程仓库的添加:

    在添加完成之后可以使用git remote -v查看已经有的远程仓库链接以及其中的别名。这里可以看到使用clone的时候其实会自动添加一个origin的别名和其对应的远程链接,不过还是自己取的名字更容易记住吧。然后我们看到这里有同一个链接有两个别名看着太不顺眼了,所以我们还可以使用git remote rm name来删除其name对应的别名。

    现在看着就顺眼多了。

    而远程操控所以需要注意的指令主要有三个git pull 和git fetch 还有git push 三个指令后面都跟url的别名。

    不过需要注意的是git pull name feet0会让name库的拉取的代码跟本地的合并。而push就是上传。

    总结:

    Git的使用能够更好地协助个人以及一个团队在开发某个程序过程中的相互协助,并且便于修改程序中的bug以及测试某些新增功能在程序上是否具备可行性,并且还为个人为了达到某些功能性的从github找到一个基础的功能模板,从而使得开发某些具备创新性具备更高的行动性。

    Docker

    Docker的在原理上跟vm一类的虚拟机比较相似,但是其相对于vm这一类的虚拟机的软件,其所达到的效果是更好而在内存占用中更轻量的一个程序运行环境提供的载体,docker环境的实现和执行主要由dockerfile,镜像,以及容器三个部分所构成,其中dockerfile类似一个自动化脚本,将常用基础的指令放入其中之后在创建镜像容器的时候会自动帮我们完成这些繁冗的工序。

    镜像操作:

    在对镜像进行操作的时候常用的指令有如下的:

  • docker pull:从镜像仓库下载镜像(如docker pull nginx)。。
  • docker images:查看本地镜像列表(含镜像 ID、标签、大小等)。
  • docker tag:为镜像添加标签(用于版本管理或推送到私有仓库)。
  • docker push:将镜像推送到远程仓库(如 Docker Hub、阿里云镜像仓库)。
  • docker rmi:删除本地镜像(需先停止依赖该镜像的容器)。

其中部署镜像文件绝对会用到的根据部署一个镜像文件来说明:

假设我们要创建一个python开发的程序的镜像文件,这里我们使用docker desktop,在搜索直接搜索python是可以搜索到python所使用的一个环境

点击之后,看到python的栏目

可以看到如上有许多标签,并且在标签的上面还提示了我们docker pull python,当我们运行这一指令,docker就会为我们下载一个python的开发环境的镜像文件,但这一指令默认是最新版本的环境,那如果说我们不想用最新的版本环境,而想要用之前的版本,这个时候就要指定以下python的标签了,比如说docker pull python-tag给python的tag换成指定版本的标签就可以下载指定的镜像了,同一版本的标签不同有一定不同,建议百度。若是ubuntu的docker,百度也能搜到各个标签。

在下载完镜像文件之后,我们还可以用指令docker image ls看一下镜像文件到底下载成功了没有:

这里可以看到镜像文件已经下载成功了。查看镜像的文件的指令是很常用的,docker image还有其它参数,常用的是ls,而其它的参数输入docker image本身就可以查看,这里我们还可以看到一个信息,那就是image id,当我们要创建一个这个镜像文件的容器和删除一个镜像的时候都会用到这个id,虽然id很长,但当创建容器和删除镜像文件的时候输入id都只需要输入id的前三个字符:

创建容器:

删除镜像:

删除的时候需要注意,假设创建了一个容器是以该镜像创建的,这个镜像目前是无法被删除的,只有当容器被删除的时候镜像文件才会被删除,所以在删除镜像之前,而删除容器之前,我们还得知道容器的id,所以要先用docker ps -a查看所以容器的id:

然后使用docker rm bf1删除容器,然后用docker rmi 1c1才能成功删除镜像文件。

而在删除文件之前呢,肯定都是我们在容器内部工作完成了,删除是为了节省电脑空间,而有为了让我们的开发完成的容器能够在下次再被完整的使用,这里我们就得使用到docker push container-id将我们得容器整理成镜像文件上传到dockerhub上面去。

容器管理:

学习镜像操作的时候已经学些了一点容器管理的指令,现在学习一下容器管理中更加花样的操作。我们拿到镜像的时候,若我们要使用这个镜像的文件,我们要做的就是开一个容器,让镜像里面的内容被运行。

运行一个容器就是docker run image-id,这里不加上-it表示的是不是以交互的模式创建这个容器,也可以理解为不进入到容器内部只是创建了个容器。

可以看到并未进入到容器的内部创建了一个新的容器,若是我们想要进入到一个已经有的容器内部的话,得先docker start id运行容器,然后使用docker exec -it id 指令 进入到容器内部

docker exec 可以理解为容器的“docker run”后面也跟系数,不过不同的是在id后面还需要接容器需要执行的指令。

然后有的时候容器也许会遇到卡顿或者说出错,这个时候就跟电脑出问题了一样会第一反应想着先重启一下试试,所以遇到这种情况的时候我们会用docker restart id来重启容器:

然后有时候我们还会不小心多开一个容器或者下错了镜像开错了容器,这个时候可以先docker stop id停止运行,然后docker rm id来删除容器。

数据与编排:

Docker的数据管理与编排是通过数据卷来实现的,通过数据卷从而使得docker的数据持久化和多容器的协同化。

数据卷的创建:通过docker volume create name从而创建一个名为name的数据卷。

创建完之后使用docker volume ls可以查看当前已经创建的数据卷有哪些。而创建完之后要使用数据卷就需要将其挂载到想要长久保存数据的容器里。

这里我打算用一个ubuntu容器用于展示,然后在我home/ubuntu下还有一个love.txt文件。现在我将data0数据卷挂载到test下的/home/ubuntu/love.txt中。使用指令docker run -it -v data0:/home/ubuntu/love.txt ubuntu bash,以交互的模式运行ubuntu的bash,知道我输入exit才退出,并且同时将数据卷data0挂载到ubuntu/下的love中,成功的话进入容器中的ubuntu中应该自动存在love.txt:

可以看到数据卷挂载成功

数据卷挂载之后除了容器被删除以外无法被除去挂载。

posted @ 2025-07-04 09:27  喵老师哒哟  阅读(129)  评论(0)    收藏  举报