Docker常用命令

发布于 2020-5-7 2:07:34 字数 6069 阅读 99 分类 dockernodejs


 Docker 是什么


 Docker 概念


关于 Docker 的概念是确实不太好总结,下面我通过四点向你说明 Docker 到底是个什么东西。

  • Docker 是世界领先的软件容器平台。
  • Docker 使用 Google 公司推出的 Go 语言  进行开发实现,基于 Linux 内核 的cgroup,namespace,以及 AUFS 类的 UnionFS 等技术,对进程进行封装隔离,属于操作系统层面的虚拟化技术。由于隔离的进程独立于宿主和其它的隔离的进 程,因此也称其为容器。Docker 最初实现是基于 LXC.
  • Docker 能够自动执行重复性任务,例如搭建和配置开发环境,从而解放了开发人员以便他们专注在真正重要的事情上,构建杰出的软件。
  • 用户可以方便地创建和使用容器,把自己的应用放入容器。容器还可以进行版本管理、复制、分享、修改,就像管理普通的代码一样。

 Docker 的基本组成架构


看一张 Docker 架构图


  1. 左边大框框是我们进行 Docker 操作的宿主机,其运行了一个 Docker daemon 的核心守护程序,负责构建、运行和分发 Docker 容器。

  2. 在宿主机中安装了 Docker 客户端,其与 Docker daemon 守护进程进行通信,客户端会将 build、pull、run 等命令发送到  Docker daemon 守护进程进行执行。

  3. 右框框为 Docker 注册表存储 Docker 镜像,是一个所有 Docker 用户共享 Docker 镜像的服务,Docker daemon 守护进程与之进行交互。


 Docker的常用命令


 镜像常用命令

 docker pull

从镜像仓库中拉取或者更新指定镜像 

语法 docker pull [OPTIONS] NAME[:TAG|@DIGEST]

OPTIONS说明: 

  • -a :拉取所有 tagged 镜像
  • --disable-content-trust :忽略镜像的校验,默认开启 

例:从Docker Hub下载java最新版镜像。

docker pull java

例:从Docker Hub 安装node:14-alpine

docker pull node:14-alpine  


 docker images  

查看本地安装的镜像列表  



docker pull [镜像名称:版本] 拉取镜像
docker images 镜像列表
docker rmi [镜像名称:版本] 删除镜像
docker history [镜像名称] 镜像操作记录
docker tag [镜像名称:版本][新镜像名称:新版本]
docker inspect [镜像名称:版本] 查看镜像详细
docker search [关键字] 搜索镜像
docker login 镜像登陆


 容器常用命令

 docker run

语法:docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

 OPTIONS说明:

  1. -a stdin: 指定标准输入输出内容类型,可选 STDIN/STDOUT/STDERR 三项;
  2. -d: 后台运行容器,并返回容器ID;
  3. -i: 以交互模式运行容器,通常与 -t 同时使用;
  4. -P: 随机端口映射,容器内部端口随机映射到主机的高端口
  5. -p: 指定端口映射,格式为:主机(宿主)端口:容器端口
  6. -t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
  7. --name="nginx-lb": 为容器指定一个名称;
  8. --dns 8.8.8.8: 指定容器使用的DNS服务器,默认和宿主一致;
  9. --dns-search example.com: 指定容器DNS搜索域名,默认和宿主一致;
  10. -h "mars": 指定容器的hostname;
  11. -e username="ritchie": 设置环境变量;
  12. --env-file=[]: 从指定文件读入环境变量;
  13. --cpuset="0-2" or --cpuset="0,1,2": 绑定容器到指定CPU运行;
  14. -m :设置容器使用内存最大值;
  15. --net="bridge": 指定容器的网络连接类型,支持 bridge/host/none/container: 四种类型;
  16. --link=[]: 添加链接到另一个容器;
  17. --expose=[]: 开放一个端口或一组端口;
  18. --volume , -v: 绑定一个卷


docker run -tid --name  [容器名称]  [镜像名称:版本]  bash 

   以-t -t -d 模式 创建一个新的容器并运行一个命令bash,例:docker run -itd(启动模式) --name testnode(自定义一个容器名称) node(镜像名称)


绑定容器的 8080 端口,并将其映射到本地主机 127.0.0.1 的 80 端口上。 

 docker run -p 127.0.0.1:80:8080/tcp ubuntu bash

使用镜像 nginx:latest,以后台模式启动一个容器,将容器的 80 端口映射到主机的 80 端口,主机的目录 /data 映射到容器的 /data。 

docker run -p 80:80 -v /data:/data -d nginx:latest 


  docker exec   

在运行的容器中执行命令

语法
docker exec [OPTIONS] CONTAINER COMMAND [ARG...]

OPTIONS

  • -d :分离模式: 在后台运行
  • -i :即使没有附加也保持STDIN 打开
  • -t :分配一个伪终端
例:进入testnode容器查看node版本
 docker exec -it testnode /bin/bash


 也可以通过 docker ps -a 命令查看已经在运行的容器,然后使用容器 ID 进入容器。

查看已经在运行的容器 ID:使用,docker attach 容器id :连接到正在运行中的容器。


退出当前容器exit



 docker start


重新启动容器



docker ps -a 容器列表(所有容器)
docker ps 查看所有(运行的)容器
docker exec -ti <id> bash 以 bash 命令进入容器内 docker run -ti --name [容器名称][镜像名称:版本] bash 创建一个新的容器并运行一个命令bash,
docker logs 查看容器日志
docker top <container_id> 查看容器最近的一个进程
docker run -ti --name [容器名称] -p 8080:80 [镜像名称:版本] bash 端口映射
docker rm <container_id> 删除容器
docker stop <container_id> 停止容器
docker start <container_id> 开启容器
docker restart <container_id> 重启容器
docker inspect <container_id> 查看容器详情
docker commit [容器名称] my_image:v1.0 容器提交为新的镜像

docker attach 容器id :连接到正在运行中的容器。 attach是可以带上--sig-proxy=false来确保CTRL-D或CTRL-C不会关闭容器。

docker cp 用于容器与主机之间的数据相互拷贝。


 docker cp

用于容器与主机之间的数据拷贝。 

语法

docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH|-

docker cp [OPTIONS] SRC_PATH|- CONTAINER:DEST_PATH


OPTIONS说明:

-L :保持源目标中的链接


实例:

将主机/www/runoob目录拷贝到容器96f7f14e99ab的/www目录下。

docker cp /www/runoob 96f7f14e99ab:/www/

将主机/www/runoob目录拷贝到容器96f7f14e99ab中,目录重命名为www。

docker cp /www/runoob 96f7f14e99ab:/www

将容器96f7f14e99ab的/www目录拷贝到主机的/tmp目录中。

docker cp 96f7f14e99ab:/www /tmp/

docker cp /pdcloud/apiconfig.json apigateway:/pdcloud_gateway/config.json






收藏
分享
评论 0
关于作者

hujun5282

多读书 少写代码

标签云
统计信息

文章总数:188

累计访问: 次

今日访问: 次

在线人数: 人