docker 卸载
1.查看docker 软件list目录
yum list installed | grep docker
2.卸载 软件list目录
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
3.删除 物理磁盘数据
rm -rf /var/lib/docker
rm -rf /var/lib/containerd
docker 安装
1.卸载docker
2.安装准备
#安装必要的一些系统工具
yum install -y yum-utils device-mapper-persistent-data lvm2
# 添加docker的 yum 仓库
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
3.安装
yum -y install docker-ce docker-ce-cli containerd.io
sudo yum install docker-ce docker-ce-cli containerd.io
4.验证
docker run hello-world
jar打包为docker镜像
- 创建dockerfile的文件添加内容
docker build -f 文件参数 -t 仓库地址:版本
#本地penjdk:8-jre 为基础镜像,来构建此镜像,镜像必须存在
FROM openjdk:8-jre
#WORKDIR指令用于指定容器的一个目录, 容器启动时执行的命令会在该目录下执行。
WORKDIR /opt/docker/images/metabase/
#将当前metabase.jar 复制到容器根目录下
ADD metabase.jar metabase.jar
#将依赖包 复制到容器根目录/libs下,metabase.jar已不再需要添加其它jar包
#ADD libs /libs
#暴露容器端口为3000 Docker镜像告知Docker宿主机应用监听了3000端口
EXPOSE 3000
#容器启动时执行的命令
CMD java -jar metabase.jar
2.执行镜像构建命令 :-f 指定dockerfile -t 指定镜像名:版本
docker build -f bianque-modules-system.DockerFile -t test/bianque-modules-system:3.6.4 .
3.标记镜像push远程仓库的仓库地址:docker tag imagID 远程仓库地址:版本
docker tag 9a91bb31a566 registry.cn-hangzhou.aliyuncs.com/shanheyun/bianque:v1.0.0
4.推送tag的镜像到远程仓库:docker push tag的镜像名:版本
docker push registry.cn-hangzhou.aliyuncs.com/shanheyun/bianque:v1.0.0
5.脚本开发
1.docker.bash文件编写
#-f dockerFile -t localRepository -r remoteRepository
var="0"
var0="0"
var1="0"
for i in $@;
do
if [ "$var0" = "1" ];then
localRepository=$i
var0="0"
elif [ "$var" = "1" ];then
dockerFile=$i
var="0"
elif [ "$var1" = "1" ];then
remoteRepository=$i
var1="0"
fi
if [ "$i" = "-f" ];then
var="1"
elif [ "$i" = "-t" ];then
var0="1"
elif [ "$i" = "-r" ];then
var1="1"
fi
done
if [ "$dockerFile" != "" ] && [ "$localRepository" != "" ];then
docker build -f "$dockerFile" -t "$localRepository" .
imageID=$(docker images -q "$localRepository")echo "dockerfile:$dockerFile"
echo "localRepository:$localRepository"
fi
if [ "$imageID" != "" ] && [ "$remoteRepository" != "" ];then
docker tag $imageID $remoteRepository
docker push $remoteRepository
echo "remoteRepository:$remoteRepository"
echo "imageID:$imageID"
fi
2.执行
./docker.bash -f dockerFile -t test/test:v1 -r 远程仓库地址:v1
-f 指定dockerfile配置文件
-t 指定本地仓库的路径及版本
-r 指定远程仓库的路径及版本
docker 常用命令
docker 重新安装 需要删除 原来的挂在目录
注意:| 是或的意思
[] 是参数
docker 镜像命令
- docker images 查看镜像
-q [imageName:version] 镜像名:版本 方式查看 - docker search 搜索镜像
- docker pull [REPOSITORY:TAG]拉取镜像
- docker rmi [REPOSITORY:TAG| IMAGE ID] 删除镜像
-f, --force: 强制删除正在被使用的镜像 - docker volume
create [my_volume] 创建卷
ls 查看所有数据卷
rm 删除卷
prune 删除未使用的卷
docker 容器命令
容器重启,容器配置文件还原 :修改宿主机的映射的配置文件
- docker run 新建容器并启动
--name 指定容器名
--restart 重启策略
--privileged=true 特权模式 ,赋予容器几乎与主机相同的权限
-itd 交互式运行
-p 映射端口
-v 映射文件
-d 后台运行
示例:jenkins
docker run \
--name jenkins \
--restart always \
-d \
-p 8080:8080 \
-p 50000:50000 \
-v jenkins_home:/var/jenkins_home \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /usr/bin/docker:/usr/bin/docker \
jenkins/jenkins:lts
- docker ps 查看容器信息
-a 包括未运行的容器 - exit 退出容器
- docker rm [NAMES| CONTAINER ID] 通过容器名或容器ID 删除容器
- docker start/stop/restart [CONTAINER ID|NAMES] 启动/停止/重启容器的操作
- docker cp [CONTAINER ID:容器路径] [目的地主机路径] 从容器中拷贝文件
- docker update 更改容器的参数
--restart=no 关闭容器的重启策略
docker 其他命令
- docker logs 查看日志
- docker top 查看容器中进程信息
- docker inspect 查看镜像/容器的元数据
- docker attach/exec 进入当前正在运行的容器
- docker version 查看docker 版本信息
docker 报错
docker search
报错:Error response from daemon: Get https://index.docker.io/v1/search?q=jenkins&n=25: dial tcp 69.30.25.21:443: connect: connection refused
方案:增加docker镜像加速
- 阿里巴巴开源镜像站-OPSX镜像站-阿里云开发者社区
注意:阿里云 镜像加速,只能再阿里云服务器上,才有效 - 其他镜像加速地址,直接进入第四步
"https://docker.m.daocloud.io/"
1.进入:阿里云镜像加速:阿里巴巴开源镜像站-OPSX镜像站-阿里云开发者社区
2.搜索:容器镜像加速
3.找到 :镜像加速地址
4 编写 /etc/docker/daemon.json 文件
- vim /etc/docker/daemon.json 打开文件
{
"registry-mirrors": ["镜像加速地址"]
}
5重启服务
- systemctl daemon-reload 加载配置文件,重新生成依赖树
- systemctl restart docker 重启服务
docker 警告
systemctl stop docker
Warning: Stopping docker.service, but it can still be activated by:
docker.socket
解决方案 :停止并禁用 docker.socket :
systemctl stop docker.socket
systemctl disable docker.socket
docker 容器安装
gitlab
下载
1.拉取镜像
docker pull gitlab/gitlab-ce:latest
2.创建挂载目录
mkdir -p /data/gitlab/{opt,etc,log}
3.启动容器
注意:多余的空格
docker run \
-itd \
-p 8888:80 \
-p 222:22 \
-v /data/gitlab/etc:/etc/gitlab \
-v /data/gitlab/log:/var/log/gitlab \
-v /data/gitlab/opt:/var/opt/gitlab \
--restart always \
--privileged=true \
--name gitlab \
gitlab/gitlab-ce
- -p 8888:80 容器的80端口映射到宿主机的8888端口 gitlab 访问端口
- -p 222:22 容器的22端口映射到宿主机的222端口 容器远程访问端口
4.添加容器配置
- 手动添加
#进容器内部
docker exec -it gitlab /bin/bash
#修改gitlab.rb
vi /etc/gitlab/gitlab.rb
#加入如下
#gitlab访问地址,可以写域名。如果端口不写的话默认为80端口
external_url 'http://内网ip'
#ssh主机ip
gitlab_rails['gitlab_ssh_host'] = '内网ip'
#ssh连接端口
gitlab_rails['gitlab_shell_ssh_port'] = 222# 保存配置
gitlab-ctl reconfigure
- 命令添加
#进容器内部
docker exec -it gitlab /bin/bash
#修改gitlab.rbecho "内容" > /etc/gitlab/gitlab.rb
#加入如下
#gitlab访问地址,可以写域名。如果端口不写的话默认为80端口
external_url 'http://内网ip'
#ssh主机ip
gitlab_rails['gitlab_ssh_host'] = '内网ip'
#ssh连接端口
gitlab_rails['gitlab_shell_ssh_port'] = 222
5.修改 http与ssh 配置
- vi /opt/gitlab/embedded/service/gitlab-rails/config/gitlab.yml
6.在GitLab的Rails控制台,修改root密码
- gitlab-rails console -e production
- user = User.where(id:1).first
- user.password='123456'
- user.save!
- exit
7.重启gitlab
gitlab-ctl reconfigure
gitlab-ctl restart
#退出容器
exit
#重启docker
docker restart [CONTAINER ID|NAMES]
8.开放端口
firewall-cmd --zone=public --add-port=8888/tcp --permanent
firewall-cmd --zone=public --add-port=222/tcp --permanent
firewall-cmd --reload
systemctl restart firewalld
9.访问地址:http:ip:8888
10.ssh 配置
ssh 公钥获取
- ssh-keygen -t rsa -b 4096 -C ["gitlab_admin_a51bc3@example.com"] ssh公钥和私钥对
-t rsa:密钥类型,这里选择了RSA算法。RSA是非对称加密算法,常用于生成SSH密钥对。
-b 4096:这是指定密钥的位数
-C “yourEmail@xxx.com” 注释 可选填 - cat ~/.ssh/id_rsa.pub 查看公钥
gitlab配置ssh 公钥
本地ssh测试连接gitlab
- ssh -T git@ip -p 22
问题:
解决方案
输入:yes 或no 不要数据 y或n
git config user.name 查看用户账户
git config user.email 查看用户邮箱
查看root 邮箱
gitlab-rails console -e production
user = User.where(username: 'root').first
puts user.email
jenkens
安装
1.拉取镜像
docker pull jenkins/jenkins:2.462.2-lts
2.创建挂在目录
mkdir -p /usr/docker/jenkins_data /etc/localtime /var/run/docker.sock
- -p 创建多级目录
3.启动容器
docker run -d \
-u root \
-p 8080:8080 \
-p 50000:50000 \
--name jenkins \
-v /home/jenkins_home:/var/jenkins_home \
-v /etc/localtime:/etc/localtime \
-v /var/run/docker.sock:/var/run/docker.sock \
jenkins/jenkins:2.462.2-lts
rm -rf /home/jenkins_home /etc/localtime /var/run/docker.sock
4.查看容器日志,获取初始密码
docker logs jenkins
5.访问地址: http:ip:8080 填写密码
卸载
docker 部署服务器 方案
服务器1
- mysql,portainer
服务器2
- redis