前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Docker常用操作

Docker常用操作

作者头像
matt
发布2022-10-25 15:55:50
4080
发布2022-10-25 15:55:50
举报
文章被收录于专栏:CSDN迁移CSDN迁移

Docker常用操作

docker源码解析

一、简介

Linux 容器(Linux Containers,LXC)不是模拟一个完整的操作系统,而是对进程进行隔离。

Docker 把应用程序及其依赖,打包在 image 文件(容器的模板)里面。实际开发中,一个 image 文件往往通过继承另一个 image 文件,加上一些个性化设置而生成。Docker Hub

image 文件生成的容器实例,本身也是一个文件,称为Container容器文件

优点: 启动容器相当于启动本机的一个进程,而不是启动一个操作系统。Docker 属于 Linux 容器的一种封装,提供简单易用的容器使用接口。 (1)提供一次性的环境;(2)提供弹性的云服务;(3)组建微服务架构。

二、架构

Docker 容器(类似 对象)通过 Docker 镜像(类似 类)来创建。

代码语言:javascript
复制
Client --> Docker daemon --> Registry --> Images --> Container
						 --> Images --> Container
						 --> Images

 Client: docker build, docker pull, docker run
 DOCKER-HOST: Docker daemon, Images, Container
  • Docker daemon( Docker守护进程) Docker daemon是一个运行在宿主机( DOCKER-HOST)的后台进程。可通过 Docker Client与之通信。
  • Client( Docker客户端) Docker客户端是 Docker的用户界面,它可以接受用户命令和配置标识,并与 Docker daemon通信。
  • Images( Docker镜像) Docker镜像是一个只读模板,它包含创建 Docker容器的说明。它和系统安装光盘有点像,使用系统安装光盘可以安装系统,同理,使用Docker镜像可以运行 Docker镜像中的程序。
  • Container(容器) 容器是镜像的可运行实例,可通过 Docker API 或者 CLI 命令来启停、移动、删除容器。
  • Registry(仓库) Docker Registry是一个集中存储与分发镜像的服务。构建完 Docker镜像后,就可在当前宿主机上运行。但如果想要在其他机器上运行这个镜像,可借助 Docker Registry来避免镜像的手动复制。

一个 Docker Registry可包含多个 Docker仓库(类似Maven仓库中某jar包路径),每个仓库可包含多个镜像标签(类似Maven仓库中的jar包版本号),每个标签对应一个 Docker镜像。

安装方式推荐 使用方法推荐

三、镜像/镜像仓库操作

  1. 拉取最新的 tomcat 镜像到本地
代码语言:javascript
复制
sudo docker pull tomcat:latest
  1. 基于 Dockerfile 创建镜像文件 dockerfile可以帮助我们创建自定义的镜像,比较简单直接基于最新的tomcat镜像,当然tomcat镜像也可以自定义(tomcat版本、jdk版本)。
代码语言:javascript
复制
# 根据指定路径下的dockerfile文件,创建自命名的tag的镜像
docker build -f ${PATH/dockerfile} -t ${name:tag} .

注意: docker build 最后的 . 号,其实是在指定镜像构建过程中的上下文环境的目录给Docker引擎(服务端守护进程)。

  1. 删除镜像
代码语言:javascript
复制
docker rmi ${image-id}
docker rmi ${image-alias}
  1. 将镜像推送到指定环境
代码语言:javascript
复制
# 某些环境需要先 docker login 进行验证
# 当不指定tag的时候,系统会自动补上latest的tag,然后去匹配
docker tag ${name:old-tag} ${PATH/name:new-tag}
docker push ${PATH/new-name:tag}

四、容器操作

1. 新建并启动容器

docker run, docker start, docker create 如果本地不存在该名称的镜像(: 后面可以加版本号), Docker 就会自动从 Docker Hub 下载镜像并启动一个 Docker 容器。 1.1 容器重命名

代码语言:javascript
复制
docker rename $(old-name) $(new-name)

1.2 启动 docker run只在第一次运行时使用,将镜像放到容器中;docker start的作用是,重新启动已存在的镜像;docker create创建一个容器,并处于停滞状态。

代码语言:javascript
复制
# -d 后台运行
# -p 宿主机端口:容器端口,开放容器端口到宿主机端口
# --name="${docker-name}": 为容器指定一个名称;
# 描述:使用docker镜像${image-name:version}以后台模式启动一个容器,将主机的端口1映射到容器的端口2,主机的目录1映射到容器的目录2,并命名为${container-name}
docker run -it --name=${container-name} -p ${host-prot}:${container-port}
-v ${host-PATH}:${container-PATH} -d ${image-name:version}

# -i: 以交互模式运行容器,通常与 -t 同时使用;
# -t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
docker run -it ${image-name:tag} /bin/bash

# --restart=always:–restart标志会检查容器的退出码来决定容器是否重启容器

2. 列出容器

docker ps

  • CONTAINER_ID:表示容器 ID。
  • IMAGE: 表示镜像名称。
  • COMMAND:表示启动容器时运行的命令。
  • CREATED:表示容器的创建时间。
  • STATUS:表示容器运行的状态。UP表示运行中, Exited表示已停止。
  • PORTS: 表示容器对外的端口号。
  • NAMES: 表示容器名称。该名称默认由 Docker自动生成,也可使用 docker run 命令的–name选项自行指定。
代码语言:javascript
复制
# -a :显示所有的容器,包括未运行的。
# -f :根据条件过滤显示的内容。
# -l :显示最近创建的容器。
# -n :列出最近创建的n个容器。
# -q :静默模式,只显示容器编号。
docker ps

# 列出最后创建的2个容器
docker ps -n=2

3. 停止容器

docker stop, docker kill 将容器退出。

代码语言:javascript
复制
docker stop ${container-id}
docker stop ${container-name}

发送SIGKILL信号来强制停止容器。

代码语言:javascript
复制
docker kill ${container-id}

4. 其他操作

代码语言:javascript
复制
# 查看容器所有信息
docker inspect ${container-id}

# 查看容器日志
docker container logs ${container-id}

# 查看容器里的进程
docker top ${container-id}

# ==推荐==
# docker run命令运行容器的时候,没有使用-it参数,就要用这个命令进入容器
docker container exec -it ${container-id} /bin/bash

# 删除容器
docker rm ${container-id}

五、工作中常用命令

(1)容器的创建与运行

代码语言:javascript
复制
# 根据指定目录的dockerfile创建容器
docker build -f ${dockerfile-path} -t ${name}:${tag} .

# 临时创建交互式容器
# -t:在新容器内指定一个伪终端或终端;-i:允许你对容器内的标准输入 (STDIN) 进行交互。
docker images
docker run -it ${image-id} bash

# 后台模式以进程形式启动,可通过docker ps查询
# 命名为${docker-name},绑定宿主机和容器的端口和路径
docker run --name ${docker-name} -p ${host-port}:${docker-port} -v ${host-path}:${docker-path} -d ${REPOSITORY}:${TAG}

# 在容器内使用docker logs命令,查看容器内的标准输出,使用ID和NAMES都可以

(2)容器删除

代码语言:javascript
复制
# 无法删除已存在容器的镜像时
docker ps -a
docker rm ${container-id}
docker rmi ${images-id}

docker rmi -f ${images-id}

Kubernetes(常简称为K8s)是用于自动部署、扩展和管理容器化(containerized)应用程序的开源系统

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-09-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Docker常用操作
  • 一、简介
  • 二、架构
  • 三、镜像/镜像仓库操作
  • 四、容器操作
    • 1. 新建并启动容器
      • 2. 列出容器
        • 3. 停止容器
          • 4. 其他操作
          • 五、工作中常用命令
          相关产品与服务
          容器镜像服务
          容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档