Docker入门介绍

1 docker 组件介绍

# Docker:容器技术 ,资源隔离
    dotCloud  go写的软件
    Docker的基础是 Linux 容器(LXC)等技术
    LXC 的基础上 Docker 进行了进一步的封装,让用户不需要去关心容器的管理,使得操作更为简便。用户操作 Docker 的容器就像操作一个快速轻量级的虚拟机一样简单
    
# 优势:
	举例说明:
    	开发阶段:win上开发的 python3.8   第三方模块
        上线阶段:linux      python3.8   第三方模块 不同平台有差异
        使用docker统一开发和部署环境
            只要部署项目运行器一个容器即可(python+django+drf+uwsgi+代码)
            java容器:(jdk+tomcat+java代码)
            
# docker  cs架构软件
    服务器端,客户端
    客户端cli
    客户端和服务端交互使用resfulapi
    	客户端:docker ps----》http请求,符合resful规范----》服务端执行
        
        
 # 架构
     客户端cli
     服务端 server
    	 Images:镜像
         containers:容器 (想象成一个操作系统运行了一个软件)
         networks:网络
         Volumes:数据卷,文件
         Registry:远程仓库

        
        
# 镜像和容器
    镜像是从远程拉去下来的文件
    容器是镜像运行后得到的,一个镜像可以运行多个容器
    面向对象中得  类:镜像     对象:容器
    容器:把容器当做一个操作系统上运行了软件
    运行了redis容器:一个操作系统运行了redis
        
       

image-20200328161437278

2 docker安装启动

# docker 可以安装在各个操作系统之上
     centos 7.5
     win10 以上可以
     mac
     最好,在虚拟机的centos上安装
    
# 版本介绍
	Docker-CE指Docker社区版,由社区维护和提供技术支持,为免费版本,适合个人开发人员和小团队使用。
	Docker-EE指Docker企业版,为收费版本,由售后团队和技术团队提供技术支持,专为企业开发和IT团队而设计
    
    
# 卸载:
    停止服务: systemctl stop docker
    yum list installed | grep docker
    yum remove docker-ce.x86_64 docker-ce-cli.x86_64 docker-ce.x86_64 docker-ce-cli.x86_64
    rm -rf /var/lib/docker
    
    
# 安装
	安装依赖
    	sudo yum install -y yum-utils device-mapper-persistent-data lvm2
	把yum源设置为阿里云
    	sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
        
        安装docker
    	sudo yum install docker-ce

	查看docker版本
    	docker -v  # Docker version 20.10.22, build 3a2c30b

        
        
# windows和mac :https://get.daocloud.io/#install-docker-for-mac-windows


# 配置国内镜像站:仓库在国外,下载镜像很慢,配置国内镜像站
    阿里云:https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors
    mkdir /etc/docker
    vim /etc/docker/daemon.json
    写入
       {
      "registry-mirrors": ["https://x1566319.mirror.aliyuncs.com"]
    	}
    重启
    sudo systemctl daemon-reload
    sudo systemctl restart docker

    
# docker 命令
    # 启动docker:
    systemctl start docker
    #停止docker:
    systemctl stop docker
    #重启docker:
    systemctl restart docker
    #查看docker状态:
    systemctl status docker
    #开机启动:
    systemctl enable docker
    #查看docker概要信息
    docker info  # docker客户端,服务端的概要信息

3 docker镜像操作

# 搜索镜像
    docker search 镜像名字 

# 从远程仓库拉去的文件
    docker pull centos:centos7.9.2009
    docker pull python:3.8-slim
    docke pull redis  # 最新版
    docker pull mysql:5.7
# 查看本地镜像
	docker images
    
# 删除镜像
	docker rmi 镜像id
    
# 一次性删除所有镜像
	docker rmi `docker images -q`
# 一次性删除所有容器
	docker rm `docker ps -aq`

# 了解
    自己制作了一个镜像,想传到自己的dockerhub仓库里
    把本地的镜像打个标签
    docker tag 镜像id 你的dockerhub用户名/xxxx
    docker login  # 输入用户名密码
    docker push 你的dockerhub用户名/xxxx
    在你的仓库你就能看到了

# 镜像分层:
    https://blog.csdn.net/qq_40124555/article/details/125137800
    

# 如何获取镜像:
     docker pull 拉取
     压缩包还原
     容器反打包成镜像
     dockerfile构建

4 docker容器操作

# 1 基于镜像运行成容器
    # 创建容器,运行容器
    # -it和-id区别 :it进入到容器内部 ,id以守护进程运行容器,不进入
    # --name=名字   不写会随机
    # centos:7   镜像的名字和tag
    # -p 3307:3306   把宿主机的3307端口映射到容器的3306端口,以后访问宿主机的3307,就等于访问容器的3306
    # -v /root/lqz:/home  把宿主机的/root/lqz映射到容器的 /home ,以后再宿主机或容器内修改这个文件夹,都会相互影响
    # 在容器内部,退出来:exit ---》只要退出,容器也退出了
	-docker run -it  --name=centos centos:7 # 基于centos:7镜像 创建并运行容器,进入到容器中,名字为centos
    
    
# 2 查看正在运行的容器
	docker ps
# 3 查看所有容器
	docker ps -a
    
    
# 4 在容器上执行命令
    docker exec 容器id ls

    docker exec 12a6a0281168 ls
    
    docker exec -it 12a6a0281168 /bin/bash
    
    
 # 5 停止容器
	docker stop 容器id
    
 # 6 运行容器
	docker start 容器id
    
 # 7 删除
 	docker rm 容器id  # 正在运行的容器不能删
    
# 8  文件拷贝
      把宿主机文件cp到容器内部
    	docker cp 宿主机文件  容器id:容器路径
      把容器内部文件cp到宿主机
    	docker cp 容器id:路径/文件  /root/ss.py
# 9 查看容器信息
	docker inspect 容器id
      docker inspect --format='{{.NetworkSettings.IPAddress}} 容器id  # 查看ip地址
    
posted @   dy12138  阅读(45)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示