设为首页 收藏本站
查看: 893|回复: 0

[经验分享] Docker快速入门(2)——Docker企业实战

[复制链接]

尚未签到

发表于 2018-5-28 12:16:32 | 显示全部楼层 |阅读模式
1. Docker安装

Ubuntu
Ubuntu 14.04 版本官方源中已经自带了 Docker 包,可以直接安装,按照如下安装方式,Docker 版本相对较旧。
[root@docker ~]# apt-get update
[root@docker ~]# apt-get -y install docker.io
[root@docker ~]# ln -sf /usr/bin/docker.io /usr/local/bin/docker
[root@docker ~]# sed -i '$acomplete -F _docker docker' /etc/bash_completion.d/docker.i如果使用较低版本的 Ubuntu 系统,需要先进行内核更新并重启系统后再进行安装:

[root@docker ~]# apt-get -y install linux-image-generic-lts-raring linux-headers-generic-lts-raring
[root@docker ~]# rebootCentOS

Docker 支持 CentOS6 及以后的版本,对于 CentOS6 系统可使用EPEL库安装 Docker,命令:
[root@docker ~]# yum -y install http://mirrors.yun-idc.com/epel/6/i386/epel-release-6-8.noaarch.rpm
[root@docker ~]# yum -y install docker-io对于CentOS7系统,由于已内置Docker,可以直接使用命令安装
[root@docker ~]# yum -y install docker2. Docker镜像
获取镜像
镜像是 Docker 运行容器的前提,可以使用 docker pull 命令从网络上下载镜像,格式: docker pull NAME[:TAG],如果不指定 TAG,默认选择 latest 标签,即仓库中最新版本镜像,也可指定 TAG 下载某特定版本镜像
[root@docker ~]# docker pull ubuntu                  # 获取仓库中最新ubuntu的镜像
[root@docker ~]# docker pull ubuntu:14.04            # 获取仓库中14.04版本的ubuntu镜像镜像是 Docker 运行容器的前提,可以使用 docker pull 命令从网络上下载镜像,格式: docker pull NAME[:TAG],如果不指定 TAG,默认选择 latest 标签,即仓库中最新版本镜像。
上述命令实际上相当于 docker pull registry.hub.docker.com/ubuntu:latest 命令,即从默认的注册服务器 registry.hub.docker.com 下载最新的 ubuntu 镜像。下载镜像后,即可创建容器。
查看镜像信息
使用 docker images 可以列出本地主机上的已有的镜像。
[root@docker ~]# docker images
来自哪个仓库                    标签信息             镜像的ID(唯一)     创建时间             镜像大小
REPOSITORY                     TAG                 IMAGE ID            CREATED             SIZE
mysql                          latest              cf725f136fd2        3 weeks ago         383.4 MB
mongo                          latest              092cc6fb995c        3 weeks ago         342.4 MB
tomcat                         8.0                 729a53c7b338        4 weeks ago         355.3 MB
centos                         6.6                 d03626170061        11 weeks ago        202.6 MB
swarm                          latest              942fd5fd357e        12 weeks ago        19.47 MB
centos                         6                   a3c09d36ab4a        3 months ago        194.6 MB其中 TAG 用来标识同一个仓库的不同镜像。有时候为了使用方便,还可以使用 docker tag 命令为镜像添加新的标签

[root@docker ~]# docker tag registry.hub.docker.com/ubuntu:latest ubuntu:latest使用 TAG 命令实际上是为一个镜像指定了一个别名,相当于 Linux 中的硬链接一样。
搜寻镜像
使用 docker search 命令可以搜索远程仓库中共享的镜像,默认搜索 Docker Hub 官方仓库中的镜像。

[root@docker ~]# docker search mysql                                (下载次数)
镜像名称                镜像描述                                       镜像星级  是否官方  是否自动创建
NAME                   DESCRIPTION                                     STARS  OFFICIAL   AUTOMATED
mysql                  MySQL is a widely used, open-source relati...   3402   [OK]      
mysql/mysql-server     Optimized MySQL Server Docker images. Crea...   221    [OK]
centurylink/mysql      Image containing mysql. Optimized to be li...   46     [OK]
sameersbn/mysql                                                        41     [OK]删除镜像

使用 docker rmi 命令可以删除镜像,命令格式:docker rmi IMAGE[IMAGE...] 其中 IMAGE 可以为标签或 ID。上述讲过,镜像可以有多个别名,即标签。删除镜像时,如果使用 TAG 删除,镜像文件实际不删除,而当最后一个 TAG 删除,镜像文件才会删除。如果使用镜像ID进行删除,则先删除所有标签,然后删除镜像文件。

[root@docker ~]# docker rmi ubuntu:latest有时候,可以指定 -f 参数删除镜像,此时如果有容器依赖此镜像,删除镜像时,镜像文件实际没删除,而是打了一个新标签 <none>:<none>。因此正确的做法是先删除该镜像的所有容器,再删除镜像。
创建镜像
创建镜像最常用的有两种方式,另外一种不常用,这里也不讲。分别是基于已有的镜像和使用 Dockerfile 创建镜像。其中,基于 Dockerfile 创建镜像会有专门一章并结合实例进行讲解。

基于已有容器创建镜像使用命令:docker commit CONTAINER [REPOSITORY[:TAG]]

[root@docker ~]# docker commit -m "This is comment" a9234b34fe2334eb2 newimage此时,会创建一个新镜像 newimage,利用 docker images 可以进行查看
导出和载入镜像
可以使用 docker save 和 docker load 命令来导出和载入镜像。假设有一个 mysql 镜像
[root@docker ~]# docker images
REPOSITORY                     TAG                 IMAGE ID            CREATED             SIZE
mysql                          latest              cf725f136fd2        3 weeks ago         383.4 MB
[root@docker ~]# docker save mysql:latest > mysql.tar  # 导出 mysql 镜像
[root@docker ~]# docker save -o mysql.tar mysql:latest # 使用 -o 参数导出镜像
[root@docker ~]# docker load < mysql.tar               # 载入 mysql 镜像
[root@docker ~]# docker load --input mysql.tar         # 使用 --input 参数载入镜像上传镜像
当用户注册了 DockerHub 网站用户时,即可使用 docker push 命令上传镜像到仓库,例如用户 user 上传本地的 mysql:latest 镜像。可以添加新的标签 user/mysql:latest 然后使用 docker push 命令上传
[root@docker ~]# docker tag mysql:latest user/mysql:latest
[root@docker ~]# docker push user/mysql:latest3. Docker容器
创建容器
可以使用 docker create 创建容器,但是创建的容器处于停止状态,使用 docker start 命令启动,但是通常我们是创建并启动容器,就需要使用 docker run 命令,下面命令是根据 mysql:latest 创建一个容器
[root@docker ~]# docker run -it mysql:latest /bin/bash     # -it 选项指可以进行交互当使用 docker run 创建容器室,后台标准操作包括:

  • 检测本地指定的镜像是否存在,不存在就从公有仓库下载
  • 利用镜像创建并启动一个动气
  • 分配一个文件系统,并在制度的镜像层外面挂载一层可读写层
  • 从宿主主机配置的网桥接口中桥接一个虚拟接口到容器中,并从地址池中配置一个 ip 地址给容器
  • 执行用户指定的应用程序,执行完毕终止容器
Docker 指出容器的功能应该单一,譬如只提供 mysql 数据库服务等等。如果还需要其他服务,譬如 Web 服务,需要另外一个容器提供服务。类似这样的容器,我们更需要让容器能够像后台服务一样以守护态启动并运行。用户可以使用 -d 参数来实现
[root@docker ~]# docker run -d -it mysql:latest /bin/bash终止容器
可以使用 docker stop 命令来终止容器的运行,终止后的容器状态处于 Exited 状态。处于运行状态中的容器处于 Up 状态。另外,可以使用 docker ps 查看所有处于运行状态中的 docker 容器,如果想查看所有容器,使用 docker ps -a
[root@docker ~]# docker stop 23ab3444ff2323进入容器
使用 -d 参数时,容器启动后会进入后台,用户无法看到容器中的信息。此时如果想进入容器中做一些操作,或者查看一些信息的话,可以使用 docker attach 或者 docker exec 命令。其中 attach 命令可以使所有到同一个容器的窗口保持同步状态。当某个窗口阻塞时,其它窗口也无法操作。为了避免 attach 带来的不便,可以使用 docker exec 命令进入容器操作
[root@docker ~]# docker attach 23ab3444ff2323
[root@docker ~]# docker exec -it 23ab3444ff2323 /bin/bash删除容器
可以使用 docker rm 命令删除处于终止状态的容器,如果要删除一个处于运行状态中的容器,使用 -f 参数。
[root@docker ~]# docker rm 23ab3444ff2323导出导入容器
导出容器是指导出一个已经创建的容器到一个文件,不管此时容器是否处于运行状态,可以使用 docker export 命令。

[root@docker ~]# docker export ce554267d9a8 > container.tar可以将导出的容器传输到其他机器上,在其他机器上导入成为镜像实现容器的前移,使用 docker import 命令
[root@docker ~]# cat container.tar | docker import - test/container:latest4. Docker仓库
目前 Docker 官方维护了一个公共仓库https://hub.docker.com ,其中已经包括15000多个镜像。大部分需求可以通过在其中下载镜像来实现。可以通过 docker login 命令输入用户名,密码和有些完成注册和登录。
私有仓库

安装 Docker 后,可以通过官方提供的 registry 镜像简单搭建一套本地私有仓库环境。

[root@docker ~]# docker run -d -p 5000:5000 registry这将自动下载并启动一个 registry 容器,并创建蹦迪的私有仓库服务。默认情况下,会将仓库创建在容器的 /tmp/registry 目录下。可以通过 -v 参数将镜像文件存放在本地的指定路径上,如下存放于 /opt/registry
[root@docker ~]# docker run -d -p 5000:5000 -v /opt/registry:/tmp/registry registry管理仓库
本人搭建的私有仓库,查看地址为 192.168.154.144:5000,然后再虚拟机 unbuntu 里测试和上传与下载镜像。
查看已有镜像
[root@docker ~]# docker images
REPOSITORY                     TAG                 IMAGE ID            CREATED             SIZE
mysql                          latest              cf725f136fd2        3 weeks ago         383.4 MB使用 docker tag 命令给这个镜像标记为 192.168.154.144:5000/test
[root@docker ~]# docker tag mysql:latest 192.168.154.144:5000/mysql
[root@docker ~]# docker push 192.168.154.144:5000/mysql用 curl 查看仓库 192.168.154.144:5000 中的镜像
[root@docker ~]# curl http://192.168.154.144:5000/v1/search
{
    "num_results": 1,
    "query": "",
    "result": [{
        "description": "",
        "name": "library/test"
    }]
}下载就可以到任意一台能访问192.168.154.144:5000地址的机器下载这个镜像了
[root@docker ~]# docker pull 192.168.154.144:5000/mysql

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-482210-1-1.html 上篇帖子: Docker快速入门(1)——核心概念介绍 下篇帖子: 虚拟化技术—docker容器—网络模式
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表