美文网首页
Docker 配置和使用

Docker 配置和使用

作者: davidic | 来源:发表于2019-02-13 13:03 被阅读0次

0、基本概念

镜像

Docker镜像通过镜像ID进行识别。镜像ID是一个64字符的十六进制的字符串。但是当我们运行镜像时,通常我们不会使用镜像ID来引用镜像,而是使用镜像名来引用。要列出本地所有有效的镜像,可以使用命令

$ docker images

镜像可以发布为不同版本,这种机制我们称之为标签(Tag)。

容器

Docker容器可以使用命令创建:

$ docker run imagename

它会在所有的镜像层之上增加一个可写层。这个可写层有运行在CPU上的进程,而且有两个不同的状态:运行态(Running)和退出态(Exited)。这就是Docker容器。当我们使用docker run启动容器,Docker容器就进入运行态,当我们停止Docker容器时,它就进入退出态。

对容器的变更是写入到容器的文件系统的,而不是写入到Docker镜像中的。

用同一个镜像启动多个Docker容器,这些容器启动后都是活动的,彼此还是相互隔离的。我们对其中一个容器所做的变更只会局限于那个容器本身。

如果对容器的底层镜像进行修改,那么当前正在运行的容器是不受影响的,不会发生自动更新现象。

1、配置

1.1 安装

$ sudo apt-get update
$ sudo apt-get install docker

编辑/etc/default/docker增加如下配置,自定义docker镜像存放路径

DOCKER_OPTS="--graph=/home/david/opt/docker"

sudo service docker start #启动
sudo service docker stop #关闭
sudo service docker restart #重启

1.2 pull一个镜像

查看镜像:此时应该没有镜像
docker images

下载镜像

sudo docker pull ubuntu

1.3 创建容器

docker ps命令

$ sudo docker ps #列出当前所有正在运行的container
$ sudo docker ps -l #列出最近一次启动的,且正在运行的container
$ sudo docker ps -a #列出所有的container

启动容器,并且进入到Ubuntu容器的bash命令

$ sudo docker run -itv /home/david/docker:/home/davida/gitlab  ubuntu  /bin/bash

其中,

1.4 提交容器

退出容器,使用 docker commit 命令来提交更新后的副本。

$ sudo docker commit -m 'xmo run evn' -a 'david' bde4f2f2db5f  ubuntu-ruby:v1

其中,-m 来指定提交的说明信息,跟我们使用的版本控制工具一样;-a 可以指定更新的作者信息;之后是用来创建镜像的容器的ID;最后指定目标镜像的仓库名和 tag 信息。创建成功后会返回这个镜像的 ID 信息。v1是tag(版本号)

$ sudo docker inspect ubuntu-ruby

查看详细信息

1.5 Dockerfile提交容器

Dockerfile的指令是忽略大小写的,建议使用大写,使用 # 作为注释,每一行只支持一条指令,每条指令可以携带多个参数。
Dockerfile的指令根据作用可以分为两种,构建指令和设置指令。构建指令用于构建image,其指定的操作不会在运行image的容器上执行;设置指令用于设置image的属性,其指定的操作将在运行image的容器中执行。

1)FROM 基础image

基础image可以是官方远程仓库中的,也可以位于本地仓库。

FROM <image> 

或者

FROM <image>:<tag>  

制定某个tag版本

1.4 用SSH访问容器

先安装ssh

apt-get update
apt-get install openssh-server

需要修改/etc/ssh/sshd_config文件中内容

RSAAuthentication yes #启用 RSA 认证
PubkeyAuthentication yes #启用公钥私钥配对认证方式
AuthorizedKeysFile .ssh/authorized_keys #公钥文件路径(和上面生成的文件同)
PermitRootLogin yes #root能使用ssh登录

重启sshd服务

/etc/init.d/ssh stop
/etc/init.d/ssh start

2、常用命令

docker start和docker run

docker run 命令先是利用镜像创建了一个容器,然后运行这个容器。

docker run命令类似于git pull命令。git pull命令就是git fetch 和 git merge两个命令的组合,同样的,docker run就是docker create和docker start两个命令的组合。

docker ps

docker ps 命令会列出所有运行中的容器。这隐藏了非运行态容器的存在,如果想要找出这些容器,我们需要使用docker ps -a

docker images

docker images命令会列出了所有顶层(top-level)镜像。实际上,在这里我们没有办法区分一个镜像和一个只读层,所以我们提出了top-level 镜像。只有创建容器时使用的镜像或者是直接pull下来的镜像能被称为顶层(top-level)镜像,并且每一个顶层镜像下面都隐藏了多个镜像层。

docker images -a

docker images –a命令列出了所有的镜像,也可以说是列出了所有的可读层。如果你想要查看某一个image-id下的所有层,可以使用docker history来查看。

docker stop <container-id>

docker stop命令会向运行中的容器发送一个SIGTERM的信号,然后停止所有的进程。

docker commit <container-id>

docker commit命令将容器的可读写层转换为一个只读层,这样就把一个容器转换成了不可变的镜像。

dockesr exec <running-container-id>

docker exec 命令会在运行中的容器执行一个新进程。

docker save <image-id>

docker save命令会创建一个镜像的压缩文件,这个文件能够在另外一个主机的Docker上使用。和export命令不同,这个命令为每一个层都保存了它们的元数据。这个命令只能对镜像生效。

docker export <container-id>

docker export命令创建一个tar文件,并且移除了元数据和不必要的层,将多个层整合成了一个层,只保存了当前统一视角看到的内容(expoxt后 的容器再import到Docker中,通过docker images –tree命令只能看到一个镜像;而save后的镜像则不同,它能够看到这个镜像的历史镜像)。

参考

Ubuntu 15.04下安装Docker

Docker的镜像和容器的区别

Docker容器和镜像区别

Docker学习笔记(3)-- 如何使用Dockerfile构建镜像

相关文章

网友评论

      本文标题:Docker 配置和使用

      本文链接:https://www.haomeiwen.com/subject/hqareqtx.html