栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

docker入门

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

docker入门

一. Docker介绍.

一帮年轻人,开了一家公司,从2010年的时候开始paas平台. 当时发现的及其好.
到了2013年的时候,像亚马逊,微软,谷歌都开始作paas平台.
同年2013年,将他们的核心技术开源, 这个核心技术就是Docker.
到了2014年,得到了C轮的融资.$4000W.
到了2015年,得到了D轮的融资.$9500W.
全神贯注的开始维护Docker.
Docker主要作者之一. 所罗门.
Docker的作者已经离开了维护Docker的团队,所罗门离开的主要原因,是朋友的公司,缺一个CEO

二. Docker的思想.

1、集装箱:
将所有需要运行的环境,或软件,全部的打包放在集装里,谁需要用的那些环境和软件,就直接拿到这个集装箱就可以.

2、标准化:
运输的标准化: Docker有一个码头,所有的集装箱都放在码头,谁需要直接去获取就可以了.
命令的标准化: Docker提供了一系列的命令,可以直接通过命令的方式指派封装集装箱,运输集装箱,集装箱内的内容运行.
提供了REST的API: Docker的标准API,也衍生出了很多的图形化界面. Rancher.

3、隔离性:
Docker运行的是集装箱内的内容,在Linux的内核中,开辟一片独立的空间,不会影响Linux其他内容.

注册中心. (中央仓库,超级码头).

4、镜像. (集装箱).

5、容器. (运行后的镜像. 镜像 -> 类. 容器 -> 对象.)

三. yum安装Docker

简单操作 这里不做太多介绍,有网的同学可以参照此博客进行操作

https://blog.csdn.net/weixin_46403305/article/details/108775096?spm=1001.2014.3001.5501
四. 内网安装Docker(tgz) 1、下载docker包
https://download.docker.com/linux/static/stable/x86_64/
2、选择一个 版本进行下载 下载后进行解压
 tar -zxvf docker-xxxxxxxxx.tgz
3、解压之后的文件移动到 /usr/bin/ 目录下
mv  docker/*   /usr/bin/
4、新增docker.service文件
 vi /etc/systemd/system/docker.service
[Unit]
Description=Docker Application Container Engine
documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target
 
[Service]
Type=notify
# the default is not to use systemd for cgroups because the delegate issues still
# exists and systemd currently does not support the cgroup feature set required
# for containers run by docker
ExecStart=/usr/bin/dockerd  -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock
ExecReload=/bin/kill -s HUP $MAINPID
# Having non-zero Limit*s causes performance problems due to accounting overhead
# in the kernel. We recommend using cgroups to do container-local accounting.
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
# Uncomment TasksMax if your systemd version supports it.
# only systemd 226 and above support this version.
#TasksMax=infinity
TimeoutStartSec=0
# set delegate yes so that systemd does not reset the cgroups of docker containers
Delegate=yes
# kill only the docker process, not all processes in the cgroup
KillMode=process
# restart the docker process if it exits prematurely
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s
 
[Install]
WantedBy=multi-user.target
5、给docker.service文件添加执行权限
chmod +x /etc/systemd/system/docker.service
6、重新加载配置文件(每次有修改docker.service文件时都要重新加载下)
systemctl daemon-reload   
7、启动docker
systemctl start docker
8、设置开机启动
systemctl enable docker.service
9、查看docker服务状态
systemctl status docker
五. 内网安装Docker(rpm) 1、安装 rpm 不需要手动添加service文件
https://download.docker.com/linux/static/stable/x86_64/

下载六个文件分别是

1 container-selinux

2 containerd.io

3 docker-scan-plugin

4 docker-ce-cli

5 docker-ce-rootless-extras

6 docker-ce

安装顺序有顺序可言 

rpm -ivh container-selinux-2.119.2-1.911c772.el7_8.noarch.rpm containerd.io-1.4.9-3.1.el7.x86_64.rpm  docker-scan-plugin-0.9.0-3.el7.x86_64.rpm docker-ce-cli-20.10.9-3.el7.x86_64.rpm docker-ce-rootless-extras-20.10.9-3.el7.x86_64.rpm docker-ce-20.10.9-3.el7.x86_64.rpm 

执行这一段 即可 如果有问题 看报错信息可能需要依赖别的rpm文件 提前安装即可

五. Docker-compose 1、介绍

Docker Compose是一个用来定义和运行复杂应用的Docker工具。一个使用Docker容器的应用,通常由多个容器组成。使用Docker Compose不再需要使用shell脚本来启动容器。 
Compose 通过一个配置文件来管理多个Docker容器,在配置文件中,所有的容器通过services来定义,然后使用docker-compose脚本来启动,停止和重启应用,和应用中的服务以及所有依赖服务的容器,非常适合组合使用多个容器进行开发的场景。

Docker版本变化说明:Docker从1.13.x版本开始,版本分为企业版EE和社区版CE,版本号也改为按照时间线来发布,比如17.03就是2017年3月。Docker的linux发行版的软件仓库从以前的https://apt.dockerproject.org和https://yum.dockerproject.org变更为目前的https://download.docker.com, 软件包名字改为docker-ce和docker-ee。

2、安装 1 、两种安装方式
sudo curl -L https://github.com/docker/compose/releases/download/1.16.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
sudo curl -L https://get.daocloud.io/docker/compose/releases/download/1.25.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
2、然后添加可执行权限
chmod +x /usr/local/bin/docker-compose	
3、测试安装结果
docker-compose --version
4、docker-compose文件结构
version: "3.3"
networks:
  net_app:
services:
  fm:
    image: leave:2.6.2
    privileged: true
    restart: always
    networks:
      - net_app
    build: ./app
    volumes:
      - ./logs/fm:/var/log/leave
    environment:
      - TZ=Asia/Shanghai
    env_file:
      - ./conf/leave.env
    container_name: app_0
    ports:
      - 9999:9999
六、集成项目 有了Docker+Docker-compose 我们应该把项目集成到Docker中。 1、修改docker.service文件 
vim /lib/systemd/system/docker.service

修改ExecStart这行

ExecStart=/usr/bin/dockerd  -H tcp://0.0.0.0:2375  -H unix:///var/run/docker.sock

 因为修改配置文件需要重新加载一下

#重新加载配置文件
[root@izwz9eftauv7x69f5jvi96z docker]# systemctl daemon-reload    
#重启服务
[root@izwz9eftauv7x69f5jvi96z docker]# systemctl restart docker.service 
#查看端口是否开启
[root@izwz9eftauv7x69f5jvi96z docker]# netstat -nlpt
2、 端口开启后可以开发工具集成一下IDEA

2.1 打开Idea,从File->Settings->Plugins->Install JetBrains plugin进入插件安装界面,在搜索框中输入docker,可以看到Docker integration,点击右边的Install按钮进行安装。安装后重启Idea。

2.2  重启后配置docker,连接到远程docker服务。从File->Settings->Build,Execution,Deployment->Docker打开配置界面。

 2.3 修改pom文件,添加properties,添加plugin


        1.8
        xxxx
    
 
 
    
        
            
                org.springframework.boot
                spring-boot-maven-plugin
            
            
                com.spotify
                docker-maven-plugin
                1.0.0
                
                    ${docker.image.prefix}/${project.artifactId}
                    
                    
                        
                            /
                            ${project.build.directory}
                            ${project.build.finalName}.jar
                        
                    
                
            
        
    

 2.4 配置Dockerfile文件:在工程根目录下新建Dockerfile文件

# 镜像基于java:8
FROM java:8
# 作者
#MAINTAINER xxxxx
#创建项目日志存放的文件夹
RUN mkdir -p /app
# 匿名挂载目录
VOLUME /app
# 项目暴露的端口号
EXPOSE 9999
# 添加环境变量
ENV JAVA_OPTS="-Xms512m -Xmx512m"
# 将jar包添加到容器中 /app/目录并更名为xxx.jar
ADD ./target/你的jar包名字 /app/jar包名字
# 运行jar包命令 "nohup" "&" 可省略
# -Djava.security.egd=file:/dev/./urandom 加速tomcat启动
ENTRYPOINT ["/app/jar包名字","--server.port=9999"]

2.5 创建Docker镜像

 将工程打包,在idea 右边有maven 点击clean , 在install,打包后会在target目录下生成jar包。生成jar包后,可以在本地启动服务,进行测试。

点击Docker,再点击+号,添加一个docker命令,输入Name,选择Server,选择Dockerfile文件,输入镜像tag,完成配置。

2.6 完成后 点击 运行 run

执行成功后,可以远程docker上看到这个镜像:

2.7  再用docker-compose up 去执行此镜像

最关键的是 可以再IDEA中可以看到日志  比起docker logs 方便了很多 

(故意搞个错试试)

比起看日志 我觉得这个更方便些 ,那么有屌大的同学就要杠我了  如果暴露了2375端口 被挖矿的攻击怎么办,当然屌veryBig 的我 ,自然有方法解决,查看官网文档对应生成TLS证书

七、对应生成TLS证书 1、创建 sh 脚本
创建脚本
$  touch /目录/cert.sh
编辑
$  vim /目录/cert.sh
#创建 Docker TLS 证书
#!/bin/bash
#相关配置信息
SERVER=你的服务器ip"
PASSWORD="生成密钥的密码"
COUNTRY="生成密钥的国家"
STATE="生成密钥的省"
CITY="生成密钥的市"
ORGANIZATION="生成密钥的组织"
ORGANIZATIONAL_UNIT="生成密钥的部门"
EMAIL="生成密钥的email"
###开始生成文件###

echo "已在/work/dockers创建文件"
#切换到生产密钥的目录
mkdir -p /work/dockers
cd /work/dockers
echo "开始生成文件"
#生成ca私钥(使用aes256加密)
openssl genrsa -aes256 -passout pass:$PASSWORD  -out ca-key.pem 4096
#生成ca证书,填写配置信息
openssl req -new -x509 -passin "pass:$PASSWORD" -days 3650 -key ca-key.pem -sha256 -out ca.pem -subj "/C=$COUNTRY/ST=$STATE/L=$CITY/O=$ORGANIZATION/OU=$ORGANIZATIONAL_UNIT/CN=$SERVER/emailAddress=$EMAIL"
#生成server证书私钥文件
openssl genrsa -out server-key.pem 4096
#生成server证书请求文件
openssl req -subj "/CN=$SERVER" -new -key server-key.pem -out server.csr
#配置白名单  你使用的是服务器Ip的话,请将前面的DNS换成IP  echo subjectAltName = IP:$SERVER,IP:0.0.0.0 >> extfile.cnf
sh -c  'echo "subjectAltName = IP:'$SERVER',IP:0.0.0.0" >> extfile.cnf'
sh -c  'echo "extendedKeyUsage = serverAuth" >> extfile.cnf'
#使用CA证书及CA密钥以及上面的server证书请求文件进行签发,生成server自签证书
openssl x509 -req -days 3650 -in server.csr -CA ca.pem -CAkey ca-key.pem -passin "pass:$PASSWORD" -CAcreateserial -out server-cert.pem -extfile extfile.cnf
#生成client证书RSA私钥文件
openssl genrsa -out key.pem 4096
#生成client证书请求文件
openssl req -subj "/CN=client" -new -key key.pem -out client.csr
sh -c 'echo extendedKeyUsage=clientAuth >> extfile-client.cnf'
#生成client自签证书(根据上面的client私钥文件、client证书请求文件生成)
openssl x509 -req -days 3650 -sha256 -in client.csr -CA ca.pem -CAkey ca-key.pem  -passin "pass:$PASSWORD" -CAcreateserial -out cert.pem  -extfile extfile-client.cnf
#更改密钥权限
chmod 0400 ca-key.pem key.pem server-key.pem
#更改密钥权限
chmod 0444 ca.pem server-cert.pem cert.pem
#删除无用文件
rm client.csr server.csr
#复制需要的文件到docker目录 在同一目录下 不需要复制!!
#cp server-*.pem  /work/dockers
#cp ca.pem /work/dockers
echo "生成文件完成"
###生成结束###
2、作者 把生成后的密钥放到了 /work/dockers 如果不改的话就去这里找就好 

 3、然后修改docker.service文件
vim /usr/lib/systemd/system/docker.service

ExecStart属性后追加

--tlsverify --tlscacert=/密钥存放地方/ca.pem  
--tlscert=/密钥存放地方/server-cert.pem 
--tlskey=/密钥存放地方/server-key.pem 
-H tcp://0.0.0.0:2376 -H unix://var/run/docker.sock 

 4、重启服务
systemctl daemon-reload
systemctl restart docker.service 
systemctl status docker 
5、查看端口是否启动
netstat -nltp 
6、将客户端所需的ca.pem、cert.pem、key.pem3个密钥文件从服务器下载到本地

剩下的就是跟上面一样了。苟富贵 勿相忘 ,作者也在努力学习 ,共同进步!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/675751.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号