你应该学会的docker使用技巧

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
Elasticsearch Serverless通用抵扣包,测试体验金 200元
云数据库 RDS PostgreSQL,高可用系列 2核4GB
简介: 这是之前在简书写的一篇旧文;没有读过的小伙伴可以读读。

1安装docker


  • 检查curl包是否安装?
which curl
  • 如果curl没有安装的话,则先更新apt源,并安装curl,如下:
apt-get update
apt-get install curl
apt-get update
wget -qO- https://get.docker.com/ | sh
  • 设置当前用户为docker用户组,便于解决每次执行docker命令时都需要输入密码。
# 添加一个新的docker用户组
groupadd docker
# 添加当前用户到docker用户组里,注意这里的xxoo为ubuntu server登录用户名
gpasswd -a xxoo docker
# 重启docker后台监护进程
service docker restart
# 重启之后,尝试一下,是否生效
docker version
#若还未生效,则系统重启,则生效
reboot
  • 启动docker服务,如下:
service docker start


2常见命令


  • 运行容器
docker run hello-world
  • 显示本地镜像
docker images
  • 获取镜像
docker pull ubuntu:12.04
  • 创建一个容器,并让其运行bash
docker run -t -i ubuntu:12.04 /bin/sh

 说明:-i:表示以“交互模式”运行容器 -t:表示容器启动后会进入其命令行。

  • 利用DocFile来创建镜像
mkdir sinatra
cd sinatra/
touch Dockerfile
vim Dockerfile
docker build -t="ouruser/sinatra:v2" .
  • 运行容器
docker start [stop| restart] xxx
  • 导出容器
docker ps -a
docker save -o ubuntu.tar.gz ubuntu:14.04  *(保存的是所有这个镜像的版本记录,包括一些历史数据.)*
docker export pid > ./ubuntu.tar.gz  *(导出的是容器当前所用的镜像内容)*
  • 导入容器
docker load < /tmp/mynewimage.tar *(docker save 的逆操作)*
cat ubuntu.tar | docker import - test/ubuntu:v1.0 *( export 的逆操作)*
  • 删除容器
docker stop xxx
docker rm xxx

  说明:docker 的文件是放在 /var/lib/docker/containers/ 中的。

  • 保存镜像
docker commit xxx abc

  说明:这里保存成一个名叫 abc 的镜像,镜像名称中只允许出现小写字母和数字。

  • 删除镜像
docker rmi abc
  • 获取镜像历史
docker history abc
docker images --tree  *(查看所有镜像的历史过程)*

 说明:只能对本地存在的 docker 镜像执行这个命令。

  • 杀死一个或多个指定容器进程
docker kill container

 说明:-s “KILL” 自定义发送至容器的信号。

  • 查看一个正在运行容器进程
docker top container

 说明:也支持 ps 命令参数。

  • 暂停某一容器的所有进程
docker pause container
  • 恢复某一容器的所有进程
docker unpause container
  • 标记本地镜像,将其归入某一仓库
docker tag image name

  说明:-f 覆盖已有标记。

  • 获取容器运行时的输出日志
docker logs container
  • docker attach
docker run -itd ubuntu:14.04 /bin/bash
docker attach 44fc0f0582d9

  说明:docker attach可以attach到一个已经运行的容器的stdin,然后进行命令执行的动作。但是需要注意的是,如果从这个stdin中exit,会导致容器的停止。

  • docker exec
docker exec -i name /bin/sh

   只用-i时,由于没有分配伪终端,看起来像pipe执行一样。但是执行结果、命令 返回值都可以正确获取。

docker exec -it name /bin/sh

  使用-it时,则和我们平常操作console界面类似。而且也不会像attach方式因为退出,导致整个容器退出。

docker exec -t name /bin/sh

   如果只使用-t参数,则可以看到一个console窗口,但是执行命令会发现由于没有获得stdin的输出,无法看到命令执行情况。

docker exec -d name /bin/sh a.sh

    在后台执行一个进程。可以看出,如果一个命令需要长时间进程,使用-d参数会很快返回。程序在后台运行。

  • 分层级显示一个镜像或容器的信息
docker inspect 465c60612e5c


3常见容器安装


  • mysql
docker search mysql
docker pull mysql
docker run --name xmysql-db -e MYSQL_ROOT_PASSWORD=root -d -p 3306:3306 -v /data/mysql_data/:/var/lib/mysql mysql
  • mongodb
docker pull mongo
docker run --name xmongo-db -p 27018:27017 -v /data/my_mongo_data:/data/db -d mongo
  • jenkins
docker pull jenkins
chown 1000 /data/jenkins_data/
docker run --name xjenkins -d -p 9000:8080 -p 50000:50000 -v /data/jenkins_data:/var/jenkins_home -e JAVA_OPTS=-Duser.timezone=Asia/Shanghai --env JAVA_OPTS="-Xmx512m -XX:PermSize=256m -XX:MaxPermSize=1024m" -d jenkins
  • elasticsearch
docker pull elasticsearch
docker run --name xelastic-search -d -p 9200:9200 -p 9300:9300 -v /data/esdata:/usr/share/elasticsearch/data elasticsearch
  • tomcat
docker pull tomcat
docker run --name xtomcat -d -v /data/tomcat/webapps/:/usr/local/tomcat/webapps/ -p 8080:8080 -p 9001:9000 tomcat:8
  • dockerui
docker run -d -p 9000:9000 --privileged -v /var/run/docker.sock:/var/run/docker.sock dockerui/dockerui
  • webgoat
docker pull webgoat/webgoat-7.1
docker run --name xwebgoat -d -p 8080:8080 webgoat/webgoat-7.1
相关实践学习
以电商场景为例搭建AI语义搜索应用
本实验旨在通过阿里云Elasticsearch结合阿里云搜索开发工作台AI模型服务,构建一个高效、精准的语义搜索系统,模拟电商场景,深入理解AI搜索技术原理并掌握其实现过程。
ElasticSearch 最新快速入门教程
本课程由千锋教育提供。全文搜索的需求非常大。而开源的解决办法Elasricsearch(Elastic)就是一个非常好的工具。目前是全文搜索引擎的首选。本系列教程由浅入深讲解了在CentOS7系统下如何搭建ElasticSearch,如何使用Kibana实现各种方式的搜索并详细分析了搜索的原理,最后讲解了在Java应用中如何集成ElasticSearch并实现搜索。 &nbsp;
相关文章
|
存储 JSON Ubuntu
Elasticsearch:理解 Percolator 数据类型及 Percolate 查询
Elasticsearch 是一款功能强大且功能丰富的搜索工具。本文将介绍一种小众的数据类型 Percolator ,同时介绍Percolate query的使用。 您需要基本了解 Elasticsearch,尤其是mapping和search。
7172 0
Elasticsearch:理解 Percolator 数据类型及 Percolate 查询
|
数据采集 人工智能 编解码
抛弃视觉编码器,这个原生版多模态大模型也能媲美主流方法
【8月更文挑战第4天】在AI领域,多模态大模型(VLMs)融合视觉与语言处理,但现有模型多依赖视觉编码器,限制了灵活性与效率。为解决此问题,研究者开发出不依赖编码器的VLMs,提出一种高效训练方案,通过统一解码器内部桥接视觉-语言表示,并引入额外监督增强视觉识别能力。基于此,开发出EVE模型,在多个基准测试中表现出色,仅用3500万公开数据即可媲美甚至超越传统模型。尽管如此,EVE仍面临计算资源需求高及数据质量等挑战。这一突破引发了对未来VLM发展方向的讨论。[论文链接: https://arxiv.org/abs/2406.11832]
264 1
|
前端开发
Bootstrap5 消息弹窗(Toasts)3
本示例展示了如何使用HTML和Bootstrap创建并显示多个消息弹窗。通过设置`.toast-container`类及相应的位置属性,可以轻松控制弹窗的布局与间距。每个弹窗包含标题、时间戳及关闭按钮,支持自定义内容显示。
|
Oracle NoSQL 关系型数据库
主流数据库对比:MySQL、PostgreSQL、Oracle和Redis的优缺点分析
主流数据库对比:MySQL、PostgreSQL、Oracle和Redis的优缺点分析
2492 3
|
监控 安全 数据可视化
Grafana 安全性和权限管理
【8月更文第29天】Grafana 是一个广泛使用的开源平台,用于可视化和监控时间序列数据。随着 Grafana 在生产环境中的广泛采用,确保其安全性变得至关重要。本文将探讨如何配置 Grafana 的访问控制和安全设置以保护敏感数据,并提供一些具体的代码示例。
1747 3
|
存储 安全 JavaScript
XSS--概念、类型、实战--分析与详解[pikachu]
XSS--概念、类型、实战--分析与详解[pikachu]
1216 0
|
Linux
centos 修改ip地址
centos 修改ip地址
338 0
|
消息中间件 存储 NoSQL
springcloud:springboot整合RabbitMQ|RabbitMQ保证消息可靠性(三)
上一章我们讲解了rabbitmq的四种交换机类型、七种通讯方式。本章我们将整合springboot来向大家完整演示rabbitmq的使用,并说明如何保证消息的可靠性。
796 0
springcloud:springboot整合RabbitMQ|RabbitMQ保证消息可靠性(三)
|
SQL 关系型数据库 MySQL
MySQL - order by和 group by 优化初探
MySQL - order by和 group by 优化初探
333 0
MySQL - order by和 group by 优化初探
|
Java Spring
SpringBoot——SpringBoot中设置字符集编码的两种方式
SpringBoot——SpringBoot中设置字符集编码的两种方式
1830 0
SpringBoot——SpringBoot中设置字符集编码的两种方式