Loading... ## 认识Docker Docker 是一个开放源代码软件,是一个开放平台,用于开发应用、交付(shipping)应用、运行应用。 Docker允许用户将基础设施(Infrastructure)中的应用单独分割出来,形成更小的颗粒(容器),从而提高交付软件的速度。 Docker容器 与虚拟机类似,但原理上,容器是将操作系统层虚拟化,虚拟机则是虚拟化硬件,因此容器更具有便携性、高效地利用服务器。 容器更多的用于表示 软件的一个标准化单元。由于容器的标准化,因此它可以无视基础设施(Infrastructure)的差异,部署到任何一个地方。另外,Docker也为容器提供更强的业界的隔离兼容。 Docker 利用Linux核心中的资源分离机制,例如cgroups,以及Linux核心名字空间(namespaces),来创建独立的容器(containers)。这可以在单一Linux实体下运作,避免引导一个虚拟机造成的额外负担[3]。Linux核心对名字空间的支持完全隔离了工作环境中应用程序的视野,包括行程树、网络、用户ID与挂载文件系统,而核心的cgroup提供资源隔离,包括CPU、存储器、block I/O与网络。从0.9版本起,Dockers在使用抽象虚拟是经由libvirt的LXC与systemd - nspawn提供界面的基础上,开始包括libcontainer库做为以自己的方式开始直接使用由Linux核心提供的虚拟化的设施,依据行业分析公司“451研究”:“Dockers是有能力打包应用程序及其虚拟容器,可以在任何Linux服务器上运行的依赖性工具,这有助于实现灵活性和便携性,应用程序在任何地方都可以运行,无论是公用云、私有云、单机等。” <div class="tip inlineBlock info"> 来自维基百科: [Docker][1] </div> ## Docker安装 <div class="tip inlineBlock warning"> 我们一般使用的是ce(社区版)版本,部分企业使用ee(企业版)版本,这里学习的也是ce版本,和ee版本差不多! </div> 国内推荐使用清华源 ~]# curl https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/docker-ce.repo -o /etc/yum.repo.d/docker-ce.repo ~]# vim /etc/yum.repo.d/docker-ce.repo **注意:**下载下来的源,里面还是指定的官方源,我们需要做以下替换 https://download.docker.com --> https://mirrors.tuna.tsinghua.edu.cn/docker-ce 安装docker: ~]# yum install docker-ce -y 启动: ~]# systemctl start docker ## 镜像加速 由于docker在国内访问比较慢,于是有以下加速方案 **注意:**默认配置文件目录是不存在的 ~]# mkdir /etc/docker ~]# vim /etc/docker/daemon.json 配置加速地址: { "registry-mirrors": ["https://registry.docker-cn.com"] } 可以在数组里面写入多个加速地址,如阿里云的。上面是官方的docker中国加速 ## Docker基础使用方法 ### 拉取镜像 > docker pull NAME:TAR ~]# docker pull nginx:1.14-alpine <div class="tip inlineBlock info"> alpine标签表示最小的镜像,如果省略标签则默认标签是:`latest` </div> ### 运行容器 > docker run [OPTIONS] NAME[:TAG] [COMMAND] ~]# docker run --name webserver -it -p :80:80 nginx:1.14-alpine Options: - --name NAME 指定名称,后面可以使用名称kill掉容器,而不是id - -it 以交互式运行 i 交互式 t 分配终端 tty - -d 后台运行 - --rm 容器结束后自动删除 - -p [IP]:[PORT]:[Docker_Port] 暴露容器的端口,使可通过宿主机ip:port反问docker,IP为空表示绑定到宿主机所有可用IP地址相当于`0.0.0.0`, PORT为空表示绑定到随机端口`3000`以上的端口,Docker_Port不能为空 - -P 大写P 绑定Docker端口到宿主机的随机端口,前提是Docker容器在build时有定义需要暴露的端口,否则无效 - -h, --hostname 设置容器的主机名 - -e, --env 设置环境变量 - --net, --network 指定需要使用的网络,默认是: bridge 可选: none(只有lo接口), IMAGES:TAG 表示使用某容器的网络,共享名称空间(NET, IPC, UTS) - -v, --volume local_path:docker_path 挂载逻辑卷,用于持久化文件 local位宿主机目录,可省,docker_path位容器内的目录 进入正在运行的容器: > docker exec -it NAME|ID COMMAND ~]# docker exec -it webserver /bin/sh 命令为一个sh,才可进入到容器内部 ### 容器网络 容器默认启动使用的是虚拟网桥,我们知道docker的运行方式有以下几种 *第一种:* 网络为`none`, 容器内部只有一个lo接口 *第二种:* 网络为`bridge`, 独立的net, ipc, uts, user, pid, mount *第三种:* 共享其他容器的 net, ipc, uts 可以容器间共用一个地址,不同容器的不通进程可以互相通信 *第四种:* 共享宿主机的名称空间,容器只隔离了 user, pid, mount **查看网络** > docker network ls 显示宿主机现在已有网络 NETWORK ID NAME DRIVER SCOPE f2f28a696d96 bridge bridge local dc19922a5f59 host host local 54400737638b none null local 默认只有以上网络,分别对应上面的`第二种`、`第四种`、`第一种` 我们手动创建一个网络: > docker network Options ~]# docker network create --subnet "172.26.0.0/16" --gateway "172.26.0.1" mybr0 Options: - --subnet string 设置子网 - --gateway string 设置网关 更多查看帮助 容器使用该网络: ~]# docker run --network mybr0 --rm --name busybox -it busybox:latest /bin/sh 删除我们创建的网络: ~]# dcoker network rm mybr0 ### 容器的停止/终止/启动/删除 **停止** ~]# docker stop webserver 停止一个名为webserver的容器 **启动** ~]# docker start webserver 启动一个名为webserver的容器 **终止** ~]# docker kill webserver 终止webserver **删除** ~]# docker rm webserver ### 镜像管理 **查看本地镜像** ~]# docker images **拉取镜像** ~]# docker pull nginx:latest **查看镜像详细信息** ~]# docker inspect nginx:latest **推送镜像到远程仓库** 第一步:注册docker账号 到 [Docker Hub][2] 注册账号 ![注册页面.png][3] 第二步:创建项目 然后登录到docker,点击下图创建一个项目 ![create.png][4] ![create1.png][5] ![create3.png][6] 这样项目就创建好了 第三步: 登录docker ~]# docker login username: beijixs password: 第四步: 修改标签 ~]# docker tag busybox:latest beijixs/busybox:v0.1-1 第五步:推送镜像 ~]# docker push beijixs/busybox:v0.1-1 [1]: https://zh.wikipedia.org/wiki/Docker [2]: https://hub.docker.com/ [3]: https://blog.beijixs.cn/usr/uploads/2020/07/2152163184.png [4]: https://blog.beijixs.cn/usr/uploads/2020/07/3816253571.png [5]: https://blog.beijixs.cn/usr/uploads/2020/07/1132448466.png [6]: https://blog.beijixs.cn/usr/uploads/2020/07/1407165638.png 最后修改:2020 年 07 月 24 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 0 如果觉得我的文章对你有用,请随意赞赏