Docker安装与使用的初体验总结
近来发现Docker容器技术比较火于是乎自己私下研究了一下,途中遇到了很多问题,但是都完美解决了,下面记录一下刚基础Docker的过程,供各位参考一下。
1.关于容器技术的介绍及概念
- 容器技术
Linux容器技术很早就有了,比较有名的是被集成到主流Linux内核中的LXC项目。容器通过对操作系统的资源访问进行限制,构建成独立的资源池,让应用运行在一个相对隔离的空间里,同时容器间也可以进行通信。容器技术对比虚拟化技术,容器比虚拟化更轻量级,对资源的消耗小很多。容器操作也更快捷,启动和停止都要比虚拟机快。但Docker容器需要与主机共享操作系统内核,不能像虚拟机那样运行独立的内核。
Docker是一个基于LXC技术构建的容器引擎,基于GO语言开发,遵循Apache2.0协议开源。Docker的发展得益于为使用者提供了更好的容器操作接口。包括一系列的容器,镜像,网络等管理工具,可以让用户简单的创建和使用容器。
Docker支持将应用打包进一个可以移植的容器中,重新定义了应用开发,测试,部署上线的过程,核心理念就是 Build once, Run anywhere。Docker容器技术的典型应用场景是开发运维上提供持续集成和持续部署的服务。 - 镜像
Docker的镜像概念类似于虚拟机里的镜像,是一个只读的模板,一个独立的文件系统,包括运行容器所需的数据,可以用来创建新的容器。镜像可以基于Dockerfile构建,Dockerfile是一个描述文件,里面包含若干条命令,每条命令都会对基础文件系统创建新的层次结构。用户可以通过编写Dockerfile创建新的镜像,也可以直接从类似github的Docker Hub上下载镜像使用。 - 容器
Docker容器是由Docker镜像创建的运行实例。Docker容器类似虚拟机,可以支持的操作包括启动,停止,删除等。每个容器间是相互隔离的,但隔离的效果比不上虚拟机。容器中会运行特定的应用,包含特定应用的代码及所需的依赖文件。
在Docker容器中,每个容器之间的隔离使用Linux的 CGroups 和 Namespaces技术实现的。其中 CGroups 对CPU,内存,磁盘等资源的访问限制,Namespaces 提供了环境的隔离。 - 仓库
如果你使用过 git 和 github 就很容易理解Docker的仓库概念。Docker仓库相当于一个 github 上的代码库。
Docker 仓库是用来包含镜像的位置,Docker提供一个注册服务器(Registry)来保存多个仓库,每个仓库又可以包含多个具备不同tag的镜像。Docker运行中使用的默认仓库是 Docker Hub 公共仓库。仓库支持的操作类似 git,创建了新的镜像后,我们可以 push 提交到仓库,也可以从指定仓库 pull 拉取镜像到本地。
2.安装Docker
- 安装 yum-utils
$ sudo yum install yum-utils
- 设置官方稳定版的yum 仓库
$ sudo yum-config-manager --add-repo https://docs.docker.com/engine/installation/linux/repo_files/centos/docker.repo
- 更新yum
$ sudo yum makecache fast
- 安装Docker
$ sudo yum -y install docker-engine
- 启动、停止、重启Docker服务
$systemctl start | stop | restart docker.service
- 设置开机启动、关闭服务
$ systemctl enable | disable docker.service
- 查看在终端输入命令docker如能出现如下提示信息说明已经成功安装Docker
[root@localhost ~]# docker
Usage: docker COMMANDA self-sufficient runtime for containers
Options:
--config string Location of client config files (default "/root/.docker") -D, --debug Enable debug mode -H,
--host list Daemon socket(s) to connect to -l, --log-level string Set the logging level ("debug"|"info"|"warn"|"error"|"fatal")
(default "info")
--tls Use TLS; implied by --tlsverify
--tlscacert string Trust certs signed only by this CA (default "/root/.docker/ca.pem")
--tlscert string Path to TLS certificate file (default "/root/.docker/cert.pem")
--tlskey string Path to TLS key file (default "/root/.docker/key.pem")
--tlsverify Use TLS and verify the remote -v, --version Print version information and quitManagement Commands: config Manage Docker configs container
Manage containers image Manage images network Manage
networks node Manage Swarm nodes plugin Manage plugins
secret Manage Docker secrets service Manage services
stack Manage Docker stacks swarm Manage Swarm system
Manage Docker trust Manage trust on Docker images
(experimental) volume Manage volumesCommands: attach Attach local standard input, output, and error
streams to a running container build Build an image from a
Dockerfile commit Create a new image from a container‘s changes
cp Copy files/folders between a container and the local
filesystem create Create a new container diff Inspect
changes to files or directories on a container‘s filesystem events
Get real time events from the server exec Run a command in a
running container export Export a container‘s filesystem as a
tar archive history Show the history of an image images
List images import Import the contents from a tarball to create
a filesystem image info Display system-wide information
inspect Return low-level information on Docker objects kill
Kill one or more running containers load Load an image from a
tar archive or STDIN login Log in to a Docker registry
logout Log out from a Docker registry logs Fetch the
logs of a container pause Pause all processes within one or
more containers port List port mappings or a specific mapping
for the container ps List containers pull Pull an
image or a repository from a registry push Push an image or a
repository to a registry rename Rename a container restart
Restart one or more containers rm Remove one or more
containers rmi Remove one or more images run Run a
command in a new container save Save one or more images to a
tar archive (streamed to STDOUT by default) search Search the
Docker Hub for images start Start one or more stopped
containers stats Display a live stream of container(s)
resource usage statistics stop Stop one or more running
containers tag Create a tag TARGET_IMAGE that refers to
SOURCE_IMAGE top Display the running processes of a
container unpause Unpause all processes within one or more
containers update Update configuration of one or more
containers version Show the Docker version information wait
Block until one or more containers stop, then print their exit codesRun ‘docker COMMAND --help‘ for more information on a command.
[root@localhost ~]#
3.获取镜像
- 搜索镜像(我这里搜索的是centos的镜像)
$ docker search centos
- 下载镜像(在搜索出来的镜像列表中选择一个下载,我这里下载的是官方提供的centos镜像,速度会有点慢,耐心等待)
$ docker pull centos
- 列出本机的镜像
$ docker images
- 基于image创建一个容器,运行完毕后并退出
$ docker run centos /bin/echo ‘Hello world‘
- 运行一个交互式容器,-t表示指定一个容器内的伪tty。-i表示创建一个交互式连接,命令运行后,将会进入shell交互式界面,可执行任意的命令.
$ docker run -t -i centos /bin/bash
- 创建一个带名字的容器
$ docker run -d --name myweb centos /bin/bash
- 开始/停止/强制停止一个的容器
$ docker start/stop/kill container
- 删除一个容器
$ docker rm container
- 如果指定-a参数,则列出所有状态下的容器,包含处于stop状态的容器。如果没有带-a参数,则只显示出处于运行状态的容器。-l参数表示只列出最后一个启动的容器。
$ docker ps [-a] [-l]