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