Centos搭建Docker
安装前提条件
Docker 要求 CentOS 系统的内核版本高于 3.10 ,首先验证你的服务器是否支持Docker!
通过 uname -r 命令查看当前的内核版本
uname -r
[krala@localhost ~]$ uname -r
3.10.0-1160.el7.x86_64
一. 安装Docker
- 首先检测我们的系统是否已经安装过Docker,如果安装则需卸载。代码中“\”符号为换行符,相当于一行内容分为多行,这是检测docker的各种组件
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
执行结果:
Loaded plugins: fastestmirror, langpacks
No Match for argument: docker
No Match for argument: docker-client
No Match for argument: docker-client-latest
No Match for argument: docker-common
No Match for argument: docker-latest
No Match for argument: docker-latest-logrotate
No Match for argument: docker-logrotate
No Match for argument: docker-engine
No Packages marked for removal
- 下载安装Docker依赖的工具,更新yum包 (生产环境此步骤操作须谨慎,自己学习的情况不影响生产下操作)
yum -y update
注意
yum -y update:升级所有包同时也升级软件和系统内核;
yum -y upgrade:只升级所有包,不升级软件和系统内核
执行结果:
vim-filesystem.x86_64 2:7.4.629-8.el7_9 vim-minimal.x86_64 2:7.4.629-8.el7_9
virt-what.x86_64 0:1.18-4.el7_9.1 vsftpd.x86_64 0:3.0.2-29.el7_9
webkitgtk4.x86_64 0:2.28.2-3.el7 webkitgtk4-devel.x86_64 0:2.28.2-3.el7
webkitgtk4-jsc.x86_64 0:2.28.2-3.el7 webkitgtk4-jsc-devel.x86_64 0:2.28.2-3.el7
wpa_supplicant.x86_64 1:2.6-12.el7_9.2 x3270.x86_64 0:3.3.12ga12-5.el7_9
x3270-text.x86_64 0:3.3.12ga12-5.el7_9 x3270-x11.x86_64 0:3.3.12ga12-5.el7_9
xfsdump.x86_64 0:3.1.7-4.el7_9 xmlsec1.x86_64 0:1.2.20-8.el7_9
xmlsec1-openssl.x86_64 0:1.2.20-8.el7_9 xorg-x11-drv-ati.x86_64 0:19.0.1-3.el7_7
xorg-x11-server-Xorg.x86_64 0:1.20.4-27.el7_9 xorg-x11-server-common.x86_64 0:1.20.4-27.el7_9
xterm.x86_64 0:295-3.el7_9.1 xz.x86_64 0:5.2.2-2.el7_9
xz-devel.x86_64 0:5.2.2-2.el7_9 xz-libs.x86_64 0:5.2.2-2.el7_9
zenity.x86_64 0:3.28.1-2.el7_9 zlib.x86_64 0:1.2.7-21.el7_9
zlib-devel.x86_64 0:1.2.7-21.el7_9
Complete!
- 安装需要的软件包, yum-util 提供yum-config-manager功能,另两个是devicemapper驱动依赖
yum install -y yum-utils device-mapper-persistent-data lvm2
执行结果:
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: mirrors.aliyun.com
* extras: mirrors.aliyun.com
* updates: mirrors.aliyun.com
Package yum-utils-1.1.31-54.el7_8.noarch already installed and latest version
Package device-mapper-persistent-data-0.8.5-3.el7_9.2.x86_64 already installed and latest version
Package 7:lvm2-2.02.187-6.el7_9.5.x86_64 already installed and latest version
Nothing to do
- 添加阿里仓库的软件源,更新本地镜像
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
执行结果:
Loaded plugins: fastestmirror, langpacks
adding repo from: http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
grabbing file http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo to /etc/yum.repos.d/docker-ce.repo
repo saved to /etc/yum.repos.d/docker-ce.repo
- 执行以下命令
sed -i 's/download.docker.com/mirrors.aliyun.com\/docker-ce/g' /etc/yum.repos.d/docker-ce.repo
yum makecache fast
执行结果:
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: mirrors.aliyun.com
* extras: mirrors.aliyun.com
* updates: mirrors.aliyun.com
http://mirrors.bfsu.edu.cn/centos/7.9.2009/os/x86_64/repodata/repomd.xml: [Errno 14] curl#52 - "Empty reply from server"
Trying other mirror.
base | 3.6 kB 00:00:00
docker-ce-stable | 3.5 kB 00:00:00
extras | 2.9 kB 00:00:00
updates | 2.9 kB 00:00:00
(1/2): docker-ce-stable/7/x86_64/primary_db | 140 kB 00:00:00
(2/2): docker-ce-stable/7/x86_64/updateinfo | 55 B 00:00:01
Metadata Cache Created
- 安装社区版
查看docker可用版本
yum list docker-ce --showduplicates | sort -r
安装Docker社区版
sudo yum -y install docker-ce
执行结果:
Total 10 MB/s | 112 MB 00:00:11
Retrieving key from https://mirrors.aliyun.com/docker-ce/linux/centos/gpg
Importing GPG key 0x621E9F35:
Userid : "Docker Release (CE rpm) <docker@docker.com>"
Fingerprint: 060a 61c5 1b55 8a7f 742b 77aa c52f eb6b 621e 9f35
From : https://mirrors.aliyun.com/docker-ce/linux/centos/gpg
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Installing : 2:container-selinux-2.119.2-1.911c772.el7_8.noarch 1/10
Installing : containerd.io-1.6.28-3.2.el7.x86_64 2/10
Installing : docker-compose-plugin-2.25.0-1.el7.x86_64 3/10
Installing : docker-buildx-plugin-0.13.1-1.el7.x86_64 4/10
Installing : 1:docker-ce-cli-26.0.0-1.el7.x86_64 5/10
Installing : slirp4netns-0.4.3-4.el7_8.x86_64 6/10
Installing : fuse3-libs-3.6.1-4.el7.x86_64 7/10
Installing : fuse-overlayfs-0.7.2-6.el7_8.x86_64 8/10
Installing : docker-ce-rootless-extras-26.0.0-1.el7.x86_64 9/10
Installing : 3:docker-ce-26.0.0-1.el7.x86_64 10/10
Verifying : 3:docker-ce-26.0.0-1.el7.x86_64 1/10
Verifying : fuse3-libs-3.6.1-4.el7.x86_64 2/10
Verifying : fuse-overlayfs-0.7.2-6.el7_8.x86_64 3/10
Verifying : slirp4netns-0.4.3-4.el7_8.x86_64 4/10
Verifying : 2:container-selinux-2.119.2-1.911c772.el7_8.noarch 5/10
Verifying : 1:docker-ce-cli-26.0.0-1.el7.x86_64 6/10
Verifying : containerd.io-1.6.28-3.2.el7.x86_64 7/10
Verifying : docker-buildx-plugin-0.13.1-1.el7.x86_64 8/10
Verifying : docker-ce-rootless-extras-26.0.0-1.el7.x86_64 9/10
Verifying : docker-compose-plugin-2.25.0-1.el7.x86_64 10/10
Installed:
docker-ce.x86_64 3:26.0.0-1.el7
Dependency Installed:
container-selinux.noarch 2:2.119.2-1.911c772.el7_8 containerd.io.x86_64 0:1.6.28-3.2.el7 docker-buildx-plugin.x86_64 0:0.13.1-1.el7
docker-ce-cli.x86_64 1:26.0.0-1.el7 docker-ce-rootless-extras.x86_64 0:26.0.0-1.el7 docker-compose-plugin.x86_64 0:2.25.0-1.el7
fuse-overlayfs.x86_64 0:0.7.2-6.el7_8 fuse3-libs.x86_64 0:3.6.1-4.el7 slirp4netns.x86_64 0:0.4.3-4.el7_8
Complete!
- 关闭防火墙,启动Docker
1)关闭防火墙
# 关闭
systemctl stop firewalld
# 禁止开机启动防火墙
systemctl disable firewalld
执行结果:
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
2)启动docker
systemctl start docker # 启动docker服务
systemctl stop docker # 停止docker服务
systemctl restart docker # 重启docker服务
systemctl enable docker # 设置开机自启
3)查看Docker版本
docker -v
执行节结果:
Docker version 26.0.0, build 2ae903e
查看Docker信息
docker info
执行结果:
Client: Docker Engine - Community
Version: 26.0.0
Context: default
Debug Mode: false
Plugins:
buildx: Docker Buildx (Docker Inc.)
Version: v0.13.1
Path: /usr/libexec/docker/cli-plugins/docker-buildx
compose: Docker Compose (Docker Inc.)
Version: v2.25.0
Path: /usr/libexec/docker/cli-plugins/docker-compose
Server:
Containers: 0
Running: 0
Paused: 0
Stopped: 0
Images: 0
Server Version: 26.0.0
Storage Driver: overlay2
Backing Filesystem: xfs
Supports d_type: true
Using metacopy: false
Native Overlay Diff: true
userxattr: false
Logging Driver: json-file
Cgroup Driver: cgroupfs
Cgroup Version: 1
Plugins:
Volume: local
Network: bridge host ipvlan macvlan null overlay
Log: awslogs fluentd gcplogs gelf journald json-file local splunk syslog
Swarm: inactive
Runtimes: io.containerd.runc.v2 runc
Default Runtime: runc
Init Binary: docker-init
containerd version: ae07eda36dd25f8a1b98dfbf587313b99c0190bb
runc version: v1.1.12-0-g51d5e94
init version: de40ad0
Security Options:
seccomp
Profile: builtin
Kernel Version: 3.10.0-1160.el7.x86_64
Operating System: CentOS Linux 7 (Core)
OSType: linux
Architecture: x86_64
CPUs: 8
Total Memory: 31.2GiB
Name: localhost.localdomain
ID: 93333783-132b-4675-81cb-b5886ec91bf4
Docker Root Dir: /var/lib/docker
Debug Mode: false
Experimental: false
Insecure Registries:
127.0.0.0/8
Live Restore Enabled: false
二. CentOS7安装DockerCompose
- 下载,Linux下需要通过命令下载:
# 安装
curl -L https://github.com/docker/compose/releases/download/1.23.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
执行结果:
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
100 11.1M 100 11.1M 0 0 3565k 0 0:00:03 0:00:03 --:--:-- 4906k
- 修改文件权限
# 修改权限
chmod +x /usr/local/bin/docker-compose
- Base自动补全命令:
# 补全命令
curl -L https://raw.githubusercontent.com/docker/compose/1.29.1/contrib/completion/bash/docker-compose > /etc/bash_completion.d/docker-compose
执行结果:
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 13500 100 13500 0 0 25134 0 --:--:-- --:--:-- --:--:-- 25139
Docker 部署jenkins
- Docker 镜像搜索
docker search jenkins
执行结果:
NAME DESCRIPTION STARS OFFICIAL
jenkins DEPRECATED; use "jenkins/jenkins:lts" instead 5685 [OK]
jenkins/jenkins The leading open source automation server 3881
jenkins/inbound-agent Docker image for a Jenkins agent which can c… 131
jenkins/jnlp-slave a Jenkins agent which can connect to Jenkins… 157
jenkins/ssh-agent Docker image for Jenkins agents connected ov… 52
jenkins/jnlp-agent-maven A JNLP-based agent with Maven 3 built in 9
jenkins/slave base image for a Jenkins Agent, which includ… 49
bitnami/jenkins Bitnami Docker Image for Jenkins 66
jenkins/ssh-slave A Jenkins slave using SSH to establish conne… 39
jenkins/agent 62
jenkins/jnlp-agent-ruby 1
jenkins/jnlp-agent-docker 10
jenkins/jnlp-agent-node 1
jenkins/ath Jenkins Acceptance Test Harness 1
jenkins/jnlp-agent-python A JNLP-based agent with Python built in 3
jenkins/jenkins-experimental Experimental images of Jenkins. These images… 3
rancher/jenkins-jenkins 1
jenkins/pct Plugin Compat Tester - no longer published a… 5
jenkins/jenkinsfile-runner Jenkinsfile Runner packages 3
rancher/jenkins-jnlp-slave 0
jenkins/core-pr-tester Docker image for testing pull-requests sent … 1
jenkins/jnlp-agent-alpine 2
jenkins/jnlp-agent-coresdk 2
rancher/jenkins-slave Jenkins Build Slave 0
jenkins/evergreen An automatically self-updating Jenkins distr… 5
获取2.426.1 (November 2023) and newer版本的jenkins, jenkins官网地址:https://pkg.jenkins.io/redhat-stable/, 注意:最好是拉取最新版的Jenkins镜像,旧版后续安装很多插件无法安装
拉取镜像报错,多试几次
[root@localhost /]# docker pull jenkins/jenkins:2.426.1
Error response from daemon: Get "https://registry-1.docker.io/v2/": net/http: request canceled (Client.Timeout exceeded while awaiting headers)
docker pull jenkins/jenkins:2.426..1
获取版本镜像,有获取的各进度显示,这个需要等待几分钟,最后显示到对应版本信息的时候,表示拉取完成了
[root@localhost /]# docker pull jenkins/jenkins:2.426.1
2.426.1: Pulling from jenkins/jenkins
1339eaac5b67: Pull complete
ee7fe1de5234: Pull complete
a167e5ee9d3d: Pull complete
635f2040c45d: Pull complete
0de24a2d2be8: Pull complete
713854f8e14e: Pull complete
e7c234de7c34: Pull complete
e7c993dd256d: Pull complete
9418264787f2: Pull complete
a42be93486cb: Pull complete
fba1e1892f7f: Pull complete
af4f2c783b33: Pull complete
f7f0bf5c5bf2: Pull complete
9e8d31920a67: Pull complete
Digest: sha256:c7b2811764804691a0eb8cc83a1e30c6ebdce0bf127818608e1adad753e905b4
Status: Downloaded newer image for jenkins/jenkins:2.426.1
docker.io/jenkins/jenkins:2.426.1
- Jenkins 安装及启动
mkdir -p /home/Krala/jenkins_node
升级权限,赋权:
chown -R 1000 /home/Krala/jenkins_node
chmod -R 777 /home/Krala/jenkins_node
赋文件访问权限
chmod 777 /var/run/docker.sock
配置并启动jenkins docker
docker run -d -uroot -p 8282:8080 --name jenkinsqq -e LANG=C.UTF-8 -v /home/Krala/jenkins_node:/var/jenkins_home jenkins/jenkins:2.426.1
执行结果:
[root@localhost /]# docker run -d -uroot -p 8282:8080 --name jenkinsqq -e LANG=C.UTF-8 -v /home/Krala/jenkins_node:/var/jenkins_home jenkins/jenkins:2.426.1
4350ac84e7e309809c7e01d5eb68e83b32530a62df74bd87142e10e8a9d2f8a0
参数说明:
-d 后台启动
-p 端口映射 jenkins默认8080,映射为8000,及Web操作界面的端口。
-v 目录挂载
最后两个是 docker 的运行目录和启动目录。
--name 容器名称
启动完成后,通过 docker ps -a 查看
docker ps -a
[root@localhost /]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
4350ac84e7e3 jenkins/jenkins:2.426.1 "/usr/bin/tini -- /u…" 8 seconds ago Up 7 seconds 50000/tcp, 0.0.0.0:8282->8080/tcp, :::8282->8080/tcp jenkinsqq
进入 jenkins 的容器内部,查看 docker 是否挂载成功
docker exec -it -uroot jenkinsqq bash
[root@localhost /]# docker exec -it -uroot jenkinsqq bash
root@4350ac84e7e3:/#
root@4350ac84e7e3:/#
root@4350ac84e7e3:/#
cat /var/jenkins_home/secrets/initialAdminPassword ,得到密码
cat /var/jenkins_home/secrets/initialAdminPassword
root@4350ac84e7e3:/# cat /var/jenkins_home/secrets/initialAdminPassword
2580fb4bbfcd487a9884c8d209eb6ac5