docker简介、部署

 

  1. docker简介

    Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。
    
    Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
    
    
  2. 安装部署docker

    docker分为两个版本:
    	docker-ce	: 社区版
    	docker-ee   :企业版
    #下载地址 https://www.docker.com/products/docker-desktop
    docker分为两个版本:
    	docker-ce	: 社区版
    	docker-ee   :企业版
    
    linux 3.10的内核 有BUG 所以要升级一下系统
    1、升级系统内核
        [root@localhost ~]# wget https://elrepo.org/linux/kernel/el7/x86_64/RPMS/kernel-lt-5.4.167-1.el7.elrepo.x86_64.rpm
        [root@localhost ~]# wget https://elrepo.org/linux/kernel/el7/x86_64/RPMS/kernel-lt-devel-5.4.167-1.el7.elrepo.x86_64.rpm
        # 安装
        [root@localhost ~]# yum localinstall -y kernel-lt*
        # 启动时自动选择最新的系统版本
        [root@localhost ~]# grub2-set-default  0 && grub2-mkconfig -o /etc/grub2.cfg
        # 查看最新的系统内核启动版本
        [root@localhost ~]# grubby --default-kernel
        # 重启生效
        [root@localhost ~]# reboot
        # 检测
        [root@localhost ~]# uname -a
    
    2、安装依赖包
    	[root@localhost ~]# yum install -y yum-utils device-mapper-persistent-data lvm2
    
    3、添加软件源信息
        [root@localhost ~]# sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    
    4、更新并安装Docker-CE
        [root@localhost ~]# sudo yum makecache fast
        [root@localhost ~]# sudo yum -y install docker-ce-19.03.9
    
        k8s支持的最新的版本,也是最稳定的版本是19
    
    5、启动Docker
    	[root@localhost ~]# systemctl start docker
    
    6、检测docker
    	[root@localhost ~]# docker info
    
    7、加速docker
    sudo mkdir -p /etc/docker
    sudo tee /etc/docker/daemon.json <<-'EOF'
    {
      "registry-mirrors": ["https://uksar295.mirror.aliyuncs.com"]
    }
    EOF
    sudo systemctl daemon-reload
    sudo systemctl restart docker
    
  3. docker核心三大概念

    1、镜像			:#镜像是启动容器的模板,镜像是创建docker容器的基础,docker镜像类似于虚拟机镜像,镜像只是静态的只读文件
    2、容器			:#是对外提供服务的实例,容器是从镜像创建的应用运行实例,容器之间是相互隔离、互不可见的。
    3、仓库(Harbor)    :#存放镜像的地方,
    
    #镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等
    
  4. docker和虚拟机之间的区别

         VM(VMware)在宿主机器、宿主机器操作系统的基础上创建虚拟层、虚拟化的操作系统、虚拟化的仓库,然后再安装应用;
    
            Container(Docker容器),在宿主机器、宿主机器操作系统上创建Docker引擎,在引擎的基础上再安装应用。
    
  5. docker的基础使用——镜像

    #镜像是启动容器的模板,同一个镜像启动的所有的容器完全相同。
    1、下载镜像
    		docker pull [仓库的URL]/[命名空间]/[镜像名称]:[版本号]
    		默认的仓库URL: https://index.docker.io/v1/
    		默认的命名空间:library
    		默认的版本号:latest
    		index.docker.io/library/nginx:latest
    		
    2、查看本机镜像列表
    		[root@localhost ~]# docker images
    		[root@localhost ~]# docker image ls
    		REPOSITORY   TAG       IMAGE ID       CREATED      SIZE
    		nginx        latest    f6987c8d6ed5   6 days ago   141MB
    		仓库名       版本       镜像ID         创建距离现在的时间 大小
    	
    3、查看镜像的详情
    		docker inspect [镜像名称|ID]
    
    4、镜像tag 给镜像打标签
    		docker tag [镜像ID] [新的仓库名称]
    
    5、登录仓库
    		docker login [仓库的URL地址]
    		默认的仓库地址:hub.docker.com
    		登录之后会在vim /root/.docker/config.json 这个文件里自动创建一个对应账号的加密密码
    
    6、上传镜像
    		第一步:打tag
    			[root@localhost ~]# docker tag f6987c8d6ed5 1617271856/111aaa:v2
    		第二步:上传
    			[root@localhost ~]# docker push 1617271856/111aaa:v2
    
    7、删除镜像
    		docker rmi [镜像的名称|ID]
    		[root@localhost ~]# docker rmi 1617271856/111aaa:v2
    
    #注:docker镜像只能创建和删除,不能修改。
    	#docker的ID全宇宙唯一
    
    
  6. docker的基础使用——容器

    对外提供服务的实例。
    1、容器生命周期
    	容器内的进程至少有一个进程运行在前台。
    
    2、启动一个容器
    	docker run [参数] [镜像名称|ID] [启动命令]
    
    	参数:
    		-d     : 以守护进程方式运行
    		--rm   : 当容器生命周期结束时,立即删除该镜像
    		--name : 指定容器名称
    		-e     : 指定容器内部的环境变量(可以通过exec进入该容器 printenv查看)
    		-h     : 指定容器的主机名(可以通过exec进入该容器 printenv查看)
    		-p     : 端口映射(固定)小写p
    				# docker run -d --rm --name nginxv3 -p 30000:80 nginx
    		-P     : 端口映射(随机)大写
    				# docker run -d --rm --name nginxv4 -P nginx
    		-i     : 打开标准输出(将容器内部的标准输出接入到命令行中)     
    		-t     : 创建一个命令行(伪终端)
             -v     : 添加一个目录映射
    		#docker run  --name django -it --rm -p 8000:8000 -v /root/linux/:/opt/ demaxiya bash
    		--link
    		--network
    
    3、查看本机运行的容器列表
    	docker ps
    	-a : 显示本机上的所有的容器
    	-q :  只显示ID
    	
    4、在容器内部执行命令
    	docker exec [容器名称] [命令]
    	[root@localhost ~]# docker exec nginxv1 printenv
    	
    	进入容器:
    		docker exec -it [容器名称] bash
    		[root@localhost ~]# docker exec -it hungry_wright bash
    
    5、删除容器
    	docker rm [容器ID或名称]
    	
    	-f : 强制删除
    	
    	[root@localhost ~]# docker rm -f $(docker ps -a -q)
    
    

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xoy5ApL4-1640655549785)(E:\docker ps.png)]

  7. 保存容器和镜像

    1、直接将容器保存成本地镜像
    
    	docker commit 
    	
    	参数:
    		-a : 作者
    		-m : 提交时解释信息
    		-p : 保存容器时,是否暂停运行容器
    
        [root@localhost ~]# docker ps
    CONTAINER ID   IMAGE     COMMAND     CREATED        STATUS       PORTS     NAMES
    2ee2   nginx     "/dxx"   11 minutes ago   Up 11 minutes   80/tcp    nginxv1
        [root@localhost ~]# ddocker commit -a "zhang" -m "666" -p nginxv1 test:v1 
    
    2、将本地的容器保存成镜像压缩包
    
    	1、保存容器为镜像压缩包
    	docker export 
    	[root@localhost ~]# docker export -o 123.tar nginxv1
    	
    
    	2、解压容器压缩包成镜像
    	docker import 
    	[root@localhost ~]# docker import 123.tar test:v2
    	
    3、将本地的镜像保存成镜像压缩包(可以同时保存多个镜像)
    
    	docker save 
    	[root@localhost ~]# docker save -o 456.tar demaxiya:latest test:v1
    
    	docker load 
    	[root@localhost ~]# docker load -i 456.tar 
    
    4、save 和 export之间的区别
    	1、针对的对象不一样
    	2、save保存的镜像更加完善
    
posted @ 2021-12-28 09:40  迪迦张  阅读(54)  评论(0编辑  收藏  举报