【云原生 | Docker篇】轻松学会 Docker命令(二)(上)

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介: 【云原生 | Docker篇】轻松学会 Docker命令(二)(上)

一、常见的Docker命令



所有Docker命令手册


https://docs.docker.com/engine/reference/commandline/docker/

https://docs.docker.com/engine/reference/commandline/docker/


image.png

image.png

image.png

image.png


根据正在运行的容器制作出相关的镜像:反向


根据镜像启动一个容器:正向


有了Docker:


先去软件市场搜镜像:https://registry.hub.docker.com/ docker hub


  1. 下载镜像 docker pull xxx
  2. 启动软件 docker run 镜像名;
  3. 对于镜像的所有管理操作都在这一个命令: docker image --help


image.png

docker pull redis == docker pull redis:latest(最新版)


阿里云的镜像是从docker hub来的,我们配置了加速,默认是从阿里云(缓存)下载


REPOSITORY (名) TAG (标签)                 IMAGE ID(镜像 id ) CREATED (镜像的创建时间) SIZE
redis                            5.0.12-alpine3.13           50ae27fed589            6 days ago                                 29.3MB
redis                            latest                              621ceef7494a            2 months ago                             104MB


镜像是怎么做成的。基础环境 + 软件

redis 的完整镜像应该是: linux 系统 +redis 软件

alpine :超级经典版的 linux 5mb ; + redis = 29.0mb

没有 alpine3 的:就是 centos 基本版

以后自己选择下载镜像的时候尽量使用



alpine: slim:
docker rmi -f $(docker images -aq) #删除全部镜像
docker image prune #移除游离镜像 dangling:游离镜像(没有镜像名字的)
docker tag 原镜像:标签 新镜像名:标签 #重命名
docker create [OPTIONS] IMAGE [COMMAND] [ARG...]
docker create [设置项] 镜像名 [启动] [启动参数...]
docker create redis: 按照redis:latest镜像启动一个容器
docker kill是强制kill -9(直接拔电源);
docker stop #可以允许优雅停机(当前正在运行中的程序处理完所有事情后再停止)
docker create --name myredis -p 6379(主机的端口):6379(容器的端口) redis -p port1:port2 #port1是必须唯一的,那个是没关系的。
docker run --name myredis2 -p 6379:6379 -p 8888:6379 redis :默认是前台启动的,一般加上-d 让他后台悄悄启动, 虚拟机的很多端口绑定容器的一个端口是允许的
docker run -d == docker create + docker start
启动了 nginx ;一个容器。 docker 容器里面安装了 nginx ,要对 nginx 的所有修改都要进容器:
docker attach 绑定的是控制台. 可能导致容器停止。不要用这个 
docker exec -it -u 0:0 --privileged mynginx4 /bin/bash: 0用户,以特权方式进入容器 
docker container inspect 容器名 = docker inspect 容器 
docker inspect image /network/volume ....


一般运行中的容器会常年修改,我们要使用最终的新镜像

docker commit -a lansonli -m "first commit" mynginx4 mynginx:v4


把新的镜像放到远程docker hub,方便后来在其他机器下载


---------export操作容器/import-------------------
docker export导出的文件被import导入以后变成镜像,并不能直接启动容器,需要知道之前的启动命令 (docker ps --no-trunc),然后再用下面启动。 
docker run -d -P mynginx:v6 /docker-entrypoint.sh nginx -g 'daemon off;
' 或者docker image inspect 看之前的镜像,把 之前镜像的 Entrypoint的所有和 Cmd的连接起来就 能得到启动命令
----save/load--操作镜像--
docker save -o busybox.tar busybox:latest 把busybox镜像保存成tar文件
docker load -i busybox.tar 把压缩包里面的内容直接导成镜像
----------
镜像为什么能长久运行
镜像启动一定得有一个阻塞的进程,一直干活,在这里代理。 
docker run [OPTIONS] IMAGE [COMMAND] [ARG...] 
docker run --name myredis2 -p 6379:6379 -p 8888:6379 redis 
镜像启动以后做镜像里面默认规定的活。 
docker run -it busybox; 交互模式进入当前镜像启动的容器
---------
----产生镜像-----
1、基于已经存在的容器,提取成镜像 2、人家给了我tar包,导入成镜像 3、做出镜像
-1)、准备一个文件Dockerfile 
FROM busybox
CMD ping baidu.com
-2)、编写Dockerfile
-3)、构建镜像 
docker build -t mybusy66:v6 -f Dockerfile .
---做redis的镜像---
FROM alpine(基础镜像) 
//下载安装包 
//解压 
//准备配置文件 
CMD redis-server redis.conf
----------
build 是根据一个Dockerfile构建出镜像 
commit 是正在运行中的容器提交成一个镜像

image.png


容器的状态


Created(新建)、Up(运行中)、Pause(暂停)、Exited(退出)

docker run的立即启动,docker create得稍后自己启动


推送镜像


  • 注册docker hub并登录
  • 可以创建一个仓库,选为public
  • docker push lansonli/mynginx:tagname
  • docker hub一个完整镜像的全路径是
  • docker.io/library/redis:alpine3.13 我们的 docker.io/lansonli/mynginx:tagname
  • docker images的时候镜像缩略了全名 默认官方镜像没有docker.io/library/
  • docker.io/ rediscommander / redis-commander:latest
  • docker.io/lansonli/mynginx:v4 我的镜像的全称
  • 登录远程docker仓库
  • 当前会话登录以后 docker login 。所有的东西都会push到这个人的仓库
  • docker push lansonli/mynginx:tagname
  • 上面命令的完整版 docker push docker.io/lansonli/mynginx:v4


怎么知道是否登录了 cat ~/.docker/config.json 有没有 auth的值,没有就是没有登录

docker hub 太慢了,用阿里云的镜像仓库,或者以后的 habor 仓库


sudo docker tag [ImageId] registry.cn-hangzhou.aliyuncs.com/lsl/mynginx: 镜像版
sudo docker push registry.cn-hangzhou.aliyuncs.com/lsl/mynginx:[镜像版本号]
仓库网址/名称空间(lsl/lansonli)/仓库名:版本号


相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
7天前
|
Kubernetes Cloud Native Docker
云原生时代的容器化实践:Docker和Kubernetes入门
【10月更文挑战第37天】在数字化转型的浪潮中,云原生技术成为企业提升敏捷性和效率的关键。本篇文章将引导读者了解如何利用Docker进行容器化打包及部署,以及Kubernetes集群管理的基础操作,帮助初学者快速入门云原生的世界。通过实际案例分析,我们将深入探讨这些技术在现代IT架构中的应用与影响。
28 2
|
4天前
|
运维 Cloud Native 虚拟化
一文吃透云原生 Docker 容器,建议收藏!
本文深入解析云原生Docker容器技术,涵盖容器与Docker的概念、优势、架构设计及应用场景等,建议收藏。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
一文吃透云原生 Docker 容器,建议收藏!
|
26天前
|
安全 Docker 容器
|
26天前
|
网络安全 数据安全/隐私保护 Docker
|
25天前
|
存储 监控 安全
|
22天前
|
Kubernetes Cloud Native 开发者
云原生技术入门:Kubernetes和Docker的协作之旅
【10月更文挑战第22天】在数字化转型的浪潮中,云原生技术成为推动企业创新的重要力量。本文旨在通过浅显易懂的语言,引领读者步入云原生的世界,着重介绍Kubernetes和Docker如何携手打造弹性、可扩展的云环境。我们将从基础概念入手,逐步深入到它们在实际场景中的应用,以及如何简化部署和管理过程。文章不仅为初学者提供入门指南,还为有一定基础的开发者提供实践参考,共同探索云原生技术的无限可能。
33 3
|
25天前
|
存储 关系型数据库 MySQL
|
28天前
|
Kubernetes Cloud Native 开发者
探秘云原生计算:Kubernetes与Docker的协同进化
在这个快节奏的数字时代,云原生技术以其灵活性和可扩展性成为了开发者们的新宠。本文将带你深入了解Kubernetes和Docker如何共同塑造现代云计算的架构,以及它们如何帮助企业构建更加敏捷和高效的IT基础设施。
|
1月前
|
网络协议 Docker 容器
docker pull命令拉取镜像失败的解决方案
docker pull命令拉取镜像失败的解决方案
815 1
|
1月前
|
安全 网络安全 开发者
Docker学习笔记(一):Docker命令总结
本文介绍了Docker的基本概念、优点以及常用命令。Docker是一个开源的应用容器引擎,它通过容器打包应用程序及其依赖项,实现快速部署和迁移。主要优点包括轻量级、可移植性、易于管理、安全性和开源性。文章还区分了镜像和容器的概念,并提供了构建镜像、查看容器、运行容器、停止和删除容器等常用Docker命令的示例。
129 0