docker
沙箱容器
Docker系统有两个程序:docker服务端和docker客户端。其中docker服务端是一个服务进程,管理着所有的容器。docker客户端则扮演着docker服务端的远程控制器,可以用来控制docker的服务端进程。大部分情况下,docker服务端和客户端运行在一台机器上。
安装
[安装](http://www.docker.org.cn/book/install/supported-platform-17.htmlhttp://www.docker.org.cn/book/install/supported-platform-17.html)
[docker Hub](http://index.docker.io/): docker镜像库
理解容器和镜像
docker容器可以理解为在沙盒中运行的进程。这个沙盒包含了该进程运行所必须的资源,包括文件系统、系统类库、shell 环境等等。但这个沙盒默认是不会运行任何程序的。你需要在沙盒中运行一个进程来启动某一个容器。这个进程是该容器的唯一进程,所以当该进程结束的时候,容器也会完全的停止。
容器 = 镜像 + 可读可写层。并且容器的定义并没有提及是否要运行容器。
周期
[创建基本镜像](https://linux.cn/article-5427-1.html)
拉取镜像(只读) => 添加可读可写层 => 提交镜像
|--------- 容器 ------------|
sudo docker
sudo docker version
sudo docker search 镜像名字 搜索远程镜像
sudo docker pull 镜像名字(完整名字) 拉取远程镜像
sudo docker create 镜像名字 --name xx 创建新容器xx;
sudo docker images 查看只读层镜像
docker命令
- 查看所有命令:
docker
查看版本:
docker version
// 会显示一个client和一个server的信息;
第一步,启动docker服务:
sudo service docker start
; 否则会出现cannot connect to the docker daemon
- 在docker hub中搜索对应镜像:
docker search 镜像名字
- 在docker hub中下载对应镜像:
docker pull 镜像名字(完整名字)
运行docker:
docker run 镜像名字 执行的命令
,docker run命令有两个参数,一个是镜像名,一个是要在镜像中运行的命令。docker run = docker create + docker start
// 镜像learn/tutorial输出hello world
docker run learn/tutorial echo "hello world";
// 镜像learn/tutorial安装ping;在执行apt-get 命令的时候,要带上-y参数。如果不指定-y参数的话,
// apt-get命令会进入交互模式,需要用户输入命令来进行确认,但在docker环境中是无法响应这种交互的???
docker run learn/tutorial apt-get install -y ping保存容器修改:
// 获得容器id;如果没有,需要先安装ping;执行 docker run 当前镜像名字 apt-get install -y ping
docker ps -l
// 提交容器修改;
docker commit id 容器名字;
// 执行完docker commit命令之后,会返回新版本镜像的id号。查看正在运行中的docker列表:
docker ps
; 会显示出每个docker的id;container id image command created status ports names
查看某个容器的信息:
docker inspect id
;列举安装过的镜像:
docker images
;推送docker镜像到官网:
docker push 新的镜像名字
启动服务
sudo service docker start
’停止服务
sudo service docker stop