【基础】docker常用命令及项目实战
前言
目标:
带大家认识docker
学会使用docker,并做具体实战
流程:
- 了解docker概念
- 安装配置docker
- docker基本使用
- docker实战
什么是Docker
概念
Docker 是一个开源的应用容器引擎,开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何Linux或Windows操作系统的机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。
作用
Docker简化了环境部署和配置,实现“一次构建,处处运行”,避免了因运行环境不一致而导致的异常
docker与传统VM比较
- 运行速度
- VMware部署环境最快也需要十几秒,可能还会长达几分钟。
- docker几秒/几十毫秒之间就可以启动容器,完成环境部署。
- 占用内存
- VMware部署环境,最少几个G
- docker一般都是mb的级别,最大也就几个G
docker组成
-
docker宿主机( host ):docker安装在哪一个机器,那个机器就是宿主机,来运行Docker守护进程
-
镜像(image):如同系统镜像,可以安装到不同的电脑中。或者从软件编程层面讲,如同面向对象中的类。
-
容器(container):是通过镜像创建的,如前面的例子,可以是不同运行镜像的电脑。又或是类的实例概念。
运行镜像后生成的实例被称为容器,当每运行一次镜像时就会产生一个容器,容器可以操作启动、停止、删除。
容器使用是沙箱机制,互相之间是隔离的,且是独立、安全的。
可以把容器看作是简易版的Linux环境,包含文件系统、用户权限、和运行的应用等。 -
仓库(repository):用来存放镜像的地方。
docker安装及配置
docker安装前准备
首先需要保证CentOS系统内核版本要高于3.10,且为64位。
使用命令uname -r
来查看环境是否满足要求。
如果Centos安装部署遇到问题或需要包的可以关注公众号获取
搭建docker环境
docker基本使用
docker使用流程:下载镜像--->运行镜像,生产docker容器--->启动/关闭容器
# 拉取镜像,不指定版本会拉最新的 docker pull 镜像名:版本 # 查看docker镜像--->展示:镜像名称\镜像标签\镜像id\镜像创建时间\镜像大小 docker images # 获取镜像详细信息 docker inspect 镜像id # 删除指定的本地镜像:rmi全英文是remove image,-f表示强制删除(多个镜像删除,不同镜像间以空格间隔) docker rmi -f 镜像id或者镜像名:tag # 启动镜像创建容器,并进入容器 ``` i:交互式操作; t:容器指定一个终端; d:服务后端运行; p:将容器内部使用的网络端口随机映射到我们使用主机上,后面参数追加端口时,则为指定端口,如:docker run -p 4000:5000(容器5000端口映射到本机4000端口上) P:大写的,随机映射到主机端口 --name xxx:自定义容器名称; /bin/bash:交互式shell ``` docker run - it 镜像名 /bin/bash # 设置镜像标签 docker tag 镜像id 镜像名称:标签 # 已存在的仓库,启动容器(names) docker start 容器名 # 查看正在运行的docker容器--->展示:容器ID\镜像名称\容器与宿主机映射的端口号\容器的名称 docker ps # 显示所有状态的容器(包括未运行) docker ps -a # 进入docker容器(i:交互式操作;t:容器指定一个终端;/bin/bash:交互式shell) docker exec -it 容器名 /bin/bash # 查看web应用日志(logs -f:与tail -f一样) docker logs -f 容器id # 查看容器进程 docker top 容器名 # 停止docker容器 docker stop 容器名称 # 停止的容器进行重启 docker restart 容器id # 删除指定容器 docker rm -f 容器id
其他操作扩展:
对于容器的操作可以使用container id或names
# 批量操作容器可使用$()或多个容器空格相隔,如下: docker rm -f $(docker ps -aq) docker rm -f 容器1 容器2 # 导出容器快照 docker export 容器id > 快照文件(xxx.tar) # 导入容器快照 cat docker/ubuntu.tar | docker import - test/ubuntu:v1 # 可以容器端口映射情况 docker port 容器id
推荐大家使用 docker exec 命令,因为此退出容器终端,不会导致容器的停止。 docker attach不建议使用
docker实战
部署jenkins
-
docker pull拉取jenkins镜像
docker pull jenkins/jenkins -
创建Jenkins挂载目录并授权权限(我们在服务器上先创建一个jenkins工作目录 /var/jenkins_mount,赋予相应权限,稍后我们将jenkins容器目录挂载到这个目录上,这样我们就可以很方便地对容器内的配置文件进行修改。 如果我们不这样做,那么如果需要修改容器配置文件,将会有点麻烦,因为虽然我们可以使用docker exec -it --user root 容器id /bin/bash 命令进入容器目录,但是连简单的 vi命令都不能使用)
mkdir -p /var/jenkins_mount chmod 777 /var/jenkins_mount 3.创建并启动Jenkins容器
-d 后台运行镜像
-p 10240:8080 将镜像的8080端口映射到服务器的10240端口。
-p 10241:50000 将镜像的50000端口映射到服务器的10241端口
-v /var/jenkins_*mount*:/var/jenkins_mount /var/jenkins_home目录为容器jenkins工作目录,我们将硬盘上的一个目录挂载到这个位置,方便后续更新镜像后继续使用原来的工作目录。这里我们设置的就是上面我们创建的 /var/jenkins_mount目录
-v /etc/localtime:/etc/localtime让容器使用和服务器同样的时间设置。
--name myjenkins 给容器起一个别名
docker run -d -p 10240:8080 -p 10241:50000 -v /var/jenkins_mount:/var/jenkins_home -v /etc/localtime:/etc/localtime --name my_jk jenkins/jenkins
- 查看jenkins是否启动成功,如下图出现端口号,就为启动成功了
docker ps -l
- 查看docker容器日志。
docker logs my_jk
- 配置镜像加速,进入 cd /var/jenkins_mount/ 目录。
cd /var/jenkins_mount/
修改 vi hudson.model.UpdateCenter.xml
里的内容
修改前
将 url 修改为 清华大学官方镜像:https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
修改后
- 访问Jenkins页面,输入你的ip加上10240
- 管理员密码获取方法,编辑initialAdminPassword文件查看,把密码输入登录中的密码即可,开始使用。
vi /var/jenkins_mount/secrets/initialAdminPassword
- 进行正常进行安装使用啦!
更多实战
K8s管理docker
待更新
进群交流、获取更多干货, 请关注微信公众号:

> > > 咨询交流、进群,请加微信,备注来意:sanshu1318 (←点击获取二维码)
> > > 学习路线+测试实用干货精选汇总:
https://www.cnblogs.com/upstudy/p/15859768.html
> > > 【自动化测试实战】python+requests+Pytest+Excel+Allure,测试都在学的热门技术:
https://www.cnblogs.com/upstudy/p/15921045.html
> > > 【热门测试技术,建议收藏备用】项目实战、简历、笔试题、面试题、职业规划:
https://www.cnblogs.com/upstudy/p/15901367.html
> > > 声明:如有侵权,请联系删除。
============================= 升职加薪 ==========================
更多干货,正在挤时间不断更新中,敬请关注+期待。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 一文读懂知识蒸馏
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下