首页 > 其他分享 >Docker学习笔记

Docker学习笔记

时间:2024-06-10 16:13:50浏览次数:27  
标签:容器 redis 笔记 OPTIONS 学习 镜像 Docker my docker

学习背景

近些年,如果你是一名开发,那么Docker这个热门的技术名词你一定听说过,我也不例外,但是因为平时没接触过,所以一直都没动力去了解使用。最近在折腾自己维护在github上的项目的时候,发现项目所依赖的外部环境比较多,比如zookeeper、redis、elasticsearch等等,如果都安装一遍的话比较麻烦,而且因为是自己整理平时积累用的项目,对数据也没什么要求,只要有这样一个环境能保证项目运行起来就行了。第一时间想到的就是利用docker容器,这样自己不但可以顺便学习一下这个热门技术,还可以把搭建成果作为这个项目的一部分让有兴趣研究的项目关注者直接在接触到这个项目的时候可以快速把环境搭建起来,可谓是一举两得。

有兴趣的朋友可以访问项目地址:https://github.com/MartinDai/SpringBoot-Project


安装 Docker Desktop

参考 https://www.docker.com/get-started,安装并启动后就可以使用下面的这些命令了

docker 命令

查看docker版本

docker --version

查看当前docker版本,可以顺便验证docker是否安装成功且启动好了

1

查看帮助

docker --help

查看docker命令帮助,包含所有支持的操作命令使用规则及简介

2

还可以看某个指令的详细帮助,如:docker images --help,docker所有命令都可以在最后加上--help来查看该命令的使用帮助

3

拉取镜像

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

下载镜像,如果没有指定镜像地址,默认从官方的hub下载指定的镜像,官方的hub提供了绝大多数热门的组件镜像,可以根据自己的需要进行搜索,这个网站有点类似github的模式,各个官方组件一般都会有比较详细的使用说明,比如Redis

4

可以使用docker pull redis下载最新版本的redis镜像

5

也可以指定下载的版本,如docker pull redis:5.0.5就可以下载5.0.5这个版本的镜像

当然有一些组件没有发布在官方的hub上,比如elasticsearch和kibana,这两个镜像需要从docker.elastic.co这个地址下载,可以使用docker pull docker.elastic.co/elasticsearch/elasticsearch:6.2.4下载

国内访问docker官方镜像有时候会超时,可以配置deamon.json使用国内的镜像

{ "registry-mirrors": ["https://docker.mirrors.ustc.edu.cn/","https://hub-mirror.c.163.com","https://registry.docker-cn.com"], "insecure-registries": ["10.0.0.12:5000"] }

查看镜像

docker images

查看当前已下载的镜像列表

6

删除镜像

docker rmi [OPTIONS] IMAGE [IMAGE...]

举例:docker rmi my-image:1.0,表示删除名为my-image,版本号为1.0的镜像

使用镜像创建容器

docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

使用指定镜像创建一个新的容器并运行,例如我们想创建运行redis容器,则可以使用命令docker run --name my-redis -p 6379:6379 -d redis,其中--namedocker run提供的参数,后面紧跟着的my-redis是对应的值,表示启动以后容器的名称,如果不指定则会使用随机生成的一个字符串。-p 6379:6379表示把本机端口6379映射到容器的6379端口,-d表示后台运行,如果不指定则启动后会自动进入容器控制台,并且退出控制台的同时会关闭容器。

容器查看

docker container ls [OPTIONS]

查看容器,可以通过docker container ls查看当前运行的容器,或者通过docker container ls -a查看所有创建的容器

删除容器

docker container rm [OPTIONS] CONTAINER [CONTAINER...]

举例:docker container rm my-container1 my-container2
表示同时删除name为my-container1my-container2的两个容器

启动容器

docker start [OPTIONS] CONTAINER [CONTAINER...]

举例:docker start my-container1表示启动name为my-container1的容器

容器执行命令

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

对指定的容器执行命令,我们可以通过执行docker exec -it my-redis /bin/bash进入我们刚刚启动的容器

复制文件到容器

docker cp [OPTIONS] SRC_PATH|- CONTAINER:DEST_PATH

举例:docker cp /Users/martin/Downloads/test.txt e4cf118af140:/var/lib/dev/

其中:
/Users/martin/Downloads/test.txt为本地文件路径
e4cf118af140为容器ID
/var/lib/dev/为容器目录

复制容器文件到本地

docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH|-

举例:docker cp e4cf118af140:/var/lib/dev/test.txt /Users/martin/Downloads/

其中:
/Users/martin/Downloads/为本地路径
e4cf118af140为容器ID
/var/lib/dev/test.txt为容器文件路径

停止容器

docker stop [OPTIONS] CONTAINER [CONTAINER...]

停止容器,如果要停止上面启动的redis容器,则可以使用命令docker stop my-redis,指定了名字的好处立马就可以体现出来了,我们可以很精准的控制容器,而不需要去查询容器名称

修改容器作为新镜像

docker commit [-m] [-a] CONTAINERID REPOSITORY[:TAG]

-m 类似代码提交时的comment信息
-a 指定修改者信息
CONTAINERID 用来创建镜像的容器ID
REPOSITORY[:TAG] 目标镜像的仓库名和tag信息

创建成功后会新镜像的ID

举例:docker commit -m "add something" -a "Martin Dai" e4cf118af140 my-image:latest

推送镜像到远程

docker push REPOSITORY[:TAG]

举例:docker push my-image:latest

基于容器导出镜像

docker export [OPTIONS] CONTAINER

举例:docker export -o my-image.tar my-container,表示name为my-container的容器导出到my-image.tar文件

导入镜像

docker import [OPTIONS] file|URL|- [REPOSITORY[:TAG]]

举例:docker import my-image.tar my-image:latest,表示将my-image.tar导入为镜像,名为my-image,版本号为latest

docker-compose 命令

有时候项目依赖的外部环境比较多,但是又不想一个一个启动各个容器怎么办呢,docker-compose就是用来解决这个问题的,该命令可以通过使用指定的yml同时启动多个容器。

假如我们现在有个yml(具体yml规则可参考官方文档),且文件名为docker-compose.yml

version: '3.7' #标识docker-compose的版本,不同版本所支持的配置项有些不一样
services: #服务(也就是各个容器)配置
  redis: #服务名称,用于配置文件内关联使用
    image: redis:5.0 #镜像版本
    container_name: redis #容器名称
    command: redis-server /etc/redis/redis.conf #启动后执行的命令
    restart: always #启动失败是否重启
    volumes: #路径扩展映射配置
          - ./redis/:/etc/redis/ #把当前目录下的redis文件夹映射到容器中的/etc/redis文件夹,这样就可以在容器之外维护配置文件了
    ports: #端口映射配置
      - 6379:6379 #把本地的6379端口映射到容器的6379端口
    networks: #网络配置
      - net-cache
  memcached:
    image: memcached:1.5
    container_name: memcached
    restart: always
    ports:
      - 11211:11211
    networks:
      - net-cache
networks:
  net-cache:
    driver: bridge #配置桥接网络

进入该文件所在的目录,然后执行docker-compose up就可以启动redis和memcached这两个容器,如果要使用其他文件名,则可以使用-f参数来指定文件名,如docker-compose -f docker-compose-cache.yml up,如果需要后台运行,则可以在最后加上-d

有启动就有停止,如果想要停止docker-compose up启动的容器,可以执行docker-compose down命令停止所有组合的容器。

标签:容器,redis,笔记,OPTIONS,学习,镜像,Docker,my,docker
From: https://www.cnblogs.com/martindai/p/18240750

相关文章

  • Docker构建多平台镜像
    多平台镜像使用场景我们知道Docker镜像是支持多平台(不同的操作系统/架构)的,比如linux/amd64,linux/arm64,linux/riscv64等,当我们需要在不同平台使用容器运行我们的镜像的时候,通常可能会考虑分别编译各个平台的镜像文件,然后打上不同的tag用来区分平台,使用的时候也同样需要根据实际运......
  • 前端学习笔记(一)
    前端学习笔记(一)网页基本框架标签:写在html的代码单标签:一般是功能标签有特别的功能双标签:一般包裹内容显示东西双标签一般闭合而且后面的标签的<>里的第一个字符必须使用/,例如,<html></html>基本框架<html></html>网页的核心,基本所有内容都被它包裹......
  • python爬虫笔记——学习笔记—6
    爬虫笔记——学习笔记—61.安装scrapy打开此电脑![img](file:///C:/Users/Administrator/AppData/Local/Temp/msohtmlclip1/01/clip_image001.png在桌面的上栏目输入cmd并打开再命令框中升级python:python-mpipinstall–upgradepip安装scrapy:pipinstallscrapy安装......
  • Vue2学习二-Vue核心(事件处理)
    目录7.事件处理7.1事件的基本使用7.2事件修饰符7.3键盘事件7.事件处理7.1事件的基本使用<!DOCTYPEhtml><html> <head> <metacharset="UTF-8"/> <title>事件的基本使用</title> <!--引入Vue--> <scripttype="text/javascript"......
  • Java学习-JDBC(五)
    JDBC优化及工具类封装现有问题①创建连接池②获取连接③连接回收ThreadLocal为解决多线程程序的并发问题提供了一种新的思路,使用这个工具类可以很简洁地编写出优美的多线程程序,通常用在多线程中管理共享数据库连接、Session等ThreadLocal用于保存某个线程共享变量,原因是......
  • Java学习-JDBC(四)
    连接池现有问题每次操作数据库都需要重新获取新连接,使用完毕后需close释放,频繁的创建和销毁造成资源浪费连接的数量无法把控,对服务器造成巨大压力连接池连接池是数据库连接对象的缓冲区,通过配置,由连接池负责创建连接,管理连接,释放连接等操作预先创建数据库连接放入连接池......
  • Docker装不上怎么办
    目录Ubuntu安装DockerCentOS安装Docker        最近Docker的消息相信大家都已经知道了,你在安装Docker的时候如果还用官网的源安装的话基本上都会因为网络问题安装不上,那么Docker就不能使用了吗,当然不是,我们可以通过阿里云的地址去安装,废话不多说,直接上操作。Ubunt......
  • Docker镜像加速
    目录UbuntuCentOS        今天给大家分享一下Docker下载镜像速度慢或者无法下载怎么办,我们其实可以配置镜像加速,这里给大家分享的是阿里云的镜像加速。Ubuntusudomkdir-p/etc/dockersudotee/etc/docker/daemon.json<<-'EOF'{"registry-mirrors":["h......
  • 01-Excel初阶操作-学习笔记
    超链接专题应用场景:一份excel表格中包含多个子表,如下图所示。让我们在目录所在的子表创建超链接,使得能够快速跳转到各个子表查看数据内容,并为每一个含有数据的表格添加返回到目录所在子表的超链接手工创建超链接具体操作:我们以制作跳转至“全部数据”所在子表为例点到目录所......
  • 最新初中数学思维导图大合集+衡水高考学霸笔记,可下载打印!
    今天给大家带来一个超级实用的学习神器——思维导图法,最新版的初中数学思维导图大合集!这可不是我吹哦,连哈佛、剑桥大学都在用的高级学习方法,阿星特意为初中数学的小伙伴们整理了一份思维导图,帮你们串联知识,高效复习,理清逻辑。高清导图,文末下载哦!说起思维导图,这可不是什么......