docker第一天
-
docker简介
Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。 Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
-
安装部署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
-
docker核心三大概念
1、镜像 :#镜像是启动容器的模板,镜像是创建docker容器的基础,docker镜像类似于虚拟机镜像,镜像只是静态的只读文件 2、容器 :#是对外提供服务的实例,容器是从镜像创建的应用运行实例,容器之间是相互隔离、互不可见的。 3、仓库(Harbor) :#存放镜像的地方, #镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等
-
docker和虚拟机之间的区别
VM(VMware)在宿主机器、宿主机器操作系统的基础上创建虚拟层、虚拟化的操作系统、虚拟化的仓库,然后再安装应用; Container(Docker容器),在宿主机器、宿主机器操作系统上创建Docker引擎,在引擎的基础上再安装应用。
-
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全宇宙唯一
-
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)
-
保存容器和镜像
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保存的镜像更加完善