首页 > 其他分享 > Docker容器

Docker容器

时间:2023-05-22 19:01:28浏览次数:30  
标签:opt 容器 compose -- etc 镜像 Docker docker

Docker容器

模块一:安装docker

在三台服务器的完成docker的安装

1,配置IP地址进行连接

2,关闭selinux,防火墙,配置主机名和域名解析

systemctl disable firewalld;systemctl stop firewalld    //关闭防火墙和开机自启
iptables -F; iptables -X; iptables -Z; iptables-save
    
hostname set-hostname master             //修改主机名为master
vim /etc/hosts                      //编辑hosts文件 增加主机IP地址映射
   192.168.100.10 master
   192.168.100.20 slaver
   192.168.300.30 client
    
cat >>/etc/hosts << EOF        //编辑hosts文件,脚本的写法
  192.168.100.10 master
  192.168.100.20 slaver
  192.168.300.30 client
  EOF
vim /etc/selinux/config       //修改selinux状态
    
  /*  修改的状态检查  */  
systemctl status firewalld;iptables -L;hostname;cat /etc/hosts;getenforce  

3,配置仓库

tar -zxvf Docker.tar.gz -C /opt      //解压Docker到opt

Docker 文件解压到 /opt ,挂载光盘

mkdir /opt/centos7          //创建挂载文件夹
mount /dev/cdrom /opt/centos7        //将光盘挂载到刚刚创建的文件夹
echo "mount /dev/cdrom /opt/centos7" >> /etc/rc.d/rc.local   //开机自动挂载
chmod +x /etc/rc.d/rc.local         //赋给执行权限,不然开机不会执行

mkdir /tmp/bf
mv /etc/yum.reposd.d/C*  /tmp/bf 
vim /etc/yum.repos.d/local.repo      //配置yum源
    [docker]                         
    name=docker
    baseurl=file:///opt/Docker
    gpgcheck=0
    enable=1
    
    [centos]                     
    name=centos
    baseurl=file:///opt/centos7
    gpgcheck=0
    enable=1  
        

4,配置服务器master

yum install vsftpd
vim /etc/vsftpd/vsftpd.conf
      anon_root=/opt
systemctl start vsftpd;systemctl enable vsftpd

yum install nfs-utils             //共享文件夹,三台服务器都要装
vim /etc/exports   
       /opt  *(rw,no_root_squash,sync)  //共享opt目录下所有的文件,权限为读写,sync同步
  /*
1,no_root_squash:当登录NFS主机使用共享目录的使用者是root时,其权限将被转换成为匿名使用者,通常它的UID与GID都会变成nobody身份。

2,root_squash;如果登录NFS主机使用共享目录的使用者是root,那么对于这个共享的目录来说,它具有root的权限。
*/ 
    
/* 在另外两台主机上配置 */
mount -t nfs master的IP地址:/opt   /opt      //将master的文件夹挂载到本地opt文件下
df -Th     //查看挂载
echo "mount -t nfs master的IP地址:/opt /opt" >> /etc/rc.d/rc.local  //挂载开机自启
chmod +x /etc/rc.d/rc.local       //赋给执行权限
source /etc/rc.d/rc.local      //执行脚本
    
systemctl start nfs; systemctl enable nfs
showmount -e 127.0.0.1   //查看共享的文件夹

5,关闭交换分区

​ 三台机器都要做

free                //查看交换分区,公有云主机中是不提供交换分区的
swapoff -a          //临时关闭交换分区,所有docker都需要关闭交换分区,影响性能
vim /etc/fstab      //永久关闭交换分区
      #swap
  
/* 配置sysctl.conf */
cat /etc/redhat-release       //查看内核版本
modprobe br_netfilter         //加载内核模块
    /* 凡是跑docker的机器都需要执行,7.5内核以下没有这个,需要                               update升级,不然会导致,下面设置的两条防火墙参数无法执行 */

vim /etc/sysctl.conf             //编辑Linux内核设置参数文件增加三条路由转发协议
    net.ipv4.ip_forward=1
    net.bridge.bridge-nf-call-ip6tables = 1
    net.bridge.bridge-nf-call-iptables = 1
/*
不用去记上面参数,只需要记住大概就行,然后使用内核参数命令去筛选查找
     sysctl -a | grep ip_forward
     sysctl -a | grep nf-call
*/     
sysctl -p  //使修改的命令生效

6,安装Docker支持

yum install yum-utils device-mapper-persistent-data lvm2
/*不安装lvm2  storage driver(存储驱动器) 会是overlay2文件系统,安装会是另一种文件系统,
  目前最好的文件系统是aufs,但是红帽不支持 */

7,安装Docker

yum install docker-ce
systemctl start docker;systemctl enable docker 
    //centos8 可以使用systemctl start docker is enable;一条命令启动并开机自启 

8,检查Docker

docker info

模块二:docker的基本使用和docker-compose编排

1,docker基本命令

/* 要会用help命令,docker help ,查看docer子命令用man ,例如man docker-run*/
docker load   
     /*进入docker/image子目录下导入镜像,也可直接执行docker目录下的脚本直接导入所有镜像
       cd /opt/docker/image
       docker load-i centos_latest.tar
     */
docker images   //查看导入的镜像,镜像完整名字是 路径名/仓库名:标签
docker rmi 镜像名    //删除镜像
docker tag
       /* 给镜像打标签
                   docker tag centos centos:v2
       */           
docker run 
        /*运行镜像 
                    docker run -itd --name centos 镜像名字:标签可以省略
                 i 是执行 t:是交互 d:是后端 
  模板:
       docker run -itd --name 容器名 -p主机端口:容器端口 -v指定镜像启动数据卷 镜像名字    
        */
docker exec
        /*使用镜像,例如执行centos镜像下/bin/bash 这条命令
              docker exec-it centos /bin/bash
        */ 
  /*    这样就可以直接使用这个镜像去装软件了,查看镜像版本 cat /etc/os-release  */
docker ps -a    //看现在正在运行的容器
docker stop xxx    //停止使用哪个容器
docker rm   xxx     //删除容器,先关闭容器才能删除
      /*
                 1、批量删除容器
                          docker rm  $(docker container ls -a -q) 
                          
                 2、批量删除镜像
                          docker rmi $(docker image ls -a -q)
      */
docker pull         
docker push
docker login

2,安装docke-compose

echo $PATH  //查看系统使用的命令都在哪个目录下
/*在docker-compose目录下的文件都是docker-compose的执行文件,将这个文件复制到/usr/local/bin/目录下,然后赋予执行权限,这样在系统的任何目录下都可以使用 docker-compose命令 */
cp /opt/compose/docker-compose /usr/local/bin
chmod -x /usr/local/bin/docker-compose
docker-compose --version   //查看docker-compose版本
    
/* docker-compose 目录下文件作用 */
  app.py    //会在屏幕上输出网页,使用py来编写的
  Dockerfile   //把这个文件进行导入,用py语句来执行app.py这个脚本
  requirements.txt   //这个文件里面提供了两个镜像名称
  docker-compose.yml   //这个文件是用来编排的,

3,导入所有镜像

/*执行docker下的脚本文件*/
./images.sh

4,准备docker-compose文件夹

mkdir /tmp/test
cp /opt/compose/docker-compose/*   /tmp/test
cd /tmp/test/     //到这个文件夹下,这些文件可以自动的编辑镜像,自动的启动服务

5,创建docker-compose项目内容

(1),应用文件app.py,文件中内容有错更改为下面的:
import time

import redis
from flask import Flask


app = Flask(_name_)
cache = redis.Redis(host='redis',port=6379)

def get_hit_count();
    retries = 5
    while True;
       try:
           return cache.incr('hits')
       excpt redis.execptions.ConnectionError as exc:
           if retries == 0;
               raise exc
           retries -= 1
           time.sleep(0.5)
           
@app.route('/')
def hello():
    count = get_hit_count()
    return 'Hello World! I have been seen{}
times.\n'.format(count)

if _name_ == '_main_':
     app.run(host="0.0.0.0",debug=True)
(2),镜像需求文件requirements.txt
(3),Python应用需要得Dockerfile文件
(4),docker-compose.yml的编排文件
(5),通过docker-complose up 命令启动应用
docker-compose up               //这个命令必须在compose目录下执行和docker run 的区别是,compose可以一起启动多个容器
docker-compose ps      //查看compose平台下启动了的容器
(6),验证服务:输入IP地址加端口号验证
(7),停止服务,更新服务器文件,绑定挂载,重建服务

模块三,Harbor仓库配置

他有两种仓库:
一种仓库是简易仓库,由Docker公司提供:有一个镜像 镜像名字叫registry_lasterst.tar 优点:很简单,缺点:没有图形界面

1,导入镜像

cd /opt/
./image.sh     //执行脚本导入所有镜像

2,创建安全认证

mkdir -p /data/ssl              //创建证书
cd /data/ssl                    //进入证书

/* key密钥 crt证书  csr请求 */
/*第一步:创建私钥和权威认证证书 */
openssl req -newkey rsa:4096 -nodes -sha256 -keyout ca.key     //创建私钥 ca.key 权威认证密钥
-x509 -days 2.235 -out ca.crt                    //创建证书 用这个对等下我们生成的请求进行签名
/*第二部:生成请求 */
openssl req -newkey rsa:4096 -nodes -sha256 -keyout
www.yidaoyun.com.key -out www.yidaoyun.com.csr      //使用网站www.yidaoyun.com.key生成请求 www.yidaoyun.com.csr 
/*第三步:利用密钥和请求 去签名 生成一个权威认证的签名证书,这个签名证书会出现在网站上被客户端访问到 */     
openssl x509 -req -days 2.235 -in www.yidaoyun.com.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out
                                            //网站证书csr和网站私钥key需要成对出现
    
cp -rfv www.yidaoyun.com.crt /etc/pki/ca-trust/sources/anchors    
    
updata-ca-trust enable      //使证书生效
updata-ca-trust extract    

3,查看docker-compose信息

docker-compose --version  

4,解压Harbor安装包

mkdir /opt/harbor         //这个是主服务器要用到的
tar -zxvf /opt/harbor-offline.tgz   -C /opt/harbor

5,配置harbor

vim /opt/harbor/harbor.cfg
   /* 修改一下信息 */
   hostname = 服务器IP
   ui_url_protocol = https
   ssl_cert = /data/ssl/www.yidaoyun.com.crt      //存放证书的位置
   ssl_cert_key = /data/ssl/www.yidaoyun.com.key       ///证书密钥存放的位置
   harbor_admin_password = 000000         //harbor仓库的账号密码

6,使用脚本安装harbor

cd /opt/harbor
./prepare                     //执行脚本
./install.sh --with-notary --with-clair   //这个脚本是用来加载系统当中harbor的镜像

7,访问测试

https://服务器IP地址

模块四:Harbor仓库服务器作为docker客户端与镜像安装配置

1,配置客户端的非安装仓库

vim /etc/docker/daemon.json
{
"insecure-registries":["服务器IP地址"]
}                       //使用docker info 查看非安全仓库 insecure registries:
     
systemctl daemon-reload     //重新加载
systemctl restart docker     //重启docker服务

2,重启harbor私有镜像仓库

./prepare       //清理掉所有进程
docker-compose down
docker-compose up -d

3,登入验证harbor仓库

docker login https://192.168.100.10
admin,000000

4,修改镜像标签,上传镜像

docker tag centos 192.168.100.10/library/centos:latest   //给centos打上标签latest
docker push 192.168.100.10/library/centos:latest     //将centos镜像上传

5,开启安全扫描功能

./install.sh  --with-notary  --with-clair  //只需要在上传一个镜像时候启用就可以

6,查看上传结果,进行扫描,设置仓库安全等级

模块五:Docker客户端拉取和上传镜像

1,向客户端下发域名证书

master:

cd /data/ssl

scp -r www.yidaoyun.com.crt 192.168.100.30:/etc/pki/ca-trust/source/ancors

client:

update-ca-trust enable
update-ca-trust extract
systemctl restart docker

2,客户端配置本地非安全仓库

vim /etc/docker/daemon.json
{
"insecure-registries":["192.168.100.10"]
}

systemctl daemon-reload
systemctl restart docker

3,使用客户端登入仓库

cd /etc/pki/ca-trust/source/anchors
docker login https://192.168.100.10     //docker 服务器的IP地址
admin,000000

4,在客户端上导入镜像

docker load i /opt/images/nginx_latest.tar    //加载docker镜像
docker tag nginx 192.168.100.10/library/nginx:latest   //将刚刚加载的nginx镜像打标签latest
docker push 192.168.100.10/library/nginx:latest

5,查看镜像结果

模块六:harbor主从复制服务器

1,安装harbor

在slaver从服务器上完成模块三

2,导入全部镜像

cd /opt
./image.sh

3,创建安全认证,

mkdir -p /data/ssl
cd /data/ssl

openssl req -newkey rsa:4096 -nodes -sha256 -keyout ca.key -x509 -days 2.235 -out ca.crt
openssl req -newkey rsa:4096 -nodes -sha256 -keyout www2.yidaoyun.com.key -out www2.yidaoyun.com.csr
openssl x509 -req -days 2.235 -in www2.yidaoyun.com.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out www2.yidaoyun.com.crt

cp -rvf www2.yidaoyun.com.crt /etc/pki/ca-trust/sources/anchors

4,..... 和模块三一样

5,分发证书

/*Harbor-Master节点从Harbor-Slave节点拷贝证书*/
master:
scp 192.168.100.20:/data/ssl/www2.yidaoyun.com.crt /etc/pki/ca-trust/source/anchors

update-ca-trust enable
update-ca-trust extract
systemctl restart docker

6,重启Harbor

master:
 docker-compose down
 ./prepare
 ./install.sh --with-notary --with-clair

7,构建Harbor主从同步并检查

/* 
默认系统只同步标签为latest的镜像
仓库管理>新建目标>添加从库
系统管理>复制管理>新建规则>创建复制规则>即刻
*/
docker rm-f 'docker ps -aq'              //删除所有的容器

模块七:swarm编排

架构:
    192.168.100.10 master
    192.168.100.20 node

1,基本配置

配置主机名,主机解析,关闭防火墙,安装docker,参考模块一

2,配置Docker API(两台)

vi /lib/systemd/system/docker.service
将
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
改为
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
       //开放tcp2375端口,允许所有网络访问,使master和node之间能够通过API(0.0.0.0:2375)去远程调用对方的docker

systemctl daemon-reload
systemctl restart docker

docker info   //查看是否开启API

3,查看swarm镜像

docker images | grep swarm

4,初始化集群

docker swarm init --advertise-addr 192.168.100.10

生成docker swarm join --token 的加入命令

可以通过docker swarm join-token manage 进行查看

5,node节点加入集群

docker swarm join --token xxxxxx-xxxxx-xxxxx-xxxxxxx 192.168.100.10:2377    //node 作为一个计算节点加进去swarm
    //这条命令就是master生成的docker swarm join --token 命令

6,验证集群

// 登入master:
docker node ls //就可以看见现在有两台容器编排服务器 一主一从   *代表是管理节点

7,安装Portainer

//安装portainer管理界面对swarm进行管理
docker volume create portainer_data     //创建存储卷 

docker service create --name portainer --publish 9000:9000 --replicas=1 --constraint 'node.role==maager' --mount type=bind,src=//var/run/docker.sock,dst=/var/run/docker.sock --mount type=volume,src=portainer_data,dst=/data portainer/portainer -H unix:///var/run/docker.sock

8,登入Portainer检查

http://192.168.100.10:9000

9,运行service

docker service create --name web --replicas 2 nginx     //使用nginx镜像 去启web服务,这个web的副本数启两台容器

docker service rm web       //删除这个服务,先不要删后面还有用
    
docker service ls             //查看docker启动的服务和副本

docker service ps web      //查看web服务启动的容器

10,service 伸缩

docker service scale web=5    //拓展刚刚的web服务启动的容器为5台

docker service ls

docker service ps web

11,调度节点

docker node update --availability drain master    //进入维护模式,这样的话这个节点就不再承担计算了

docker node ls    //查看dokcer节点,查看节点可用性 availability
    
docker service ps web   //查看web服务启动的容器,master主机上已经没有启动的容器了

12,访问service

docker service update --publish-add 8080:80 web   //对web服务进行端口映射 

13,直接新建带有访问端口的service

docker service create --name web_server --publish 8080:80 --replicas=2 nginx

标签:opt,容器,compose,--,etc,镜像,Docker,docker
From: https://blog.51cto.com/u_15433935/6326666

相关文章

  • 基于alios(centos 7.2) 安装 docker
    参考文档:https://help.aliyun.com/document_detail/51853.html?spm=a2c4g.264695.0.0.55c91e18zfwqrz#section-gtl-cjs-ls2https://developer.aliyun.com/article/1148896https://blog.csdn.net/qq_32828933/article/details/88656414https://github.com/huataihuang/cloud-a......
  • 使用docker快速部署mysql
    查看mysql镜像https://container-registry.oracle.com/ 创建容器mysql5.7从oracle容器仓库中拉取mysql5.7社区版本[root]#dockerpullcontainer-registry.oracle.com/mysql/community-server:5.7 查看镜像信息[root]#dockerimagesREPOSITORY......
  • 如何对k8s中docker registry secret中保存的docker的用户名、密码进行解密?
    在k8s的dockerregistrysecret中,保存的是docker的用户名、密码的信息,并且是使用加密的方式进行保存的 [root@nccztsjb-node-11~]#kubectlgetsecret-nyonbipc87e2267-1001-4c70-bb2a-ab41f3b81aa3-oyamlapiVersion:v1data:.dockerconfigjson:eyJhdXRocyI6ey......
  • Docker 安装 Nginx 容器 (完整详细版)
    说明:Docker如果想安装软件,必须先到Docker镜像仓库下载镜像。Docker官方镜像1、寻找Nginx镜像 2、下载Nginx镜像 检查当前所有Docker下载的镜像dockerimages3、创建Nginx配置文件启动前需要先创建Nginx外部挂载的配置文件(/home/nginx/conf/nginx.conf)......
  • 理论+实操,带你了解多沙箱容器运行时Kuasar
    摘要:华为云DTSE技术布道师张天阳结合沙箱容器发展历程,介绍华为云多沙箱容器运行时Kuasar项目优势,开启多沙箱容器运行时上手实践体验。本文分享自华为云社区《理论+实操,带你了解多沙箱容器运行时Kuasar》,作者:华为云社区精选。本期《多沙箱容器运行时Kuasar开发上手实践》主题直......
  • docker容器实现Nginx的负载均衡
    准备tomcat  nginx容器: 主机192.168.8.8.200 mkdirwww1mkdirwww2cdwww1[root@localhostwww1]#viindex.jsp//创建文件,写入如下内容<html><head><title>Tomcat1</title></head><body> <%......
  • Kubernetes 初始化容器及静态Pod和Pod调度策略
    初始化容器kubernetes1.3版本引入了initcontainer初始化容器特性。主要用于在启动应用容器(appcontainer)前来启动一个或多个初始化容器,作为应用容器的一个基础。#查看要修改的内核参数[root@kmaster~]#sysctl-a|grepvm.overcommit_ratiovm.overcommit_ratio=50#输......
  • 云原生之使用Docker部署RabbitMQ消息中间件
    (云原生之使用Docker部署RabbitMQ消息中间件一、RabbitMQ介绍1.RabbitMQ简介RabbitMQ是使用Erlang语言来编写的,并且RabbitMQ是基于AMQP协议的。RabbitMQ是一个开源的消息代理的队列服务器,用来通过普通协议在完全不同的应用之间共享数据。2.RabbitMQ特点开源、性能优秀,稳定......
  • Ubuntu 18.04 BST -- Docker 命令
    一、查看DockerIP进入Docker  l@l-VirtualBox:~/sdk-a1000-docker/BST-HS-Linux-SDK-<Version>/sdk/SDK-Docker-fad-<Version>$sudo./run_docker.sha1000b-sdk-fad-<Version>...sdkdockerimg:a1000b-sdk-fad-2.3.0.4.tarstartloadsdkversionima......
  • 使用docker安装postgresql
    在Docker中安装PostgreSQL的详细步骤:首先,确保你已经安装了Docker。如果没有,请按照Docker官方文档的说明进行安装。打开终端并输入以下命令来搜索PostgreSQL映像:dockersearchpostgres选择一个适合你需要的映像并使用以下命令下载它:dockerpull[postgres-image-name]其中......