admin 管理员组

文章数量: 1184232


2024年1月5日发(作者:js截取最后几位字符串)

Docker安装配置步骤详解

1. 安装Docker

使用yum命令安装docker,如yum -y install docker-io

2. 配置与启动

vi /etc/sysconfig/docker

启动docker服务: service docker start

将docker加入开机启动

chkconfig docker on

3. 测试

docker version:查看docker的版本号,包括客户端、服务端、依赖的Go等

docker info :查看系统(docker)层面信息,包括管理的images, containers数等

4. 镜像的获取与容器的使用

镜像可以看作是包含有某些软件的容器系统,比如ubuntu就是一个官方的基础镜像,很多镜像都是基于这个镜像“衍生”,该镜像包含基本的ubuntu系统。再比如,hipache是一个官方的镜像容器,运行后可以支持http和websocket的代理服务,而这个镜像本身又基于ubuntu。

4.1 搜索镜像

docker search :在docker index中搜索image

命令:docker search ubuntu12.10

4.2 下载镜像

docker pull :从docker registry server 中下拉image

命令:docker pull chug/ubuntu12.10x64

4.3 查看镜像

docker images: 列出images

docker images -a :列出所有的images(包含历史)

docker images --tree :显示镜像的所有层(layer)

docker rmi : 删除一个或多个image

4.4 使用镜像创建容器

[root@localhost /]# docker run chug/ubuntu12.10x64 /bin/echo hello world

hello world

交互式运行

[root@localhost /]# docker run -i -t chug/ubuntu12.10x64 /bin/bash

root@2161509ff65e:/#

4.5 查看容器

docker ps :列出当前所有正在运行的container

docker ps -l :列出最近一次启动的container

docker ps -a :列出所有的container(包含历史,即运行过的container)

docker ps -q :列出最近一次运行的container ID

4.6 再次启动容器

docker start/stop/restart :开启/停止/重启container

docker start [container_id] :再次运行某个container (包括历史container)

docker attach [container_id] :连接一个正在运行的container实例(即实例必须为start状态,可以多个窗口同时attach 一个container实例)

docker start -i :启动一个container并进入交互模式(相当于先start,在attach)

docker run -i -t /bin/bash :使用image创建container并进入交互模式,

login shell是/bin/bash

docker run -i -t -p :映射 HOST 端口到容器,方便外部访问容器内服务,host_port 可以省略,省略表示把 container_port 映射到一个动态端口。

注:使用start是启动已经创建过得container,使用run则通过image开启一个新的container。

4.7 删除容器

docker rm <> :删除一个或多个container

docker rm `docker ps -a -q` :删除所有的container

docker ps -a -q | xargs docker rm :同上, 删除所有的container

5. 持久化容器与镜像

5.1 通过容器生成新的镜像

运行中的镜像称为容器。你可以修改容器(比如删除一个文件),但这些修改不会影响到镜像。不过,你使用docker commit 命令可以把一个正在运行的容器变成一个新的镜像。

docker commit [repo:tag] 将一个container固化为一个新的image,后面的repo:tag可选。

[root@localhost /]# docker images

REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE

chug/ubuntu12.10x64 latest 0b96c14dafcd 4 months ago 270.3

MB

[root@localhost /]# docker commit d0fd23b8d3ac chug/ubuntu12.10x64_2

daa11948e23d970c18ad89c9e5d8972157fb6f0733f4742db04219b9bb6d063b

[root@localhost /]# docker images

REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE

chug/ubuntu12.10x64_2 latest daa11948e23d 6 seconds ago 270.3 MB

chug/ubuntu12.10x64 latest 0b96c14dafcd 4 months ago 270.3 MB

5.2 持久化容器

export命令用于持久化容器

docker export > /tmp/

5.3 持久化镜像

Save命令用于持久化镜像

docker save 镜像ID > /tmp/

5.4 导入持久化container

删除container 2161509ff65e

导入文件

[root@localhost /]# cat /tmp/ | docker import - export:latest

af19a55ff0745fb0a68655392d6d7653c29460d22d916814208bbb9626183aaa

[root@localhost /]# docker images

REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE

export latest af19a55ff074 34 seconds ago 270.3 MB

chug/ubuntu12.10x64_2 latest daa11948e23d 20 minutes ago 270.3

MB

chug/ubuntu12.10x64 latest 0b96c14dafcd 4 months ago 270.3 MB

5.5

导入持久化image

删除image daa11948e23d

导入文件

[root@localhost /]# docker load < /tmp/

对image打tag

[root@localhost /]# docker tag daa11948e23d load:tag

5.6

export-import与save-load的区别

导出后再导入(export-import)的镜像会丢失所有的历史,而保存后再加载(save-load)的镜像没有丢失历史和层(layer)。这意味着使用导出后再导入的方式,你将无法回滚到之前的层(layer),同时,使用保存后再加载的方式持久化整个镜像,就可以做到层回滚。(可以执行docker tag 来回滚之前的层)。

5.7

一些其它命令

docker logs $CONTAINER_ID #查看docker实例运行日志,确保正常运行

docker inspect $CONTAINER_ID #docker inspect 查看image或container的底层信息

docker build 寻找path路径下名为的Dockerfile的配置文件,使用此配置生成新的image

docker build -t repo[:tag] 同上,可以指定repo和可选的tag

docker build - < 使用指定的dockerfile配置文件,docker以stdin方式获取内容,使用此配置生成新的image

docker port 查看本地哪个端口映射到container的指定端口,其实用docker ps 也可以看到

6.

一些使用技巧

6.1 docker文件存放目录

Docker实际上把所有东西都放到/var/lib/docker路径下了。

[root@localhost docker]# ls -F

containers/ devicemapper/ execdriver/ graph/ init/ repositories-devicemapper volumes/

containers目录当然就是存放容器(container)了,graph目录存放镜像,文件层(file

system layer)存放在graph/imageid/layer路径下,这样我们就可以看看文件层里到底有哪些东西,利用这种层级结构可以清楚的看到文件层是如何一层一层叠加起来的。

6.2 查看root密码

docker容器启动时的root用户的密码是随机分配的。所以,通过这种方式就可以得到容器的root用户的密码了。

docker logs 5817938c3f6e 2>&1 | grep 'User: ' | tail -n1

更多Docker命令请参考:Docker常用命令.docx


本文标签: 镜像 容器 使用 运行 启动