Docker 简介及基础操作知识
Docker是一个能够把开发的应用程序自动部署的开源引擎。由Docker公司的团队编写,基于Apache2.0开源授权协议发行。
使用Docker,开发人员只需要关心容器中运行的应用程序,而运维人员只需要关心如何管理容器。Docker设计的目的就是要加强开发人员写代码的开发环境于应用程序要部署的生产环境的一致性,从而降低那种“开发时一切正常,肯定是运维的问题”的风险。
Docker组件
- Docker客户端和服务器:
- Docker镜像:
- Registry:
- Docker容器。
安装Docker
在RHEL6 和CentOS6中安装Docker
'' rpm -Uvh http://download.fedoraproject.org/pub/epel/6/i386/epel-relaase-6-8.noarch.rpm
安装完成EPEL后,就可以安装Docker了
'' yum -y install docker-io在RHEL7中安装Docker
'' subscription-manager repos —enable=rhel-7-server-extras-rpms
'' yum install -y docker
在Red Hat系统发行版中启动Docker守护进程
软件包安装完成后就可以启动Docker守护进程了。在RHEL6或Centos6,可以使用下面的所示命令启动守护进程
service docker start
想要在系统开机时自动启动Docker服务,还要执行以下代码。
service docker enable
在RHEL7或Fedora中启动Docker服务,则需要执行命令。
systemctl start docker
在RHEL7中开机自动启动Docker
systemctl enable docker
Docker守护进程
当Docker软件包安装完毕后,默认会立即启动Docker守护进程。守护进程兼听/var/run/docker.sock这个Unix套接字文件,来获取自客户端的Docker请求。如果系统中存在名为docker的用户组的话,Docker则会该套接字文件的使用者设置为该用户组。这样,docker用户组的所有用户都可以直接运行Docker,则无需在使用sudo命令了。
运行Docker守护进程时,可以用-H标志调整守护进程绑定监听接口的方式。
'' /usr/bin/docker -d -H tcp://0.0.0.0:2375
这条命令会将Docker守护进程绑定到宿主机子上的所有网络接口和端口配置。
检查Docker守护进程是否正常运行
在RedHat和Fedora,只需要用service命令就可以完成工作,如下
service docker stop
service docket start
运行第一个容器
'' docker run -i -t centos /bin/bash
**docker run **命令,并指定了-i和-t两个命令行参数。-i标志保证容器中STDIN是开启的,-t则标志它告诉Docker为要创建的容器分配一个伪tty终端。在本例中运行/bin/bash命令,这时可以看到容器内的shell了。
'' [root@1e8f2ed75268 /]#
Docker已在hosts文件中为该容器IP地址添加了一条主机配置项。
'' [root@1e8f2ed75268 /]# cat /etc/hosts
'' 172.17.0.1 1e8f2ed75268
'' 127.0.0.1 localhost
'' ::1 localhost ip6-localhost ip6-loopback
'' fe00::0 ip6-localnet
'' ff00::0 ip6-mcastprefix
'' ff02::1 ip6-allnodes
'' ff02::2 ip6-allrouters
docker ps -a 命令查看当前系统中容器的列表
(img)
容器命名
Docker会为我们创建一个容器自动生成一个随机的名称,可以用—-name标志来
实现
'' docker run —-name test_container -i -t centos /bin/bash重新启动已经停止的容器
''docker start test_container_附着到容器上
'' docker attach 1e8f2ed75268查看容器内部都在干些什么
'' docker logs -ft 683515e52da3
(img)深入容器获取内部信息
'' docker inspect 683515e52da3
(img)
docker inspect命令会对容器进行详细的检查,然后返回其配置信息,包括名称、命令、网络配置以及很多使用的数据。
'' docker inspect --format '{{.State.Running }}' 683515e52da3
上述该状态为false
'' docker inspect --format '{{ .NetworkSettings.IPAddress }}' 1e8f2ed75268
172.17.0.6
除了查看容器,你还可以通过浏览/var/lib/docker 目录深入了解Docker原理。该目录存放着Docker镜像、容器以及容器的配置。所有的容器都保存在/var/lib/docker/containers/
- 删除容器
docker rm 1e8f2ed75268
需要注意的是,运行中得Docker容器都是无法删除的!你必须先通过docker stop 或docker kill 命令停止容器,才能将其删除。
docker rm docker ps -a -q
上面的docker ps 命令会列出所有的全部容器,-a标志代表所列出所有(all)容器,而-q标志则表示只需要返回容器的ID而不会返回容器的其他信息。这样就得到了容器ID的列表,并传给了docker rm 命令,从而达到删除所有容器的目的。