有测试问题请微信联系作者,备注来意(点击此处添加)
240
一名普通的测试打工人;专注自动化测试技术研究、实践、总结、分享、交流。
用我8年+的经历,给大家带来更多实用的干货。
人若有志,就不会在半坡停止。

【基础】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容器--->启动/关闭容器

# 拉取镜像,不指定版本会拉最新的
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

  1. docker pull拉取jenkins镜像

    docker pull jenkins/jenkins
    
  2. 创建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
    

  1. 查看jenkins是否启动成功,如下图出现端口号,就为启动成功了
docker ps -l
  1. 查看docker容器日志。
docker logs my_jk
  1. 配置镜像加速,进入 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

修改后

  1. 访问Jenkins页面,输入你的ip加上10240

  1. 管理员密码获取方法,编辑initialAdminPassword文件查看,把密码输入登录中的密码即可,开始使用。
vi /var/jenkins_mount/secrets/initialAdminPassword

  1. 进行正常进行安装使用啦!

更多实战

K8s管理docker
待更新

posted @ 2022-03-28 18:22  三叔测试笔记  阅读(327)  评论(0编辑  收藏  举报
返回顶部 跳转底部