Docker 基础备忘录

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

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

安装
Windows安装
注意一点:下载之前需要一个登录docker帐号,因为有人机验证,这个账号需要*注册,否则无法注册。
安装首先要开启Windows10功能里面的Hyper-V,然后一直点点点登录刚刚注册的账号就可以了
注意需要windows专业版
补充文章

Linux安装
笔者环境(ubantu16.04 虚拟机)
运行安装 Docker 的命令:
sudo apt-get install -y docker.io
等待安装完毕,现在我们使用下面的命令启动 Docker:
systemctl start docker
运行系统引导时启用 docker,命令:
systemctl enable docker
核对一下 docker 版本:
docker version

docker的使用

搜索docker镜像
Docker官方网站专门有一个页面来存储所有可用的镜像,网址是:index.docker.io。你可以通过浏览这个网页来查找你想要使用的镜像,或者使用命令行的工具来检索。

命令行的格式为:docker search 镜像名字
docker search hello-world

下载docker镜像
下载镜像的命令非常简单,使用docker pull命令即可。(译者按:docker命令和git有一些类似的地方)。在docker的镜像索引网站上面,镜像都是按照用户名/镜像名的方式来存储的。有一组比较特殊的镜像,比如ubuntu这类基础镜像,经过官方的验证,值得信任,可以直接用镜像名来检索到。
docker pull hello-world
docker pull learn/tutorial

使用命令查看docker镜像
使用images命令查看docker的所有镜像文件
docker images

在docker容器中运行hello-world
docker容器可以理解为在沙盒中运行的进程。这个沙盒包含了该进程运行所必须的资源,包括文件系统、系统类库、shell 环境等等。但这个沙盒默认是不会运行任何程序的。你需要在沙盒中运行一个进程来启动某一个容器。这个进程是该容器的唯一进程,所以当该进程结束的时候,容器也会完全的停止。
docker run命令有两个参数,一个是镜像名,一个是要在镜像中运行的命令。
docker run hello-world
docker run learn/tutorial echo "hello,Marcus"

在docker容器中安装新的程序
下一步我们要做的事情是在容器里面安装一个简单的程序(ping)。我们之前下载的tutorial镜像是基于ubuntu的,所以你可以使用ubuntu的apt-get命令来安装ping程序:apt-get install -y ping。
备注:apt-get 命令执行完毕之后,容器就会停止,但对容器的改动不会丢失。
在执行apt-get 命令的时候,要带上-y参数。如果不指定-y参数的话,apt-get命令会进入交互模式,需要用户输入命令来进行确认,但在docker环境中是无法响应这种交互的。

保存对容器的修改
当你对某一个容器做了修改之后(通过在容器中运行某一个命令),可以把对容器的修改保存下来,这样下次可以从保存后的最新状态运行该容器。docker中保存状态的过程称之为committing,它保存的新旧状态之间的区别,从而产生一个新的版本。类似于存取快照。
首先使用 docker ps -l(查看最后一次修改docker的id)或者docker ps -a(查看全部的docker的id)命令获得安装完ping命令之后容器的id。然后把这个镜像保存为learn/ping。
运行docker commit,可以查看该命令的参数列表。
你需要指定要提交保存容器的ID。
无需拷贝完整的id,通常来讲最开始的三至四个字母即可区分。

检查运行的镜像
使用docker ps命令可以查看所有正在运行中的容器列表,使用docker inspect命令我们可以查看更详细的关于某一个容器的信息。
可以使用镜像id的前面部分,不需要完整的id。
正确的命令:
docker inspect efes(docker id)

发布自己的docker镜像
docker images命令可以列出所有安装过的镜像。
docker push命令可以将某一个镜像发布到官方网站。
你只能将镜像发布到自己的空间下面。

kill容器进程&删除容器
docker kill:杀掉一个运行中的容器
docker kill [OPTIONS] CONTAINER [CONTAINER...]
-s :向容器发送一个信号
docker kill -s KILL mynginx
docker rm:删除一个或多少容器
docker rm [OPTIONS] CONTAINER [CONTAINER...]
-f :通过SIGKILL信号强制删除一个运行中的容器
-l :移除容器间的网络连接,而非容器本身
-v :-v 删除与容器关联的卷
docker rmi: 删除本地一个或多少镜像。
docker rmi [OPTIONS] IMAGE [IMAGE…]
-f :强制删除;
–no-prune :不移除该镜像的过程镜像,默认移除;