0
点赞
收藏
分享

微信扫一扫

云原生技术-Docker

东林梁 03-16 17:15 阅读 2

1-云原生技术-Docker

一、Docker安装

参考文章地址:https://developer.aliyun.com/mirror/docker-ce

# 安装必要的一些系统工具
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
# 添加软件源信息
sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
sudo sed -i 's+download.docker.com+mirrors.aliyun.com/docker-ce+' /etc/yum.repos.d/docker-ce.repo
# 更新并安装Docker-CE
sudo yum makecache fast
sudo yum -y install docker-ce
# 开启Docker服务
sudo service docker start
# 将Docker加入到开机自启动
systemctl enable docker

二、Docker加速

参考文章地址:https://cr.console.aliyun.com/cn-heyuan/instances/mirrors

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://ayafhcyo.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

三、Docker入门

# 查找镜像
docker search 镜像名
# 拉取镜像
docker pull 镜像名
# 查看镜像
docker images
# 删除镜像
docker rmi 镜像id
# 拉取镜像
docker pull nginx

# 启动镜像(无论如何,最后一个参数一定是镜像)
# -d:后台运行容器
# -p:指定映射端口,主机端口->容器端口
# -P:暴露容器的所有端口,并随机分配主机的端口去映射到这些暴露的端口
# --name:指定容器名称
docker run -d -p 80:80 --name nginx01 nginx
# 查看运行情况
docker ps
# 删除容器(运行中的容器需要先停止才能删除,如果想要强制删除,需要加 -f 参数)
docker stop 容器id/容器名称
docker rm -f 容器id/容器名称
# 重启策略
docker run -d -P --name nginx_restart --restart always nginx
# 设置环境变量
docker run -d -P --name nginx_env -e JAVA_ENV=dev -e JAVA_VM=G1 nginx
# 查看以上配置信息
docker inspect nginx_env
# 查看日志
docker logs 容器id
# 进入容器内部
docker exec -it 容器id /bin/bash

四、Docker高级

4.1 Dockerfile

# -a:设置作者
# -m:设置描述信息
# nginx_commit:构建镜像的原始容器
# mynginx:镜像名称
docker commit -a "zzh" -m "my nginx container" nginx_commit mynginx:1
# 检查是否生成镜像
docker images
# 运行镜像
docker run --rm -d -p 80:80 --name mynginx mynginx:1

# 编写Dockerfile
-----------------------------------------------------------------------
# 1.指定当前镜像的基础镜像是什么
FROM openjdk:8
# 2.描述这个镜像的作者,以及联系方式(可选)
MAINTAINER zzh
# 3.镜像的标签信息(可选)
LABEL version="1.0"
LABEL description="这是我的第一个Dockerfile"
# 4.环境变量配置
ENV JAVA_ENV=dev APP_NAME=test-dockerfile
# 5.在构建镜像时,需要执行的shell命令
RUN ls -al
RUN mkdir /www/code/test
# 6.将主机中的指定文件复制到容器的目标位置,可以理解为 cp 命令
ADD ["/www/code/index.html","/www/server"]
# 7.设置容器的工作目录,如果该目录不存咋,会自动创建
WORKDIR /app
# 在设置完工作目录之后,执行pwd命令,输出目录为当前目录即 /app
RUN pwd
# 8.镜像数据卷绑定,将主机中的指定目录挂载到容器中
VOLUME ["/www/code"]
# 9.设置容器启动后要暴露的端口
EXPOSE 8080
# 10. CMD 和 ENTRYPOINT 选择其一即可,作用是描述镜像构建完成后,启动镜像时默认执行的脚本
CMD ping 127.0.0.1 # ENTRYPOINT ping 127.0.0.1
-----------------------------------------------------------------------

4.2 SpringBoot 项目构建部署

# 创建文件夹
cd /opt
mkdir docker
cd docker
mkdir spring-boot-docker-demo
cd spring-boot-docker-demo

# 上传打包好的jar包,并准备Dockerfile
vi Dockerfile
-----------------------------------------------------------------------
# 关联基础镜像 => jdk
FROM openjdk:8
# 将项目jar包拷贝到容器中
ADD *.jar app.jar
# 配置项目环境变量
ENV APP_OPTS=""
# JVM环境变量
ENV JVM_OPTS="-Duser.timezone=Asia/Shanghai -Xms128m -Xmx128m"
# 暴露端口
EXPOSE 8080
# 设置启动时的命令
ENTRYPOINT ["sh","-c","java $JVM_OPTS -jar /app.jar $APP_OPTS"]
-----------------------------------------------------------------------

# 构建镜像
# -t:基于Dockerfile文件构建镜像
# springboot-docker:镜像名字
# 1.0.0:版本
# 最后面的点代表Dockerfile文件在当前文件夹下
docker build -t springboot-docker:1.0.0 .

# 运行镜像
docker run --rm -d -P springboot-docker:1.0.0

4.3 仓库 Registry

# 阿里云私有仓库
# 1.登录阿里云,搜索容器镜像服务,创建个人实例,这里的密码需要记住!
# 2.完成后先创建命名空间:zhongzhihong,然后即可创建镜像仓库:springboor-docker
# 3.根据提示命令推送镜像
docker login --username=aliyun7722207081 registry.cn-heyuan.aliyuncs.com
docker tag [ImageId] registry.cn-heyuan.aliyuncs.com/zhongzhihong/springboot-docker:[镜像版本号]
docker push registry.cn-heyuan.aliyuncs.com/zhongzhihong/springboot-docker:[镜像版本号]
# 4.到阿里云中镜像版本查看即可

# Nexus仓库
# 启动Nexus容器
docker run -d --restart=always -p 8868:8081 -p 5000:5000 -p 5001:5001 --name nexus -v /opt/docker/nexus:/nexus-data sonatype/nexus3

# 查看日志
docker logs nexus

4.4 Docker Compose

# 当在一台机器部署多个容器时,此时如果再针对相关的容器输入重复的命令将变得异常繁琐
# 于是针对这种情况,Docker提供了一个单机版本的服务编排工具,即 Docker Compose
# 它可以高效便捷的管理单机上运行的所有容器,通过yaml文件的方式完成所设置的参数
# 安装Docker Compose前,需要注意版本兼容问题
# 根据网址:https://docs.docker.com.zh.xy2401.com/compose/compose-file/compose-versioning/
# 自行查看需要下载的Docker-Compose版本

# 安装Docker Compose
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
# 将可执行权限应用于二进制文件
sudo chmod +x /usr/local/bin/docker-compose
# 创建软链接
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
# 命令检查
docker-compose --version

# 创建docker-compose文件
cd /opt/docker
mkdir nginx
cd nginx
touch docker-compose.yml
vim docker-compose.yml
---------------------------------
version: '3'
services:
  nginx:
    image: nginx:latest
    ports:
      - 80:80
    restart: always
---------------------------------

# 检查文件
docker-compose config
# 构建镜像
docker-compose create
# 查看状态,发现为:Exit 0
docker-compose ps
# 此时需要改变容器状态
docker-compose up -d
# 再次查看状态,此时为:Up
docker-compose ps
# 如果需要弹性改变容器的数量,可以使用以下命令,但是由于80端口只有一个,所以需要先改一下配置文件
---------------------------------
version: '3'
services:
  nginx:
    image: nginx:latest
    ports:
      - 80
    restart: always
---------------------------------
# 然后再运行以下命令 
docker-compose scale nginx=3
# 查看状态
docker-compose ps

4.5 Docker Swarm

# Docker Swarm 和 Docker Compose 一样都是 Docker 官方的容器编排项目
# 不同的是,Docker Swarm可以在多个服务器或主机上创建容器集群服务,对于微服务的部署会更加适合
# 而Docker compose是在单个服务器或主机上创建多个容器的

# 搭建Swarm集群
docker swarm init --advertise-addr ip地址
# 从节点加入主节点
docker swarm join --token xxxxxxxxxxxxxxxx ip地址:端口号
# 查看集群情况(主节点内执行该命令)
docker node ls
# 创建容器
docker service create --replicas 2 -p 80:80 --name nginx_swarm
# 查看运行中的服务信息
docker service ps nginx_swarm
# 查看服务信息(--pretty:简化输出内容)
docker service inspect --pretty nginx_swarm
# 从节点离开主节点
docker swarm leave
# 再次加入只需要重新执行加入命令即可,可以使用以下命令查询历史记录
history | grep docker swarm

4.6 Poitainer 可视化管理工具

# Docker命令
docker run -d -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer
# Docker Swarm命令
docker service create -p 9000:9000 --replicas 1 --mount type=bind,src=/var/run/docker.sock,dst=/var/run/docker.sock --mount type=volume,src=portainer_data,dst=/data portainer/portainer


举报

相关推荐

0 条评论