一文学会如何使用Docker

news2024/11/15 10:37:59

Docker常见使用

1、Docker安装

## 下载阿里源repo文件
$ curl -o /etc/yum.repos.d/Centos-7.repo http://mirrors.aliyun.com/repo/Centos-7.repo
$ curl -o /etc/yum.repos.d/docker-ce.repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

$ yum clean all && yum makecache
## yum安装
$ yum install -y docker-ce
## 查看源中可用版本
$ yum list docker-ce --showduplicates | sort -r
## 安装指定版本
##yum install -y docker-ce-18.09.9

## 配置源加速
## https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors
mkdir -p /etc/docker
vi /etc/docker/daemon.json
{
  "registry-mirrors" : [
    "https://8xpk5wnt.mirror.aliyuncs.com",
    "https://dockerhub.azk8s.cn",
    "https://registry.docker-cn.com",
    "https://ot2k4d59.mirror.aliyuncs.com/"
  ]
}

## 设置开机自启
systemctl enable docker  
systemctl daemon-reload

## 启动docker
systemctl start docker 

2、Docker指令

## 查看docker信息
docker info

## 设置开机自启
systemctl enable docker 

## 启动docker
systemctl start docker

## 重启docker
systemctl restart docker

## 停止docker
systemctl stop docker

## docker-client 查看docker安装后的目录
which docker

## docker daemon  进程监控,查看当前进程的情况
ps aux |grep docker

## 查看运行状态的容器列表
$ docker ps

## 查看全部状态的容器列表
$ docker ps -a

3、Docker核心要素

三大核心要素:镜像(Image)、容器(Container)、仓库(Registry)

镜像(Image)

打包了业务代码及运行环境的包,是静态的文件,不能直接对外提供服务。

容器(Container)

镜像的运行时,可以对外提供服务。本质上讲是利用namespace和cgroup等技术在宿主机中创建的独立的虚拟空间。

仓库(Registry)

  • 公有仓库,Docker Hub,阿里,网易…
  • 私有仓库,企业内部搭建
    • Docker Registry,Docker官方提供的镜像仓库存储服务
    • Harbor, 是Docker Registry的更高级封装,它除了提供友好的Web UI界面,角色和用户权限管理,用户操作审计等功能
  • 镜像访问地址形式 registry.devops.com/demo/hello:latest,若没有前面的url地址,则默认寻找Docker Hub中的镜像,若没有tag标签,则使用latest作为标签
  • 公有的仓库中,一般存在这么几类镜像
    • 操作系统基础镜像(centos,ubuntu,suse,alpine)
    • 中间件(nginx,redis,mysql,tomcat)
    • 语言编译环境(python,java,golang)
    • 业务镜像(django-demo…)

在这里插入图片描述

4、镜像指令

## 查看所有镜像
docker images

## 拉取镜像 docker pull 镜像名:version
docker pull nginx:alpine

## 导出镜像到文件中
docker save -o nginx-alpine.tar nginx:alpine

## 从文件中加载镜像
docker load -i nginx-alpine.tar

## 删除镜像 docker rmi 镜像id/镜像名:tag(version)
docker rmi nginx:alpine

5、推送本地镜像到镜像仓库中

内部系统

## 打tag
docker tag nginx:alpine localhost:5000/nginx:alpine 
## 推送到本地镜像仓库(内部)
docker push localhost:5000/nginx:alpine

外部系统

## tag
docker tag nginx:alpine 192.168.200.128:5000/nginx:alpine

## 推送
docker push 192.168.200.128:5000/nginx:alpine
## 报错信息如下
The push refers to repository [192.168.200.128:5000/nginx]
Get https://192.168.200.128:5000/v2/: http: server gave HTTP response to HTTPS client

## docker默认不允许向http的仓库地址推送,如何做成https的,参考:https://docs.docker.com/registry/deploying/#run-an-externally-accessible-registry
## 我们没有可信证书机构颁发的证书和域名,自签名证书需要在每个节点中拷贝证书文件,比较麻烦,因此我们通过配置daemon的方式,来跳过证书的验证:

cat /etc/docker/daemon.json

{
  "registry-mirrors": [
    "https://8xpk5wnt.mirror.aliyuncs.com"
  ],
  ## 跳过验证
  "insecure-registries": [
     "192.168.200.128:5000"
  ]
}

systemctl restart docker
docker push 192.168.200.128:5000/nginx:alpine

6、容器指令

容器运行

## 后台运行
docker run --name nginx -d nginx:alpine

docker run -i -t -d参数区别

OptionsMean
-i以交互模式运行容器,通常与 -t 同时使用;
-t为容器重新分配一个伪输入终端,通常与 -i 同时使用;
-d后台运行容器,并返回容器ID;

实际上,在运行容器的时候,镜像地址后面跟的命令等于是覆盖了原有的容器的CMD命令,因此,执行的这些命令在容器内部就是1号进程,若该进程不存在了,那么容器就会处于退出的状态,比如,宿主机中执行。

docker run -d --name test_echo nginx:alpine echo 1,容器会立马退出。

测试如下:

-d

测试1:docker run -d --name ubuntu1 ubuntu:19.10

在这里插入图片描述

测试2:

docker run -d --name=test_redis \
-p 6379:6379 \
-v $PWD/redis/redis.conf:/etc/redis/redis.conf  \
-v $PWD/redis/data:/data  \
redis:latest echo 1

在这里插入图片描述

在这里插入图片描述

-i

测试1:docker run -i --name ubuntul2 ubuntu:19.10
在这里插入图片描述

输入指令:exit 后观察如下图

在这里插入图片描述

-t

测试1:docker run -t --name ubuntul3 ubuntu:19.10

在这里插入图片描述

进入容器

docker exec -it <container_id_or_name> /bin/bash

宿主机与容器间数据拷贝

## 拷贝宿主机数据到容器
docker cp /tmp/test.txt nginx:/tmp

## 拷贝容器数据到宿主机
docker cp nginx:/tmp/test.txt ./

容器数据持久化-数据卷

## -v
docker run --name nginx -d  -v /opt:/opt -v /var/log:/var/log nginx:alpine

docker run -id \
-p 3306:3306 \
--name=new_mysql \
-v $PWD/mysql5.7/conf:/etc/mysql/conf.d \
-v $PWD/mysql5.7/logs:/logs \
-v $PWD/mysql5.7/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
mysql:5.7

查看容器日志

## 查看全部日志
$ docker logs nginx

## 实时查看最新日志
$ docker logs -f nginx

## 从最新的100条开始查看
$ docker logs --tail=100 -f nginx

容器启动、删除

## 停止运行中的容器
$ docker stop nginx

## 启动退出容器
$ docker start nginx

## 删除退出容器
$ docker rm nginx

## 删除运行中的容器
$ docker rm -f nginx

查看容器或者镜像的明细

## 查看容器详细信息,包括容器IP地址等
$ docker inspect nginx

## 查看镜像的明细信息
$ docker inspect nginx:alpine

容器中使用vi指令

apt-get update

## 进行安装
apt-get install vim

7、DockerFile

创建Dockerfile文件

## 	告诉docker使用哪一个镜像作为模板,后续命令都以该镜像为基础
FROM ubuntu

## RUN命令会在上面指定的镜像里执行命令
RUN apt-get update && apt install -y nginx

## 告诉docker,启动容器时执行如下命令
CMD ["/usr/sbin/nginx","-g","daemon off;"]

详情可以查看:DockerFile

8、Docker Compose

Compose

Compose 是用于定义和运行多容器 Docker 应用程序的工具。通过 Compose,您可以使用 YML 文件来配置应用程序需要的所有服务。然后,使用一个命令,就可以从 YML 文件配置中创建并启动所有服务。

Compose 使用的三个步骤

  • 使用 Dockerfile 定义应用程序的环境。
  • 使用 docker-compose.yml 定义构成应用程序的服务,这样它们可以在隔离环境中一起运行。
  • 最后,执行 docker-compose up 命令来启动并运行整个应用程序。

例子:

Dockerfile

# 设置基础镜像
FROM nginx
# 作者
MAINTAINER torlesse <xxxxx@qq.com>
# 将dist文件中的内容复制到 /usr/share/nginx/html/ 这个目录下面
#COPY dist/  /usr/share/nginx/html/
#COPY nginx.conf /etc/nginx/nginx.conf
RUN echo 'echo nginx init ok!!'

FROM java:8
VOLUME /tmp
ADD authtask-0.0.1-SNAPSHOT.jar app.jar
RUN bash -c 'touch /app.jar'
EXPOSE 8081
ENTRYPOINT [ "java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar" ]
RUN echo 'echo springboot-project run ok!!'

DockerCompose.yml

version: '3.2'
services:
  proxy:
    image: nginx
    ports:
      - 18090:8088
      - 8081:8081
    privileged: true
    volumes:
      - /root/torlesse/auth/nginx/conf/nginx.conf:/etc/nginx/nginx.conf
      - /root/torlesse/auth/nginx/www:/usr/share/nginx/html
      - /root/torlesse/auth/nginx/logs:/var/log/nginx
  torlesse:
    build: .
    image: auth
    ports:
     - "8086:8081"

详情请查看:DockerCompose

书籍推荐

以下是几本关于Docker的书籍推荐及其推荐理由:

  1. 《Docker in Action》

作者:Simon Brown、Ben Sharp、Joe Beda

推荐理由:《Docker in Action》是一本非常适合初学者的入门书籍,它详细介绍了Docker的基本概念、使用方法和最佳实践。书中包含了大量的示例代码和练习题,可以帮助读者快速掌握Docker的使用技巧。此外,该书还介绍了如何使用Docker构建和管理微服务架构,对于想要深入了解Docker的人来说非常有用。

  1. 《Docker Cookbook》

作者:Michael Hausenblas、Chris MacNaughton、Timothy P. Sheehan

推荐理由:《Docker Cookbook》是一本非常实用的指南,它提供了大量的Docker容器化应用程序的示例代码和最佳实践。书中包含了许多常见的应用程序场景,例如Web应用程序、数据库、消息队列等,可以帮助读者快速构建和管理自己的Docker容器化应用程序。此外,该书还介绍了如何使用Docker进行持续集成和持续部署,对于想要提高开发效率的人来说非常有用。

  1. 《Mastering Docker》

作者:John Goerzen、Seth Vidal、Arunava Murugan

推荐理由:《Mastering Docker》是一本非常全面的Docker技术指南,它涵盖了从基础知识到高级应用的所有内容。书中包含了大量的示例代码和练习题,可以帮助读者深入理解Docker的各种功能和技术。此外,该书还介绍了如何使用Docker构建和管理大规模的分布式系统,对于想要深入了解Docker的人来说非常有用。

希望对你有所帮助~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/690447.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

详解8种不同类型的防火墙

什么是防火墙&#xff1f; 防火墙是一种监视网络流量并检测潜在威胁的安全设备或程序&#xff0c;作为一道保护屏障&#xff0c;它只允许非威胁性流量进入&#xff0c;阻止危险流量进入。 防火墙是client-server模型中网络安全的基础之一&#xff0c;但它们容易受到以下方面的攻…

选择低代码平台的正确方式

传统开发模式早已不能满足大多数追求效率的企业的要求&#xff0c;低代码平台的出现正是可以缓解相应的开发压力&#xff0c;作为使用者我们更应该擦亮眼睛&#xff0c;选择合适的平台产品&#xff0c;充分利用新技术带来的新价值。小编在以前的文章有介绍过低代码平台应该如何…

php中的双引号与单引号的基本使用

字符串,在各类编程语言中都是一个非常重要的数据类型 网页当中的图片,文字,特殊符号,HTMl标签,英文等都属于字符串 PHP字符串变量用于存储并处理文本, 在创建字符串之后&#xff0c;我们就可以对它进行操作。我们可以直接在函数中使用字符串&#xff0c;或者把它存储在变量中 字…

360手机命令行进入fastboot线刷模式 360手机刷机

360手机命令行进入fastboot线刷模式 360手机刷机 参考&#xff1a;360手机-360刷机360刷机包twrp、root 360刷机包360手机刷机&#xff1a;360rom.github.io 【前言】 因360手机特殊&#xff1b;且因机器情况而异&#xff1b;导致360手机进不去fastboot线刷模式、360手机进…

基于Java+Swing实现坦克大战游戏

基于JavaSwing实现坦克大战游戏 一、系统介绍二、功能展示三、其他系统四、获取源码 一、系统介绍 此系统是使用Java语言实现坦克大战游戏程序&#xff0c;玩家通过连接访问进入游戏&#xff0c;通过操纵坦克来守卫基地&#xff0c;玩家还可以获得超级武器来提升坦克的属性&am…

点云特征描述子概述、PFH描述子提取

1、 6种点云特征描述子简概 NARF&#xff08;Normal Aligned Radial Feature&#xff09;特征点描述子&#xff1a;NARF描述子是一种基于法线对齐的径向特征描述子。它通过将点云表面分割为小的网格单元&#xff0c;并计算每个单元中的法线直方图&#xff0c;从而提取特征。NA…

【网站监控】如何监控自己的网站(接口)

网站监控-如何监控自己的网站 前言一、开始使用1、使用API进行监控数据采集?2、请求参数3、如何查看监控效果? 二、注意点 前端必备工具&#xff08;免费图床、API、chatAI等&#xff09;推荐网站LuckyCola: https://luckycola.com.cn/ 前言 网站接口监控是指对接口的状态进…

Keil为啥比IAR更受欢迎?

关注星标公众号&#xff0c;不错过精彩内容 作者 | strongerHuang 微信公众号 | strongerHuang 最近交流群在讨论【选择Keil和IAR的问题】&#xff0c;这就顺便展开来说下。 你可能觉得Keil、IAR这种集成开发环境界面比较古老&#xff0c;又不好用。 但是&#xff0c;这里告诉大…

ConcurrentModificationException异常分析与解决

ConcurrentModificationException异常分析与解决 1、场景重现&#xff0c;制造ConcurrentModificationException异常 Testpublic void ConcurrentModificationExceptionTest() {JSONArray jsonArray new JSONArray();JSONObject jsonObject new JSONObject();jsonObject.put…

改写cocos2d的ProgressTimer实现任意起始点的Radial进度条

解释一下要做的事&#xff1a; 原生ProgressTimer控件的进度起始点只能是在&#xff08;0.5&#xff0c;1&#xff09;的位置&#xff0c;如下&#xff1a; 我们要改成可以将矩形边上的任意点作为起始点&#xff0c;如下&#xff1a; 首先讲一下绘制的逻辑&#xff1a; 先根…

3: PCIe BDF(Bus,Device,Function)

目录 1.概述 2.BUS&#xff1a;总线号 3.Device&#xff1a;设备号 4.Function&#xff1a;功能号 1.概述 PCIe总线中的每一个功能都有一个唯一的标识符与之对应。这个标识符就是BDF&#xff08;Bus&#xff0c;Device&#xff0c;Function&#xff09; 2.BUS&#xff1a;总…

基于Java客户管理系统设计实现(源码+lw+部署文档+讲解等)

博主介绍&#xff1a; ✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战 ✌ &#x1f345; 文末获取源码联系 &#x1f345; &#x1f447;&#x1f3fb; 精…

SSD202D-GPIO调试驱动-三

前面又两个介绍 SSD202D-GPIO调试驱动-一 SSD202D-GPIO调试驱动-二 主要是调试方法: insmod gpio_lonbon.ko 然后可以再看到一下节点 //出现以下节点 proc/gpio-lb/dbg sys/kernel/debug/gpio-lb/debug sys/class/gpio-lb/ dev/gpio-lb 然后

python中MongoEngine简单使用

python中MongoEngine简单使用 1 MongoEngine介绍 MongoEngine是一个处理MongoDB的对象文档映射器。pymongo是非面向对象的方式操作数据。 MongoEngine开发文档 # 开发文档 http://docs.mongoengine.org/index.html# 数据类型 http://docs.mongoengine.org/apireference.htm…

Excel 2019访问SQL Server数据库的实现过程

源之&#xff1a;https://vip.kingdee.com/article/288066926977041920?productLineId11 在日常ERP系统实施过程中&#xff0c;往往会遇到客户的一些个性化需求&#xff0c;比如有些客户习惯用Excel电子表格来查看ERP系统中的数据&#xff0c;业余拓展学习了一下&#xff0c;借…

STM32cubeMX配置工程(全过程+修改MCU方法+注意事项)

1.修改默认的固件包下载路径&#xff0c;避免占用C盘空间 2、选择ACCESS TO MCU 3、在跳出的界面中的Part Number中搜索对应的芯片型号 4、选好后在右下角双击对应的芯片&#xff0c;然后跳出配置界面 左边可以配置外设&#xff0c;右边可以配置每个IO口的功能 System Core包括…

java之路——带你了解SpringSecurity安全框架与基本应用

文章目录 一、什么是SpringSecurity二、SpringSecurity的主要应用场合三、springsecurity代码步骤 一、什么是SpringSecurity **Spring Security是一个功能强大的开源框架&#xff0c;用于在Java应用程序中实现身份验证和授权功能。它提供了一套全面的安全性解决方案&#xff…

java设计模式(二十三)访问者模式

目录 定义模式结构角色职责代码实现适用场景优缺点定义 访问者模式是一种行为型模式,它允许你定义一个作用于某个对象结构中的各个元素的操作,而同时又不改变这些元素的类。该模式的核心思想是将数据结构与数据操作分离,从而可以在不改变数据结构的前提下定义新的操作。 模…

【爆肝四万字!操作系统原理95+】期末考试知识点超超全总结

本文涵盖了笔者本学期学习“操作系统原理”课程的所有重要内容&#xff0c;还包含了一定量的经典例题。纯干货&#xff0c;不废话&#xff01;目的在于知识的记录&#xff0c;便于今后的回顾&#xff0c;同时也希望对即将考试的朋友们有帮助。 目录 操作系统概述 操作系统的…

前端Vue自定义加载中loading加载结束end组件 可用于分页展示 页面加载请求

前端Vue自定义加载中loading加载结束end组件 可用于分页展示 页面加载请求&#xff0c; 请访问uni-app插件市场地址&#xff1a;https://ext.dcloud.net.cn/plugin?id13219 效果图如下&#xff1a; 实现代码如下&#xff1a; # cc-paging #### 使用方法 使用方法 <!--…