【基础】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
> > > 声明:如有侵权,请联系删除。
============================= 升职加薪 ==========================
更多干货,正在挤时间不断更新中,敬请关注+期待。