docker容器
1:什么是容器?
容器就是在隔离的环境运行的一个进程,如果进程停止,容器就会销毁。隔离的环境拥有自己的系统文件,ip地址,主机名等
kvm虚拟机,linux,系统文件
程序:代码,命令
进程:正在运行的程序
2:容器和虚拟化的区别
linux容器技术,容器虚拟化和kvm虚拟化的区别
kvm虚拟化: 需要硬件的支持,需要模拟硬件,可以运行不同的操作系统,启动时间分钟级(开机启动流程)
linux开机启动流程:
bios开机硬件自检 根据bios设置的优先启动项boot 网卡 硬盘 u盘 光驱 读取mbr引导 2T UEFI(gpt分区) mbr硬盘分区信息,内核加载路径 加载内核 启动第一个进程/sbin/init systemd 系统初始化完成 运行服务
容器启动流程:
共用宿主机内核:
第一个进程,服务nginx,httpd,mysql
容器:共用宿主机内核,容器的第一个进程直接运行服务,轻量级,损耗少,启动快,性能高
容器虚拟化:不需要硬件的支持。不需要模拟硬件,共用宿主机的内核,启动时间秒级(没有开机启动流程)
总结:
(1)与宿主机使用同一个内核,性能损耗小; (2)不需要指令级模拟; (3)容器可以在CPU核心的本地运行指令,不需要任何专门的解释机制; (4)避免了准虚拟化和系统调用替换中的复杂性; (5)轻量级隔离,在隔离的同时还提供共享机制,以实现容器与宿主机的资源共享。
安装:
10.0.0.11:修改主机名和host解析
rm -fr /etc/yum.repos.d/local.repo curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo wget -O /etc/yum.repos.d/docker-ce.repo https://mirrors.ustc.edu.cn/docker-ce/linux/centos/docker-ce.repo sed -i 's#download.docker.com#mirrors.tuna.tsinghua.edu.cn/docker-ce#g' /etc/yum.repos.d/docker-ce.repo yum install docker-ce -y systemctl start docker [root@localhost yum.repos.d]# docker version Client: Version: 18.09.7 API version: 1.39 Go version: go1.10.8 Git commit: 2d0083d Built: Thu Jun 27 17:56:06 2019 OS/Arch: linux/amd64 Experimental: false Server: Docker Engine - Community Engine: Version: 18.09.7 API version: 1.39 (minimum version 1.12) Go version: go1.10.8 Git commit: 2d0083d Built: Thu Jun 27 17:26:28 2019 OS/Arch: linux/amd64 Experimental: false
docker主要组件有:镜像、容器、仓库, 网络,存储
启动容器必须需要一个镜像,仓库中只存储镜像
容器---镜像---仓库
配置docker镜像加速
[root@localhost ~]# cat > /etc/docker/daemon.json << eof > { > "registry-mirrors": ["https://registry.docker-cn.com"] > } > eof [root@localhost ~]# systemctl restart docker
docker常用命令
1:什么是容器?
容器是在隔离的环境中运行的一个进程。
容器是一个软件的打包技术。
2:容器相对于虚拟机有什么优势?
轻量级,损耗少,性能高,启动快
3:镜像常用的命令
docker search 搜索镜像
docker image ls 查看镜像列表
docker image rm 删除镜像 docker image rm busybox:latest
docker image save 导出镜像 docker image save busybox:latest -o docker_busybox_tar.gz
docker image load 导入镜像 docker image load -i docker_busybox_tar.gz -i是指定路径
docker image pull 拉取镜像 docker pull busybox
docker image push 上传镜像
docker image build 构建镜像
docker image histroy查看镜像构建历史命令
docker image prune批量清除未使用的镜像
docker image tag 给镜像打标签
4:容器常用的命令
docker run 创建并启动一个容器 docker exec 进入容器(新的终端) docker exec -it 6512ee200992 /bin/bash docker attach进入容器(共用一个终端) docker attach 6512ee200992 所有shell界面同步,需用crtl+p和crtl+q退出不影响其他shell界面操作 docker rmi 删除容器 docker rmi busybox:latest docker create 创建容器 docker start 启动容器 docker stop 关闭容器 stop都面接容器的ID docker kill 杀死容器 kill后面接节容器的name docker restart 重启容器 docker ps -a 查看容器 docker commit 把容器提交为镜像 docker logs 查看容器初始命令的输出结果 docker cp 在容器和宿主机之间拷贝文件 docker inspect 查看容器的详细属性 docker run的参数 -d 在后台运行 --name 容器的名字 -it 分配一个交互式的终端 -p 端口映射 -P 随机端口映射(EXPOSE) -v 挂载目录或卷到容器中 -e 指定环境变量 --rm 容器退出自动删除 --link 容器间互联(单向) /etc/hosts --network 基于制定的网络运行容器 --restart=always 容器的开机自启 -h 指定容器的主机名 dockerfile常用指令? RUN ADD FROM CMD 容易被覆盖 EXPOSE ENV COPY WORKDIR VOLUME ENTRYPOINT不会被覆盖
docker的私有仓库
上传镜像2步
a:给镜像打标签
docker image tag centos6.9_ssh:v2 ![img](file:///C:\Users\nsh\AppData\Roaming\Tencent\QQ\Temp\%W@GJACOF(TYDYECOKVDYB.png)10.0.0.11:5000/centos6.9_ssh:v2
docker push ![img](file:///C:\Users\nsh\AppData\Roaming\Tencent\QQ\Temp\%W@GJACOF(TYDYECOKVDYB.png)10.0.0.11:5000/centos6.9_ssh:v2
docker login ![img](file:///C:\Users\nsh\AppData\Roaming\Tencent\QQ\Temp\%W@GJACOF(TYDYECOKVDYB.png)10.0.0.11:5000
docker logout ![img](file:///C:\Users\nsh\AppData\Roaming\Tencent\QQ\Temp\%W@GJACOF(TYDYECOKVDYB.png)10.0.0.11:5000
docker 四种网络模式
none 没有网络
host 与宿主机共用网络
container 与已运行的容器共用网络
bridge
macvlan
overlay
pipework
flannel