【docker容器技术与K8s】

本文详细介绍了Docker容器技术的基础知识,包括学习路线、价值、安装配置、命令及镜像管理,还涉及了如何在Docker中安装和配置Kubernetes(K8s),以及使用Docker构建数据库、项目管理和测试管理平台的实例。
摘要由CSDN通过智能技术生成

【docker容器技术与K8s】

一、Docker容器技术

1、Docker的学习路线
(1)学习Docker基本命令(容器管理和镜像管理)
(2)学习使用Docker搭建常用软件
(3)学习Docker网络模式
启动容器的时候,有不同的网络模式(方案)供选择,不同的网络模式(方案)对应不同的场景
(4)学习Docker的镜像制作(dockerfile)
通过dockerfile制作自己的镜像
(5)容器集群-k8s
k8s是容器编排领域的事实标准。很少有公司会使用其他的编排方案了。

二、容器技术的价值

1、保证环境的一致性,只要使用相同镜像部署就可以保证一致性
2、轻量级虚拟化访问,(相比于虚拟机)运行更快(号称秒级启动),资源更小。同时也可以保证容器间的隔离性
3、封装部署的负载类型,云原生与微服务的首选技术方案。
4、未来测试人员必学的技术栈

三、Docker的安装与配置

Docker 支持多种操作系统平台,Windows、linux、macos
推荐使用linux
在Windows、macos安装Docker,实际上是在Windows、macos启动一个linux的子系统,来实现docker的安装

1、Centos上安装Docker

# 切换到管理员权限
su root
# 安装Docker依赖
yum install -y yum-utils device-mapper-persistent-data lvm2
# 配置依赖下载源
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 安装docker
yum makecache fast && yum -y install docker-ce

安装完成后,查看docker版本

docker --version

2、Docker基本命令

(1)常用操作
启动docker

systemctl start docker

重启docker(该指令会将docker先停止掉,然后再重新启动)

systemctl restart docker

开机自启动(设置开机自动启动docker)

systemctl enable docker

运行状态

systemctl status docker

3、 配置Docker镜像加速器

不配置加速器的话,docker拉取镜像时会去国外的dockerhub上下载,下载速度只有20kb/s左右。
配置加速器,下载速度根据自己的网速来定,下载速度可以达到10M/s左右。

# 添加 registry-mirrors
vim /etc/docker/daemon.json

# 内容
{
  "registry-mirrors": ["https://registry.docker-cn.com"]
}

# 重载 docker 的配置文件
systemctl daemon-reload

# 重启 Docker
systemctl restart docker

## 查看配置(可以看到自己配置的国内源的地址)
docker info

四、Docker容器管理

docker常用的容器管理命令

1、查看当前的docker

docker ps -a

-a会显示包括非运行状态(比如Exited状态)的容器
2、运行容器

docker run --name={your_name} --d {image_name}

3、停止容器

docker stop {container_name}

4、kill容器

docker kill {container_name}

5、删除容器

docker rm -f {container_name}

6、查看容器日志

docker logs -f {容器名称}

7、查看容器的元数据

docker inspect {容器名称}

8、通过bash进入容器

docker exec -it {容器名称}

exec为在容器中运行一个命令。如果是bash,并指定了-it,就会打开容器的shell交互

五、Docker常用的镜像管理命令

1、镜像下载地址

下载地址: 镜像
使用docker pull会默认到镜像仓库里下载镜像

2、拉取镜像

docker pull {image_name}:版本号
# 例
docker pull mysql:5.5 

3、推送镜像

docker push {image_name}

4、查看当前机器的所有镜像

docker images

5、删除当前机器的一个镜像

docker rmi {image_name}
# 例
docker rmi mysql:5.5

镜像被使用中,无法删除

6、为一个镜像打tag

docker tag {source_images_name:tag your_image_name:tag}
# 例,将下载的镜像mysql打一个tag为newmysql
# 此时,docker images | grep mysql查到的image ID是一样的
# 可以给一个镜像打很多tag,但实际上指的是同一个镜像
docker tag mysql newmysql

7、将image保存为tar

docker save mysql > mysql.tar
# 执行后,生成文件mysql.tar

8、load image

docker load < busybox.tar.gz

六、Docker安装jenkins

1、搭建指令

docker run --name myjenkins -itd -p 5003:8080 -p 50000:50000 --restart always --privileged=true  --user root  --env JAVA_OPTS="-Xmx8192m" -v $(pwd)/jenkins_data:/var/jenkins_home -v /var/run/docker.sock:/var/run/docker.sock -v /bin/docker:/bin/docker  jenkins/jenkins:lts

–name : 指定容器名称
-d : 后台运行
-p : 设置端口映射(8080端口为jenkins的主服务,web服务的端口,50000为jenkins的slave要连接的端口号)
–restart : 如果容器因为异常原因crash了,报错退出运行了,那么docker会自动帮忙重启
–privileged=true :为了安全着想,默认关闭了一些权限,在jenkins中把它打开,希望jenkins可以调用docker
-v : 将文件docker.sock挂载到容器的/bin/docker:/bin/docker,容器里的jenkins就会读这个文件调docker。但默认调docker会有一些权限相关的问题。所有用–privileged=true开启特权权限。用–user root表示启动容器的时候使用root用户进行启动,如果不指定的话,会使用jenkins的默认用户(jenkins)
–env : 指定环境变量
-v : 文件挂载,将jenkins_home挂载出来

2、通过网址访问jenkins服务
在这里插入图片描述

七、Docker搭建数据库服务MySQL

1、搭建指令

docker run --name myr-mysql -v /home/myr/service/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=1qaz9ol. -p 8888:3306 -d mysql:5.5

2、通过网址访问数据库MySQL
在这里插入图片描述

八、Docker搭建项目管理平台Jira

1、搭建指令

docker run --name myr-jira -v /home/myr/service/jira:/var/atlassian/application-data/jira -d -p 5004:8080 atlassian/jira-software

2、通过网址访问项目管理平台Jira
在这里插入图片描述

九、Docker搭建测试用例管理平台testlink

testlink没有办法自己保存自己的数据,需要借助数据库保存
所以搭建testlink,实际上需要两行命令,也就是要启动两个容器

容器启动的时候,docker生成的随机的ip地址,docker的ip地址是会变的,每次启动的时候都去查一下ip是很麻烦的。而且这个ip地址是虚拟的ip地址,不经过路由表。启动容器的时候,是没有办法指定ip地址的。
问题:一个容器要往另一个容器发送请求的话,是需要知道它的ip地址的。解决方法:–link,将两个容器进行链接,让这两个容器可以通信。
1、搭建指令

docker run -d --name myr_mariadb -e ALLOW_EMPTY_PASSWORD=yes -e MARIADB_USER=bn_testlink -e MARIADB_DATABASE=bitnami_testlink -v /home/myr/service/mysql:/var/lib/mysql -p 8088:3306 bitnami/mariadb:latest

docker run -d --name myr_testlink -p 5005:8080 -p 444:443 -e ALLOW_EMPTY_PASSWORD=yes -e TESTLINK_DATABASE_USER=bn_testlink -e TESTLINK_DATABASE_NAME=bitnami_testlink --link myr_mariadb bitnami/testlink-archived

testlink未正常启动,原因待查

十、Docker搭建代码管理仓库Gitlab

1、搭建指令

# 拉取Gitlab镜像
docker pull gitlab/gitlab-ce:latest
# 启动容器
docker run --name myr_gitlab -itd  -p 5006:80 -p 9922:22 -v /home/gitlab/etc:/etc/gitlab  -v /home/gitlab/log:/var/log/gitlab -v /home/gitlab/opt:/var/opt/gitlab --restart always --privileged=true --name gitlab gitlab/gitlab-ce

-p 5006:80
将容器内80端口映射至宿主机5006端口,用于访问gitlab
-p 9922:22
将容器内22端口映射至宿主机9922端口,用于访问ssh
2、

#进容器内部
docker exec -it gitlab /bin/bash
 
#修改gitlab.rb
vi /etc/gitlab/gitlab.rb
 
#加入如下
#gitlab访问地址,可以写域名。如果端口不写的话默认为80端口
external_url 'http://192.168.56.101'
#ssh主机ip
gitlab_rails['gitlab_ssh_host'] = '192.168.56.101'
#ssh连接端口,9922,用于访问ssh
gitlab_rails['gitlab_shell_ssh_port'] = 9922
 
# 让配置生效
gitlab-ctl reconfigure

在这里插入图片描述

### 注意不要重启,/etc/gitlab/gitlab.rb文件的配置会映射到gitlab.yml这个文件,
### 由于在docker中运行,在gitlab上生成的http地址应该是http://192.168.56.101:5006,所以,要修改下面文件

3、

# 修改http和ssh配置
vi /opt/gitlab/embedded/service/gitlab-rails/config/gitlab.yml
 
  gitlab:
    host: 192.168.56.101
    port: 5006 # 这里改为5006,用于访问gitlab
    https: false

在这里插入图片描述
在这里插入图片描述
4、退出容器
在这里插入图片描述
5、访问gitlab
在这里插入图片描述

十一、Docker官方镜像网站

https://hub.docker.com/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值