docker

发布于:2025-02-10 ⋅ 阅读:(72) ⋅ 点赞:(0)

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镜像

  1. 创建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镜像加速 

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.rb

echo "内容" > /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


网站公告

今日签到

点亮在社区的每一天
去签到