阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Docker系列教程3:常用操作命令

572次阅读
没有评论

共计 4805 个字符,预计需要花费 13 分钟才能阅读完成。

上次分享了 Docker 的一些入门知识点和 docker 的安装,这次主要讲 docker 的常用操作命令。

Docker 使用镜像常用命令

1. 获取镜像

docker pull ubuntu:14.04docker pull ubuntu #默认从 registry.hub.docker.com 中获取docker pull hub.c.163.com/public/ubuntu:14.04# 从网易蜂巢下载镜像docker run -d -p 80:80 --name webserver nginx# 没有镜像会先下载

2. 查看镜像信息

docker imagesdocker inspect ubuntu:13.10docker history ubuntu

3. 查找镜像

docker search TERMdocker search centosdocker search nginx

4. 删除镜像

docker rmi IMAGEdocker rmi ubuntu:13.10    docker rmi -f ubuntu:13.10# 强制删除镜像

5. 创建镜像的三个方法

1. 基于已有镜像的容器创建

docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]# docker run -it ubuntu:14.04 /bin/bashroot@cd391ad59121:/# 记住容器 ID:cd391ad59121
提交新的镜像:docker commit -m"added a new file lxxxx"-a"jishubu lxx"cd391ad59121 test:0.1查看:# docker imagesREPOSITORY                    TAG                 IMAGE ID            CREATED             SIZEtest                          0.1                 b2ac4664aadb        16 seconds ago      188 MB

2. 基于本地模板导入

从一个操作系统模板导入一个镜像

cat centos-6-x86_64-minimal.tar.gz |docker import - centos6min

3. 基于 Dockerfile 创建

FROM docker.io/0702/centos7 MAINTAINER star  <funet8@163.com>ENV TZ"Asia/Shanghai"ENV TERM xterm# 新建用户和用户组 RUN groupadd www && useradd -g www www 等等

6. 保存和导出镜像

保存:docker save

docker save <myimage>:<tag> | gzip > <myimage>_<tag>.tar.gzdocker save -o ubuntu_14.04.tar ubuntu:14.04

通过文件将镜像复制给他人

导入:docker load

docker load < ubuntu_14.04.tar

导入镜像

gunzip -c <myimage>_<tag>.tar.gz | docker load

7. 上传镜像

使用 docker push 默认上传到 docker hub 官方

docker pust NAME[:TAG] |[REGISTRY_HOST[:REGISTRY_PORT] /] NAME[:TAG]

Docker 操作容器常用命令

一、创建容器

1. 新建容器

docker create --helpdocker create -it ubuntu:latest

create、run 命令支持选项都非常复杂

2. 启动容器

docker start NAMES

3. 创建并启动容器

docker run ubuntu:15.10 /bin/echo"hello world"docker run -it ubuntu:15.10 /bin/bash docker run -v /data/mysql:/var/lib/mysql -p 61920:3306 --name mariadb -d mariadb:latestdocker run -d --name myFpm -p 9000:9000 -v  /data/wwwroot/web:/usr/share/nginx/html bitnami/php-fpmdocker run -d --name myNginx -p 80:80 -v /data/wwwroot/web:/usr/share/nginx/html -v /data/wwwroot/log:/var/log/nginx nginx

-i 分配一个伪终端并绑定到容器的标准输出上 -t 容器的标准输入保持打开 -p 表示 Docker 镜像内部容器端口暴露给主机 - v 标识来给容器内添加一个数据卷,你也可以在一次 docker run 命令中多次使用 - v 标识挂载多个数据卷

4. 守护态运行

docker run -d ubuntu:15.10 /bin/sh -c"while true;do echo hello world; sheep 1;done"

5. 查看容器

docker ps -ldocker logs NAMES  #显示容器的标准输出docker top NAMES   #docker top 来查看容器内部运行的进程

二、停止、启动、重启容器

docker stop NAMEdocker start NAMEdocker restart NAME

三、进入容器

1、exec 命令(推荐)

docker exec -it lxx-wordpress /bin/bash

2、attach 命令(不推荐)

# docker run -itd ubuntu:14.04522681d4c41c7c34ad04779e83253352d1080e85eb9c8f2d1e25f81758379d19# docker psCONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES522681d4c41c        ubuntu:14.04      "/bin/bash"        12 seconds ago      Up 10 seconds                           distracted_perlman# docker attach distracted_perlmanroot@522681d4c41c:/#

3、nsenter 工具

需要安装软件,不推荐

四、删除容器

docker rm NAMESdocker rm -f NAMES  #强制删除

五、导入和导出容器

1. 导出容器 -docker export

# docker run -itd ubuntu:14.04 /bin/bash# docker export -o test_for_run.tar loving_bohr

2. 导入容器 docker import

docker import test_for_run.tar  test/ubuntu:v1.0docker imagesREPOSITORY                    TAG                 IMAGE ID            CREATED             SIZEtest/ubuntu                   v1.0                69f170a40e6f        6 seconds ago       175.1 MB

Docker save load export import 的区别

export

export 命令用于持久化容器(不是镜像)。所以,我们就需要通过以下方法得到容器 ID:

sudo docker ps -a接着执行导出:sudo docker export <CONTAINER ID> > /home/export.tar

save

Save 命令用于持久化镜像(不是容器)。所以,我们就需要通过以下方法得到镜像名称:

sudo docker images接着执行保存:sudo docker save busybox-1 > /home/save.tar

使用 export 比使用 save 保存的文件要小一些

load save

两者的使用方法是一样的,导入压缩包生成镜像

docker import - busybox-1-export:latest

docker import 可以重新指定镜像的名字

docker load < /home/save.tar

它们之间到底存在什么不同呢?

首先,docker import 可以重新指定镜像的名字,docker load 不可以

其次,我们发现导出后的版本会比原来的版本稍微小一些。那是因为导出后,会丢失历史和元数据。执行下面的命令就知道了:显示镜像的所有层(layer)

sudo docker images --tree

执行命令,显示下面的内容。正你看到的,导出后再导入 (exported-imported) 的镜像会丢失所有的历史,而保存后再加载(saveed-loaded)的镜像没有丢失历史和层(layer)。这意味着使用导出后再导入的方式,你将无法回滚到之前的层(layer),同时,使用保存后再加载的方式持久化整个镜像,就可以做到层回滚(可以执行 docker tag 来回滚之前的层)。

常用命令图

有牛人总结了 docker 的操作命令,看图:

总结一下常用命令

其中 <> 阔起来的参数为必选,[]阔起来为可选

docker version 查看 docker 的版本号,包括客户端、服务端、依赖的 Go 等 docker info 查看系统(docker) 层面信息,包括管理的 images, containers 数等 docker search  在 docker index 中搜索 imagedocker pull  从 docker registry server 中下拉 imagedocker push  推送一个 image 或 repository 到 registrydocker push :TAG 同上,指定 tagdocker inspect  查看 image 或 container 的底层信息docker images TODO filter out the intermediate image layers (intermediate image layers 是什么)docker images -a 列出所有的 imagesdocker ps 默认显示正在运行中的 containerdocker ps -l 显示最后一次创建的 container,包括未运行的docker ps -a 显示所有的 container,包括未运行的docker logs  查看 container 的日志,也就是执行命令的一些输出docker rm  删除一个或多个 containerdocker rm `docker ps -a -q` 删除所有的 containerdocker ps -a -q | xargs docker rm 同上, 删除所有的 containerdocker rmi  删除一个或多个 imagedocker start/stop/restart  开启 / 停止 / 重启 containerdocker start -i  启动一个 container 并进入交互模式docker attach  attach 一个运行中的 containerdocker run  使用 image 创建 container 并执行相应命令,然后停止docker run -i -t  /bin/bash 使用 image 创建 container 并进入交互模式, login shell 是 /bin/bashdocker run -i -t -p  将 container 的端口映射到宿主机的端口docker commit  [repo:tag] 将一个 container 固化为一个新的 image,后面的 repo:tag 可选docker build 寻找 path 路径下名为的 Dockerfile 的配置文件,使用此配置生成新的 imagedocker build -t repo[:tag] 同上,可以指定 repo 和可选的 tagdocker build -  使用指定的 dockerfile 配置文件,docker 以 stdin 方式获取内容,使用此配置生成新的 imagedocker port  查看本地哪个端口映射到 container 的指定端口,其实用 docker ps 也可以看到

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-12-03发表,共计4805字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中