首页 > 代码库 > docker

docker

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

docker