一、Docker介绍
1、什么是docker
Docker 容器是一个开源的应用容器引擎,让开发者可以以统一的方式打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何安装了docker引擎的服务器上
(包括流行的Linux机器、windows机器),也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app)。几乎没有性能开销,可以很
容易地在机器和数据中心中运行。最重要的是,他们不依赖于任何语言、框架包括系统。
2、docker安装
具体安装参考docker官网地址或者CSDN地址
https://www.docker.com/ && https://blog.csdn.net/qq_47183158/article/details/125738396
docker启动命令,docker重启命令,docker关闭命令
启动
systemctl start docker
守护进程重启
systemctl daemon-reload
重启docker服务
systemctl restart docker / service docker restart
关闭
docker service docker stop / docker systemctl stop docker
3、docker设计目标
(1)、提供一个简单的应用程序打包工具,可以将应用程序和它相关依赖的包都会打进去
(2)、开发人员和运维人员职责逻辑分离,开发人员只需要关心如何打包容器,运维人员只需要关心怎么去管理这些容器,不需要关心里面具体的配置
(3)、多环境保持一致性,不管测试环境正式环境,只需要部署docker镜像
4、docker基本组成
(1)、docker client 客户端
(2)、docker daemon docker守护进程
(3)、docker images 镜像
(4)、docker container 容器
(5)、docker registry 镜像仓库
5、容器管理常用命令
docker ps #显示正在运行的容器
docker ps -a #显示所有容器
docker ps -l #显示最近的一个容器
docker ps -n2 #显示最近创建的两个容器
docker ps -q #显示容器ID
docker start 容器名 #启动容器
docker restart 容器名 #重启容器
docker stop 容器ID或容器名 #停止容器
docker kill 容器名 #强制停止容器
docker rm 容器ID或容器名 #删除容器
docker rm -f 容器名 #强制删除容器,可以删除运行中的容器
docker rm -v 容器名 #删除容器的同时也删除与之关联的volume
docker top 容器名 #查看容器里面的进程
docker stats 容器名 #查看容器资源使用情况(不指定容器,会查看所有容器的使用情况)
docker inspect 容器名 #查看容器元数据
docker exec -it 容器ID bash #进入容器,并分配一个新的终端
exit #退出容器
docker cp /etc/hosts 容器名:/opt #拷贝宿主机的hosts文件到容器的/opt目录下
docker cp 容器名:/opt/a.sh /tmp #拷贝容器的a.sh文件到宿主机的/tmp路径下
docker pause 容器名 #暂停容器
docker unpause 容器名 #取消暂停容器
docker commit -m="提交信息" -a="作者" 容器id 新镜像名:[Tag] #基于容器生成一个镜像(不推荐)
docker inspect -f '{{.HostConfig.LogConfig}}' 容器名 #查看容器日志策略
docker inspect --format "{{ .State.Pid }}" 容器名 #查看容器在宿主机对应的PID
6、Docker Log
-f #动态查看
-t #显示时间戳
--tail 20 #显示最近的20行
docker logs -f -t --tail 20 nginx
二、安装Jenkins
1、获取jenkins
docker pull jenkins/jenkins:2.277.1-centos
docker search jenkins docker pull jenkinsci/blueocean
2、映射本地数据卷的
路径为/data/jenkins_home/,你想放别的地方可以自行修改
mkdir -p /data/jenkins_home/
3、需要修改下目录权限
因为当映射本地数据卷时,/data/jenkins_home/目录的拥有者为root用户,而容器中jenkins用户的 uid 为 1000
chown -R 1000:1000 /data/jenkins_home/
4、创建容器
docker run -d --name jenkins -p 8888:8080 -p 50000:50000 -e JAVA_OPTS=-Duser.timezone=Asia/Shanghai -v /data/jenkins_home:/var/jenkins_home jenkins/jenkins:2.277.1-centos
docker run -d --name jenkins -p 8888:8080 -p 50000:50000 -e JAVA_OPTS=-Duser.timezone=Asia/Shanghai -v /data/jenkins_home:/var/jenkins_home jenkinsci/blueocean
docker run -d -p 80:8080 -v /var/jenkins_home/:/var/jenkins_home/ --name="jenkins" jenkinsci/blueocean
运行时添加时区//-e JAVA_OPTS=-Duser.timezone=Asia/Shanghai
-d 标识是让 docker 容器在后台运行
--name 定义一个容器的名字,如果没有指定,那么会自动生成一个随机数字符串当做UUID
-p 8888:8080 端口映射,我本地的8080被占用了,所以随便映射了一个8888
-p 50000:50000 端口映射
-v /data/jenkins_home:/var/jenkins_home 绑定一个数据卷,/data/jenkins_home是刚才创建的本地数据卷
配置 Jenkins
打开 Jenkins
通过浏览器访问 http://localhost:8888/(注意替换成你自己的IP和端口)进入初始页
5、这里要求输入初始的管理员密码
根据提示密码在/var/jenkins_home/secrets/initialAdminPassword这个文件中,注意这个路径是 Docker 容器中的,所以我们通过如下命令获取一下
docker exec jenkins cat /var/jenkins_home/secrets/initialAdminPassword
别忘了我们映射了本地数据卷/data/jenkins_home/,所以也可以通过如下命令输出
# cat /data/jenkins_home/secrets/initialAdminPassword
8fbed467168d496fba3c8b1a3120017b
6、输入密码后,点击继续
这里选择安装推荐的插件,然后 Jenkins 会自动开始安装,如果插件安装很慢,
修改中文:先设置Locale为
将语言设定为zh_US,Jenkins切换为英文。
调用restart重启Jenkins:http://域名/restart。
再次语言设定为zh_CN,刷新即可。
7、进入容器
jenkins ID
e103cc8d4b48
docker exec -it e103cc8d4b48 /bin/bash
root用户进入
docker exec -it -u root e103cc8d4b48 /bin/bash
8、修改时区
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
docker cp /usr/share/zoneinfo/Asia/Shanghai d4b5b54bf414:/etc/localtime
9、安装jdk、git、maven
docker exec -it jenkins容器id /bin/bash 然后通过echo $JAVA_HOME来查看 java 路径在/usr/local中,然后配置进 jenkins 的 JAVA_HOME 中即可
通过which git查看 git 执行文件路径为/usr/bin/git,把这个复制到 jenkins 路径中
jenkins 容器中一般没有 maven 提供的,所以 jenkins 配置中我使用 install automatically
10、安装maven
docker exec -it e103cc8d4b48 /bin/bash
docker 容器cp文件到宿主机
docker cp jenkins: /var/jenkins_home/config.xml /root
docker cp -a e103cc8d4b48:/var/jenkins_home/config.xml /root
##覆盖容器文件
docker cp /root/config.xml e103cc8d4b48:/var/jenkins_home/
11、项目权限配置
https://blog.csdn.net/kangzhuang521/article/details/109774420
docker exec -it 88c2c52e7b23 /bin/bash
docker cp default.conf rxcpp:/etc/nginx/conf.d/default.conf
标签:容器,home,data,jenkins,var,Jenkins,Docker,安装,docker From: https://www.cnblogs.com/dj2016/p/16873652.html