CICD系列之docker


记录个人认为有价值的所有跟docker相关的配置和操作

Docker安装

官网安装教程

卸载老版本

sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

配置docker yum 源

sudo yum install -y yum-utils
sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo

安装docker

sudo yum install docker-ce docker-ce-cli containerd.io

配置docker

配置daemon.json

vim /etc/docker/daemon.json
 
{
	"exec-opts": [
		"native.cgroupdriver=systemd"
	],
	"registry-mirrors": [
		"https://docker.hpcloud.cloud",
		"https://docker.m.daocloud.io",
		"https://docker.unsee.tech",
		"https://docker.1panel.live",
		"http://mirrors.ustc.edu.cn",
		"https://docker.chenby.cn",
		"http://mirror.azure.cn",
		"https://dockerpull.org",
		"https://dockerhub.icu",
		"https://hub.rat.dev"
	],
	"insecure-registries": [
		"172.17.0.9:9001"
	]
}
 
# native.cgroupdriver:k8s的kubelet使用的是systemd驱动。如果要搭建k8s这里需要配置下,修改kubelet配置也可以,相对麻烦点;
# registry-mirrors:镜像下载地址,修改为国内地址,加速镜像下载速度;
# insecure-registries:docker私有仓库默认是通过https访问的,配置为非安全模式,可以通过http的方式访问私有仓库
#如果docker pull 拉镜像报错(不管报什么错),大概率是上面配置的国内镜像仓库访问的问题,百度找最新的国内镜像仓库替换掉就行了。
 
#重启docker守护进程
sudo systemctl daemon-reload
sudo systemctl restart docker

配置支持远程连接

vim /usr/lib/systemd/system/docker.service
ExecStart=/usr/bin/dockerd -H fd:// -H tcp://0.0.0.0:1802 --containerd=/run/containerd/containerd.sock
# 端口最好不要用默认的2375(坏人太多了^_^)

Docker常用命令

# 镜像相关操作
docker build 根据dockerfile构建镜像
docker search imageName 搜索镜像(模糊搜索)
docker pull imageName 拉取镜像
docker rmi [-f] imageId/imagename 删除镜像
docker image ls 查看镜像
docker image inspect imageId/imagename 查看镜像的详细信息
# 容器相关操作
docker 非交互式启动容器 如 docker run --name register --net host devops_register
docker 交互式启动容器 docker run --rm -it devops_register /bin/bash
docker rm [-f] containerId/containerName 删除容器
docker ps 查看所有运行的容器
docker container ls [-a] 查看运行的容器 :-a 查看所有容器
docker container inspect  containerId/containerName 查看容器的详细信息
# 网络相关操作
docker network create networkName 创建网络
docker network connect containerId/containerName networkId/networkName 把容器连接到指定网络上
docker network inspect networkId/networkName 查看网络的详细信息
docker network ls 查看网络
# 宿主机与容器之间实现资源拷贝
docker cp [containerName:file]source [containerName:file]target :docker cp register:/etc/config ./

docker-compose安装

官网安装教程

# 下载执行文件
sudo curl -L "https://github.com/docker/compose/releases/download/1.28.5/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
# 给执行文件添加可执行权限
sudo chmod +x /usr/local/bin/docker-compose
# 把可执行软链到/usr/bin目录下(echo $PATH看下,如果/usr/local/bin也在系统环境path里,可以无视软链操作)
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
# 查看是否安装成功
docker-compose -v(--version)
### GitLab CI/CD 使用 Docker 教程 #### 安装并启动 GitLab Runner 为了使 GitLab CI/CD 能够运行基于 Docker 的作业,需先安装 GitLab Runner 并将其设置为服务。这可以通过执行如下命令来完成: ```bash docker run -d --name gitlab-runner-docker \ --restart always -v $PWD:/etc/gitlab-runner \ -v /var/run/docker.sock:/var/run/docker.sock \ gitlab/gitlab-runner:latest ``` 此操作会创建一个新的容器实例用于运行 GitLab Runner,并挂载主机上的 Docker 套接字文件以便于内部通信[^1]。 #### 配置 `.gitlab-ci.yml` 文件 `.gitlab-ci.yml` 是定义 CI/CD 流水线的核心配置文件,在这里可以指定不同阶段的任务及其依赖关系。对于想要利用 Docker 构建项目的场景来说,通常会在 `image:` 字段下指明所使用的基础镜像;而在脚本部分,则调用必要的 Docker CLI 指令来进行镜像打包与上传等工作[^2]。 下面是一个简单的例子展示了如何编写这样的 YAML 文档: ```yaml stages: - build - test - deploy variables: DOCKER_DRIVER: overlay2 services: - docker:dind build_image: stage: build image: docker:latest script: - docker info - docker login -u "$CI_REGISTRY_USER" -p "$CI_JOB_TOKEN" $CI_REGISTRY - docker build -t myapp:$CI_COMMIT_REF_NAME . - docker push myapp:$CI_COMMIT_REF_NAME only: - branches ``` 上述代码片段中包含了三个主要环节——构建(build)、测试(test)服务端部署(deploy),其中特别注意到了当涉及到实际处理逻辑时选择了官方提供的最新版 Docker 镜像作为执行上下文环境的一部分[^3]。 #### 处理常见错误 如果遇到 `/usr/bin/bash: line 136: docker: command not found` 类似的提示信息,那可能是因为当前环境下确实不存在可用的 Docker 可执行程序。解决办法之一就是确保选用含有预装好的 Docker 工具集的基础镜像,比如前面提到过的 `docker:latest` 或者其他经过验证支持 Docker-in-Docker (DinD) 功能的选择[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值