Docker入门

什么是docker?

Docker是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器。开发者在笔记本上编译测试通过的容器可以批量地在生产环境中部署,包括VMs(虚拟机)、bare metal、OpenStack 集群和其他的基础应用平台。

Docker通常用于如下场景:

  • web应用的自动化打包和发布;
  • 自动化测试和持续集成、发布;
  • 在服务型环境中部署和调整数据库或其他的后台应用;
  • 从头编译或者扩展现有的OpenShift或Cloud Foundry平台来搭建自己的PaaS环境。

准备

安装docker

1、在virtualbox中打开centos7,安装yum-utils。
yum install yum-utils

2、添加docker-ce源。
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

3、更新yum包。
yum makecache fast

4、安装docker-ce。
yum install docker-ce

5、启动docker-ce。
systemctl start docker

程序说明

Docker系统有两个程序:docker服务端和docker客户端。其中docker服务端是一个服务进程,管理着所有的容器。docker客户端则扮演着docker服务端的远程控制器,可以用来控制docker的服务端进程。大部分情况下,docker服务端和客户端运行在一台机器上。

docker使用

docker版本

docker version,可以用来确认docker服务在运行并可通过客户端链接。

docker帮助

docker,查看docker所有命令。
docker start --help或者docker help start,查看docker start命令帮助。

查找镜像

1、在docker的镜像索引网站查找镜像:https://hub.docker.com/

2、使用命令行的工具查找tutorial镜像。
docker search tutorial

下载镜像

在docker的镜像索引网站上面,镜像都是按照 用户名/镜像名 的方式来存储的。有一组比较特殊的镜像,比如ubuntu这类基础镜像,经过官方的验证,值得信任,可以直接用镜像名来检索到。

docker pull learn/tutorial,通过docker命令下载tutorial镜像。

hello world

docker镜像运行起来,便会生成一个docker容器,docker容器可以理解为在沙盒中运行的进程。这个沙盒包含了该进程运行所必须的资源,包括文件系统、系统类库、shell 环境等等。但这个沙盒默认是不会运行任何程序的。你需要在沙盒中运行一个进程来启动某一个容器。这个进程是该容器的唯一进程,所以当该进程结束的时候,容器也会完全的停止。

docker run learn/tutorial echo "hello world",在learn/tutorial镜像中运行”echo”命令,输出”hello world”。

安装新程序

docker run learn/tutorial apt-get install -y ping
tutorial镜像是基于ubuntu的,所以可以使用ubuntu的apt-get命令来安装ping程序。
命令执行完毕之后,容器就会停止,但对容器的改动不会丢失。
在执行apt-get命令的时候,要带上-y参数。如果不指定-y参数的话,apt-get命令会进入交互模式,需要用户输入命令来进行确认,但在docker环境中是无法响应这种交互的。

查看容器

1、查看运行中的容器
docker ps,查看所有正在运行中的容器列表。

docker inspect efe,查看更详细的关于某一个容器的信息。可以使用容器id的前面部分,不需要完整的id。

2、查看历史容器
docker ps -l

docker ps -a

保存容器的修改

对某一个容器做了修改之后(通过在容器中运行某一个命令),可以把对容器的修改保存下来,这样下次可以从保存后的最新状态运行该容器。docker中保存状态的过程称之为committing,它保存的新旧状态之间的区别,从而产生一个新的版本。

docker ps -l,获得安装完ping命令之后容器的id。

docker commit 8cacc6f8a25f learn/ping,把这个容器保存为镜像learn/ping。

运行新的镜像

我们已经建立了docker环境,并且安装了ping命令在里面。它可以在任何支持docker环境的系统中运行,让我们来体验一下吧!

docker run learn/ping ping www.baidu.com,在新的镜像中运行ping www.baidu.com命令。

发布docker镜像

现在我们已经验证了新镜像可以正常工作,下一步我们可以将其发布到官方的索引网站。还记得我们最开始下载的learn/tutorial镜像吧,我们也可以把我们自己编译的镜像发布到索引页面,一方面可以自己重用,另一方面也可以分享给其他人使用。

docker push learn/ping,把learn/ping镜像发布到docker的索引网站。

注意:只能将镜像发布到自己的空间下面,这个模拟的是learn帐号。

删除容器

1、删除单个容器
docker rm efe

2、删除所有容器
ddocker rm $(docker ps -a -q)

删除镜像

1、删除单个镜像
docker rmi 234a

2、强制删除单个镜像
docker rmi 234a -f

3、删除所有镜像
docker rmi $(docker images -q)

docker迁移

在不联网的情况下,怎样把 docker image 分享给局域网的其他用户?
解决方法:
1、在本机执行 docker save -o ubuntu.tar ubuntu ,由此得到了 ubuntu.tar 文件。

2、将 ubuntu.tar 拷贝到其他机器,执行 docker load < ubuntu.tar

书签

什么是Docker?
http://www.docker.org.cn/book/docker/what-is-docker-16.html

docker入门教程
https://docs.docker.com/get-started/

Docker入门实战
https://yuedu.baidu.com/ebook/d817967416fc700abb68fca1

0%