云原生(docker jenkins k8s)docker篇

docker

(1)架构


● Docker_Host:
○ 安装Docker的主机
● Docker Daemon:
○ 运行在Docker主机上的Docker后台进程
● Client:
○ 操作Docker主机的客户端(命令行、UI等)
● Registry:
○ 镜像仓库
○ Docker Hub
● Images:
○ 镜像,带环境打包好的程序,可以直接启动运行
● Containers:
○ 容器,由镜像启动起来正在运行中的程序

(2)安装

  • 移除以前docker相关包
sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine
  • 配置yml源
sudo yum install -y yum-utils
sudo yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
  • 安装docker
#安装最新版本的
sudo yum install -y docker-ce docker-ce-cli containerd.io
#安装指定版本的
yum install -y docker-ce-20.10.7 docker-ce-cli-20.10.7  containerd.io-1.4.6
  • 启动
systemctl enable docker --now
  • 配置加速
    在阿里云服务找到-容器镜像服务
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://nnyse9wk.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

3.常用命令和说明

(1)下载、删除镜像

#下载最新版本
docker pull nginx
#下载指定版本
docker pull nginx:1.20.1
#查看下载的所有镜像
docker images
#删除镜像
docker rmi 镜像名:版本号/镜像id
docker rmi nginx:1.20.1
#或者
docker rmi c8d03f6b8b91 

(2)启动容器、删除容器

#简单运行
docker run nginx:1.20.1
#参数化运行
# --name 设置容器的别名
# -d后台启动
# --restart=always 开机自启
#-p 映射端口,将主机的9010和容器的80端口对应
docker run --name=mynginx -d  --restart=always -p 9010:80 nginx:1.20.1

#查看正在运行中的容器
docker ps
# 查看所有
docker ps -a
# 删除停止的容器
docker rm  容器id/名字
docker rm -f mynginx   #强制删除正在运行中的
#停止容器
docker stop 容器id/名字
#再次启动
docker start 容器id/名字

4、进入容器

(1)进入容器,修改容器内容

# 进入容器内部的系统,修改容器内容
docker exec -it 容器id  /bin/bash
#修改nginx页面
cd /usr/share/nginx/html
echo "this is nginx index" > index.html
#退出nginx
exit

(2)挂载数据到外部修改

#-v表示挂载 将/usr/share/nginx/html挂载到根目录的/dta/html并赋予读写权限,ro是只读权限
docker run --name=mynginx -d --restart=always -p 88:80 -v :/usr/share/nginx/html:rw  nginx:1.20.1

此时修改data/html会映射到容器内
例子:将nginx的配置文件挂载到/data/conf下
首先在在/data/conf下将nginx.conf文件复制过来。因为使用-v只能建立文件夹
然后执行

docker run -d -p 80:80 -v /data/conf/nginx.conf:/etc/nginx/nginx.conf --name mynginx-02 nginx

5、修改提交,供远程使用

(1)将自己修改好的容器,使用commit保存在本地仓库,供以后回滚

docker commit -a "cgy" -m "首页变化" 8d44b98ca259 testnginx:v1.0

(2)将容器保存成tar包,提供下载,供其他机器使用

#将镜像文件打包成tar,然后下载通过u盘传输,或使用传输命令
docker save -o abc.tar  testnginx:v1.0

#使用命令将tar包传输到114.115.128.34服务器,前面是用户名,后面是传到的地址,然后输入密码
scp abc.tar root@114.115.128.34:/root/

#在34服务器上加载镜像
docker load -i abc.tar

(3)将镜像推送到远程仓库,其他机器,通过pull拉取

#先打新tag    后面的以华为云为例,要推入仓库的仓库/组织/镜像名:新定义的tag
docker tag testnginx:v1.0 swr.cn-north-4.myhuaweicloud.com/cloud-cgy/mynginx:t1.0
#推送先登录  用户名  密码    推送地址
docker login -u cn-north-4@xxxxx -p 03c4d9434d665de21b6f2c9ec593 swr.cn-north-4.myhuaweicloud.com
#推送
sudo docker push swr.cn-north-4.myhuaweicloud.com/cloud-cgy/mynginx:t1.0
#如果其他的机器想使用先登录,然后pull
 docker pull swr.cn-north-4.myhuaweicloud.com/cloud-cgy/mynginx:t1.0

6、查看docker日志

#进行排错时
docker logs 容器名/id 
#进入容器
docker exec -it 容器id /bin/bash

7、copy镜像里面的文件

#把容器指定位置的东西复制出来 
docker cp 5eff66eec7e1:/etc/nginx/nginx.conf  /data/conf/nginx.conf
#把外面的内容复制到容器里面
docker cp  /data/conf/nginx.conf  5eff66eec7e1:/etc/nginx/nginx.conf

docker 构建springboot项目

(1)安装redis
新建/data/redis/redis.conf文件,可以把redis的配置文件copy到改目录


docker run -v /data/redis/redis.conf:/etc/redis/redis.conf -v /data/redis/data:/data -d --name myredis -p 9002:6379 redis:latest  redis-server /etc/redis/redis.conf

说明:

-p 6379:6379 端口映射:前表示主机部分,:后表示容器部分。
--name redis 指定该容器名称,查看和进行操作都比较方便。
-v 挂载目录,规则与端口映射相同。
为什么需要挂载目录:个人认为docker是个沙箱隔离级别的容器,这个是它的特点及安全机制,不能随便访问外部(主机)资源目录,所以需要这个挂载目录机制。
-d redis 表示后台启动redis
redis-server /etc/redis/redis.conf 以配置文件启动redis,加载容器内的conf文件,最终找到的是挂载的目录/data/redis/redis.conf
(2)redis设置密码

重启redis
docker restart 容器id

(3)dockerfile构建应用镜像
1.构建镜像
在项目下创建Dockerfile文件

FROM openjdk:8-jdk-slim
LABEL maintainer=leifengyang

COPY target/*.jar   /app.jar

ENTRYPOINT ["java","-jar","/app.jar"]

上传target目录和jar包以及 Dockerfile。在Dockerfile所在目录下执行

#-t表示给运行容器赋值名字和版本  -f表示使用那个dockerfile文件 .表示在当前目录下工作
docker build -t java-demo:v1.0 -f Dockerfile .

2.启动镜像

docker run -d -p 8080:8080 --name myjava-app java-demo:v1.0 

k8s篇参考语雀笔记

posted @ 2023-05-27 09:53  spiderMan1-1  阅读(123)  评论(0编辑  收藏  举报