Docker

windows

下载

官网下载
国内镜像下载

启用Hyper-V

以管理员身份打开 PowerShell 控制台,运行以下命令

Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All

通过控制面板“设置”启用

右键单击 Windows 按钮并选择“应用和功能”。
选择相关设置下右侧的“程序和功能”。
选择“打开或关闭 Windows 功能”。
选择“Hyper-V”,然后单击“确定”。

找不到 Hyper-V

创建文件 Hyper-V.cmd,点击运行

pushd "%~dp0"
dir /b %SystemRoot%\servicing\Packages\*Hyper-V*.mum >hyper-v.txt
for /f %%i in ('findstr /i . hyper-v.txt 2^>nul') do dism /online /norestart /add-package:"%SystemRoot%\servicing\Packages\%%i"
del hyper-v.txt
Dism /online /enable-feature /featurename:Microsoft-Hyper-V-All /LimitAccess /ALL

安装 docker desktop

下载完成之后,双击打开直接下一步

# 可在设置里面更新源   https://9cpn8tt6.mirror.aliyuncs.com
#设置 -- Docker Engine -- 
"registry-mirrors": [
    "https://9cpn8tt6.mirror.aliyuncs.com"
]

安装 WSL 更新包

打开 docker desktop 出现 WSL 2 installation is incomplete,需要更新WSL
下载

注意

# -v //d/juan/gitlab/etc:/etc/gitlab    # 在 windows 中映射数据, //d 代表盘符    /juan  文件夹  
# -v /root/gitlab/etc:/etc/gitlab    	# 在 linux 中映射数据

参考链接

链接1
链接2

Ubuntu

启用 SSH

# Ubuntu 上启用 SSH,并允许远程连接
sudo apt update  # 更新
sudo apt install openssh-server  # 安装
sudo systemctl status ssh   	# ssh 状态
sudo ufw allow ssh				# 开放ssh端口

sudo apt-get install vim-gtk   # 安装vim
sudo vim /etc/ssh/sshd_config  # 修改文件允许远程访问
# 找到PermitRootLogin without-password 修改为PermitRootLogin yes # 允许账号密码远程连接
service ssh restart  # 重启ssh
sudo ufw enable   # 开启防火墙
sudo ufw reload   # 重启防火墙

ip a  # 查看当前ip

sudo ufw status # 查看开放端口
sudo ufw allow 9123  # 开放端口
sudo ufw allow 9123/tcp  # 开放端口

测试是否通过

# 可使用工具根据  ip:22    输入账号密码,进行连接

安装 docker

sudo apt-get remove docker docker-engine docker.io containerd runc # 卸载旧版本

# 更新
sudo apt-get update 

# Docker在Ubuntu上依赖一些软件包
sudo apt-get install ca-certificates curl gnupg lsb-release  

# 添加软件源的 GPG 密钥
curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add - 

# 添加Docker软件源
sudo add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"

 # 安装docker
apt-get install docker-ce docker-ce-cli containerd.io 

# 配置用户组(可选)避免每次使用Docker时都需要使用sudo
sudo usermod -aG docker $USER 

# 安装工具
apt-get -y install apt-transport-https ca-certificates curl software-properties-common

# 切换镜像源
# /etc/docker   下创建文件 daemon.json
# 写入   ,   可写入多个源
{
  "registry-mirrors": [
    "https://9cpn8tt6.mirror.aliyuncs.com"
  ]
}
# 重启服务
sudo systemctl daemon-reload 
sudo systemctl restart docker

sudo docker info
# 结果中显示了我们设置的镜像服务器地址,则说明设置已经生效,返回的信息类似下面这样:
#Registry Mirrors:
# https://9cpn8tt6.mirror.aliyuncs.com

测试是否通过

docker info	# 查看版本

docker 安装镜像

Mysql

docker container run -d -p 3305:3306 -v /root/mysql/datadir:/var/lib/mysql -v /root/mysql/conf:/etc/mysql/conf.d -v /root/mysql/logs:/var/log/mysql --restart always --name mysql57 --env MYSQL_ROOT_PASSWORD=123456 mysql:5.7

# -d: 后台运行
#  -p 将容器的3306端口映射为本机的3305
#  --restart always  容器自启动
#  --name 为容器指定一个名称
#  --env  向容器进程传入一个环境变量MYSQL_ROOT_PASSWORD,该变量会被用作 MySQL 的根密码
#  --env 向容器进程传入一个环境变量MYSQL_DATABASE,容器里面的 MySQL 会根据该变量创建一个同名数据库
# mysql:5.7  拉取镜像

# 可挂载数据卷保存数据,若主机内目录不存在将会自动创建
# 主机数据库目录/root/mysql/datadir        容器数据库目录/var/lib/mysql
# 主机数据库配置文件/root/mysql/conf       容器数据库配置文件/etc/mysql/conf.d
# 主机数据库日志目录/root/mysql/logs		  容器数据库日志目录/var/log/mysql
# 进入容器实例
docker exec -it mysql57 /bin/bash
# 登录MySQL
mysql -uroot -p 密码
#设置mysql允许访问
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;

测试是否通过

# 可使用可视化数据库工具根据 ip:3305 ,账号 root , 密码 123456 ,进行连接

Nginx

docker pull nginx

# 启动一个临时容器
docker run -d --name nginx nginx
# 将nginx 配置复制到宿主机上,   进入root/nginx/conf/    (新建)
cd root/nginx/conf/
docker cp nginx:/etc/nginx ./   # 将nginx容器的文件移动到当前目录
# 新建  root/nginx/html/
# 新建  root/nginx/log/
docker stop nginx	# 停止容器
docker rm nginx		# 删除容器


docker run -d -p 80:80 -p 443:443 --name nginx --restart=always -e TZ="Asia/Shanghai" -v /root/nginx/html:/usr/share/nginx/html:ro -v /root/nginx/conf/nginx:/etc/nginx/:ro -v /root/nginx/log:/var/log/nginx nginx

# :ro:表示容器内部的nginx文件是只读
# -e TZ="Asia/Shanghai":表示把时区设置为中国的时区
<!--创建 index.html,吧这个文件放在 /root/nginx/html 下面,访问 ip:80 端口-->
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>测试</title>
</head>
<body>
    <div style="color: red;">测试11111</div>
</body>
</html> 

测试是否通过

# 可使用浏览器根据 ip:80 ,查看是否显示测试界面

Java

docker pull java:8

方式一

# 将jar打包成镜像
# 例: 将jar包上传到    	/root/java8/jars/demo.jar
cd /root/java8/jars		# 进入目录
touch Dockerfile		# 创建docker打包镜像文件
vim Dockerfile		 	# 编写

FROM java:8								# 拉取jdk8作为基础镜像
MAINTAINER sun							# 作者
ADD demo.jar demo.jar					# 添加jar到镜像并命名为demo.jar
EXPOSE 8080								# 镜像启动后暴露的端口
ENTRYPOINT ["java","-jar","demo.jar"]	# jar运行命令,参数使用逗号隔开
docker build -t demo .					# 注意 最后的点,demo 镜像名称
docker images ls						# 查看镜像,应有demo

docker run -d --restart always --name demo -p 8080:8080 demo

方式二

# 创建容器运行jar		/usr/app.jar 容器jar文件			/root/java8/jars/demo.jar  宿主机jar文件
docker run -d --name demo -p 8080:8080 -v /root/java8/jars/demo.jar:/usr/app.jar java:8 java -jar -Xms256m -Xmx256m /usr/app.jar

方式三

链接

测试是否通过

# 可使用浏览器根据 ip:端口,查看

GitLab

# gitlab-ce为稳定版本,版本默认最新latest版本
docker pull gitlab/gitlab-ce

docker run -i -d -p 3000:80 -p 9922:22 -v /root/gitlab/etc:/etc/gitlab  -v /root/gitlab/log:/var/log/gitlab -v /root/gitlab/opt:/var/opt/gitlab --restart always --privileged=true -u root --name gitlab gitlab/gitlab-ce
# -i  以交互模式运行容器,通常与 -t 同时使用命令解释:
#-d  后台运行容器,并返回容器ID
#-p 3000:80  将容器内80端口映射至宿主机3000端口,这是访问gitlab的端口
#-p 9922:22  将容器内22端口映射至宿主机9922端口,这是访问ssh的端口
#-v ./gitlab/etc:/etc/gitlab  将容器/etc/gitlab目录挂载到宿主机./gitlab/etc目录下,若宿主机内此目录不存在将会自动创建,其他两个挂载同这个一样
#--restart always  容器自启动
#--privileged=true -u root  让容器获取宿主机root权限
#--name gitlab  设置容器名称为gitlab
#gitlab/gitlab-ce  镜像的名称,这里也可以写镜像ID
# 进入容器实例     可省略此步,直接打开3000端口进行操作
docker exec -it gitlab /bin/bash
# 修改 gitlab.rb
vi /etc/gitlab/gitlab.rb
	# gitlab访问地址
	external_url 'http://127.0.0.1'
	# ssh主机ip
	gitlab_rails['gitlab_ssh_host'] = '127.0.0.1'
	# ssh连接端口
	gitlab_rails['gitlab_shell_ssh_port'] = 9922
# 让配置生效
gitlab-ctl reconfigure
# 修改 gitlab.yml
vi /opt/gitlab/embedded/service/gitlab-rails/config/gitlab.yml
	gitlab:
    	host: 127.0.0.1
    	port: 3000 # 这里改为3000
    	https: false
# 重启
gitlab-ctl restart
# root 默认密码
# 这个文件将在首次执行reconfigure后24小时自动删除
vi /etc/gitlab/initial_root_password

测试是否通过

# 可使用浏览器根据 ip:3000,查看
# 502 可能是服务正在启动稍等一会
# 使用 root , 默认密码登录之后,需要修改密码;默认密码只有24h时效;可配置是否允许注册

Jenkins

docker pull jenkins/jenkins:2.426.2
docker run -d -p 8091:8080 -p 50000:50000 --name jenkins --privileged=true -u root --restart=always  -v //d/juan/jenkins:/var/jenkins_home -v //d/juan/maven:/usr/local/maven -v //d/juan/nodejs:/usr/local/nodejs jenkins/jenkins:2.426.2

# -d: 后台运行
#  -p 将容器的8080端口映射为本机的8091
#  --name 为容器指定一个名称
# --privileged=true -u root  root权限
#  --restart always  让容器获取宿主机root权限
# -v //d/juan/jenkins:/var/jenkins_home   	# 映射jenkins目录为 //d/juan/jenkins
# jenkins/jenkins:2.426.2   镜像

# 以下可省略
# -v //d/juan/nginx/html:/usr/local/nginx   # 如需要自动化部署html项目,推荐将nginx的html目录映射
# -v //d/juan/jars:/usr/local/jars    		# 如需要自动化部署maven项目,推荐将宿主机存放jar包的目录映射
# -v //d/juan/maven:/usr/local/maven   		# 映射maven目录为 //d/juan/maven
# -v //d/juan/nodejs:/usr/local/nodejs		# 映射nodejs目录为 //d/juan/nodejs 

# 如果jenkins未安装git 或 java(jdk) 
# 1. 直接全局,得到安装目录修改jenkins的配置(全局安装应不需要修改)
# 2. 或者如nodejs类似,映射到某个文件夹进行局部挂载,得到安装目录修改jenkins的配置 (手动安装如下)
<!--修改镜像源  //d/juan/jenkins/hudson.model.UpdateCenter.xml--> 
<?xml version='1.1' encoding='UTF-8'?>
<sites>
  <site>
    <id>default</id>
    <url>https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json</url>
  </site>
</sites>
// 此步骤可忽略

// windows
// 修改镜像源  //d/juan/jenkins/updates/default.json
// goole 改成 baidu
// http://updates.jenkins.io/download  改成 https://mirrors.tuna.tsinghua.edu.cn/jenkins

// linux
// sudo sed -i 's#updates.jenkins.io/download#mirrors.tuna.tsinghua.edu.cn/jenkins#g' default.json && sudo sed -i 's#www.google.com#www.baidu.com#g' default.json
# 默认密码
# //d/juan/jenkins/secrets/initialAdminPassword
# 首页 -- Manage Jenkins -- Plugins (插件管理) 
	# Available plugins (下载)
		# NodeJS
		# Maven Integration
# 安装环境这里测试为手动安装  

# 例:nodejs			(下列步骤完成之后可能出现node -v没问题,npm -v报错,我的解决方法是换个版本)
# 下载:   			https://nodejs.org/dist/v14.14.0/node-v14.14.0-linux-x64.tar.gz
# 放在映射目录下 	//d/juan/nodejs	
# docker exec -it jenkins /bin/bash 
# 进入				/usr/local/nodejs
# 解压				tar -xzvf xxx.tar.gz
# 进入 				xxx/bin
# 测试是否可用		./node -v
# 添加全局			ln -s /usr/local/nodejs/xxx/bin/node 	/usr/bin/node
# 添加全局			ln -s /usr/local/nodejs/xxx/bin/npm 	/usr/bin/npm
# node -v
# npm -v

# 例:maven
# 下载:   			https://dlcdn.apache.org/maven/maven-3/3.9.6/binaries/apache-maven-3.9.6-bin.tar.gz
# 放在映射目录下 	//d/juan/maven
# docker exec -it jenkins /bin/bash 
# 进入				/usr/local/maven
# 解压				tar -xzvf xxx.tar.gz
# 进入 				xxx/bin
# 测试是否可用		./mvn -v
# 添加全局			ln -s /usr/local/maven/xxx/bin/mvn  /usr/bin/mvn 
# mvn -v
<!--可配置maven仓库地址和仓库源-->
<!--/usr/local/maven/xxx/conf/settings.xml-->

<!--设置本地仓库路径-->
<localRepository>/usr/local/maven/xxx/localRepository</localRepository>
<!-- 在mirrors标签里添加mirror标签,指定阿里云私服下载依赖 -->
<mirrors>
	<mirror>
 		<id>alimaven</id>
  		<name>aliyun maven</name>
  		<url>https://maven.aliyun.com/nexus/content/groups/public/</url>
 		<mirrorOf>central</mirrorOf>
	</mirror>
</mirrors>
# 首页 -- Manage Jenkins -- Tools 
	# Maven 安装
		# Name :    		maven
		# MAVEN_HOME :   	/usr/local/maven/xxx
	# NodeJS 安装
		# Name :    		nodejs
		# MAVEN_HOME :  	/usr/local/nodejs/xxx/bin 	

测试是否通过

# 可使用浏览器根据 ip:8091,查看
# 第一次需要输入默认密码,如上
# 点击安装插件,完成之后会有输入账号密码界面
# 可如上配置 nodejs / maven 环境

# 首页 
	#- 新建Item 
	#- newtask(自定义名称) 
	#- Freestyle project
	#- 确定
	#- Build Steps
		#- 执行 shell
			java --version 
			git --version
			node -v		# 没配置node 可去掉
			npm -v		# 没配置node 可去掉
			mvn -v		# 没配置maven可去掉
		#- 应用 / 保存
		#- 立即构建 
		#- 可在构建历史中查看控制台输出

GitLab + Jenkins 自动化部署

nodejs环境

Jenkins
# 首页 
	#- 新建Item 
	#- nodejstask(自定义名称) 
	#- Freestyle project
	#- 确定

# Configure
	# 源码管理
		# Git
			# Repository URL   项目的http地址  (测试使用http)
			# Credentials 凭证  (添加)
				# 用户名   密码
			# 指定分支  */main
		# 构建触发器
			#  ✔ 触发远程构建 (例如,使用脚本)
				# 输入值例: xxxxxxxxxx # http://Jenkins用户名:API token @JenkinsIP+端口/job/项目名称/build?token=xxxxxxxxxx 
			#  ✔ GitHub hook trigger for GITScm polling 
		# Build Steps
			# 执行 shell
				node -v 								# 查看node版本
				npm -v									# 查看npm版本			

				rm -rf node_modules						# 删除上次下载的依赖
				rm -rf dist								# 删除上次打包的目录
				rm -rf nodetask							# 删除上次打包重命名的目录
				rm -rf /usr/local/nginx/nodetask		# /usr/local/nginx这个路径是映射宿主机nginx/html目录的文件夹,nodetask是自定义文件名称
				npm install								# 下载依赖
				npm run build							# 打包
				mv dist nodetask						# 重命名
				mv nodetask /usr/local/nginx			# 移动
# 首页 -- 系统管理 -- 管理用户 -- root(某个用户) -- 设置 -- API Token -- 生成   # 生成的API Token 在gitlab中使用
# 应用
GitLab 
# 新建一个 ceshi 项目
# 在管理--设置--网络--外发请求
	# ✔ 允许Webhook和服务对本地网络的请求   保存
# 在项目设置--Webhooks
	# 输入 http://root:112063690f0c3f54fb5ff61f3fe54332d1@192.168.1.100:8091/job/nodejstask/build?token=xxxxxxxxxx
	# Secret 令牌 :   xxxxxxxxxx
# 保存    测试--push events

maven 环境

Jenkins
# 首页 
	#- 新建Item 
	#- maventask(自定义名称) 
	#- Maven
	#- 确定
# Configure
	# 源码管理
		# Git
			# Repository URL   项目的http地址  (测试使用http)
			# Credentials 凭证  (添加)
				# 用户名   密码
			# 指定分支  */main
		# 构建触发器
			#  ✔ 触发远程构建 (例如,使用脚本)
				# 输入值例: xxxxxxxxxx # http://Jenkins用户名:API token @JenkinsIP+端口/job/项目名称/build?token=xxxxxxxxxx 
			#  ✔ GitHub hook trigger for GITScm polling 
	# Build
		# Root POM
			# pom.xml
		# Goals and options
			# clean package -U -Dmaven.test.skip=true
	# Post Steps
		# Run only if build succeeds   (构建成功触发)
		# Add post-build step
			# 执行 shell
				ls										# 查看文件目录
				rm -rf xxx.jar							# 删除上次遗留
				rm -rf demo.jar							# 删除上次遗留
				rm -rf /usr/local/jars/demo.jar			# 删除上次遗留
				cp /target/xxx.jar ./					# 将jar拷贝到当前目录
				mv xxx.jar demo.jar						# 重命名
				mv demo.jar /usr/local/jars				# 移动
				# 后续可运行宿主机文件让jar运行
GitLab 
# 配置同上

参考链接

链接1
链接2
链接3

Docker 命令

systemctl start docker      # 运行docker 
systemctl stop docker	    # 停止docker
systemctl status docker     # 查看docker状态
systemctl restart  docker	# 重启docker

docker info       #docker信息
docker version    #docker版本

docker image ls #所有镜像 
docker image pull #下载镜像 
docker image rm #删除镜像 

docker run 镜像id #新建容器并启动
docker ps #列出所有运行的容器 docker container list
docker rm 容器id #删除指定容器
docker rm -f $(docker ps -aq)  	 #删除所有的容器
#启动和停止容器
docker start 容器id	#启动容器
docker restart 容器id	#重启容器
docker stop 容器id	#停止当前正在运行的容器
docker kill 容器id	#强制停止当前容器
#退出容器
exit 		#容器直接退出
ctrl +P +Q  #容器不停止退出


docker exec -it 容器id /bin/bash  # 进入容器

参考链接

链接

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值