菜鸟入门Docker

2024-09-07 07:20
文章标签 入门 docker 菜鸟

本文主要是介绍菜鸟入门Docker,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

初始Docker

Docker的概念

Docker的用途

DOcke的安装

Docker架构

配置Docker镜像加速器

Docker常用命令

Docker服务相关的命令。

Docker镜像相关的命令

Docker容器相关的命令

容器的数据卷

数据卷的概念和作用

配置数据卷

Docker应用部署

Docker部署mysql

Docker部署tomcat

Docker部署nginx

搜索nginx镜像

拉取nginx镜像

创建容器,设置端口映射、目录映射

使用外部机器访问nginx

Redis部署


初始Docker

Docker的概念

Docker是基于Go语言实现的云开源项目。

Docker的主要目标是“Build,Ship and Run Any App,Anywhere”,也就是通过对应用组件的封装、分发、部署、运行等生命周期的管理,使用户的APP(可以是一个WEB应用或数据库应用等等)及其运行环境能够做到“一次镜像,处处运行”。

Docker的用途

这里引用网上某博主的部分内容,Docker 的主要用途,目前有三大类。

(1)提供一次性的环境。比如,本地测试他人的软件、持续集成的时候提供单元测试和构建的环境。

(2)提供弹性的云服务。因为 Docker 容器可以随开随关,很适合动态扩容和缩容。

(3)组建微服务架构。通过多个容器,一台机器可以跑多个服务,因此在本机就可以模拟出微服务架构。

DOcke的安装

Docker可以运行在MAC、Windows、CentOS、UBUNTU等操作系统上,本课程基于CentOS7安装Docker。官网: https://www.docker.com

# 1、yum包更新到最新[centos更新  虚拟卡打开 ]
yum update
#2、安装需要的软件包,yum-util提供yum-config-manager功能,另外两个是devicemapper驱动依赖的
yum install -y yum-utils device-mapper-persistent-data lvm2
# 3、设置yum源
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
#4、安装docker ,出现输入的界面都按y  ce社区版---学习够了,   ee版企业版收费
yum install -y docker-ce
# 5、查看docker版本,验证是否验证成功
docker -v

Docker架构

  • Docker 镜像(Image)就是一个==只读==的模板。镜像可以用来创建 Docker 容器,一个镜像可以创建很多容器。

  • 容器(Container) :Docker 利用容器(Container)独立运行的一个或一组应用。就像是Java中的类和实例对象一样,镜像是静态的定义,容器是镜像运行时的实体。容器为镜像提供了一个标准的和隔离的运行环境,它可以被启动、开始、停止、删除。每个容器都是相互隔离的、保证安全的平台

  • 仓库(Repository)是集中存放镜像文件的场所。

    类似于

    Maven仓库,存放各种jar包的地方;

    gitee仓库,存放各种git项目的地方;

    Docker公司提供的官方registry被称为Docker Hub,存放各种镜像模板的地方。

    仓库分为公开仓库(Public)和私有仓库(Private)两种形式。

    最大的公开仓库是 Docker Hub(https://hub.docker.com/),

    存放了数量庞大的镜像供用户下载。国内的公开仓库包括阿里云 、网易云等

配置Docker镜像加速器

默认情况下,将来从docker hub (https://hub.docker.com/)上下载docker镜像,太慢。一般都会配置镜像加速器:

sudo tee /etc/docker/daemon.json <<-'EOF'
{
    "registry-mirrors": [
        "https://do.nark.eu.org",
        "https://dc.j8.work",
        "https://docker.m.daocloud.io",
        "https://dockerproxy.com",
        "https://docker.mirrors.ustc.edu.cn",
        "https://docker.nju.edu.cn"
    ]
}
EOF

sudo systemctl daemon-reload
sudo systemctl restart docker

Docker常用命令

Docker服务相关的命令。

  • 启动docker服务 systemctl start docker
  • 停止docker服务 systemctl stop docker 重启docker服务 systemctl restart docker
  • 查看docker服务状态 systemctl status docker
  • 开机启动dockeh服务 systemctl enable docker
  • 查看docker命令帮助文档: docker 具体命令 --help

Docker镜像相关的命令

查看镜像:

docker images

搜索镜像

docker search redis

拉取镜像

docker pull redis:6.0  冒号后跟的是版本号,如果不跟默认latest

删除镜像---本地仓库

根据id删除
docker rmi id
根据名称:版本号删除
docker rmi redis:6.0
-------------------------------------------------------
删除没有开启容器的镜像

删除所有镜像
docker images q --查询所有镜像的id
docker rmi (docker images q)

Docker容器相关的命令

1.创建容器

2.查看容器

docker ps --查看正在运行的容器
docker ps -a --查看所有容器

3.创建一个容器但不进入容器

4.进入正在运行的指定容器内

这时在使用exit退出容器,则不会关闭容器

5.启动/停止/删除容器

docker start 容器名

docker stop 容器名

docker rm 容器id #只删除未启动的容器

docker rm -f 容器id||名称 #删除任何容器

docker ps -aq #查看所有容器的id

docker rm docker ps -aq

6.查看容器信息

docker inspect 容器名称

9.输出当前容器日志信息---知道容器启动失败的原因

docker logs 容器id

容器的数据卷

数据卷的概念和作用

配置数据卷

演示:

1. 宿主机容器卷中的内容发生改变对应容器内的目录也跟着改变

2. 容器内的目录发生改变宿主机容器卷内的内容也跟着变化

3. 删除容器后,再次开启容器并挂载容器卷。数据依然存在      

4. 一个容器挂载多个容器卷                  

5. 多个容器挂载一个容器卷

注意: 如果数据卷是文件,则必须在宿主机中创建该文件,否则会自动被认为文件夹创建。

Docker应用部署

Docker部署mysql

搜索mysql镜像

docker search mysql

拉取mysql镜像

docker pull mysql

创建容器,设置端口映射、目录映射

docker run -d --name=m01  -p 3306:3306 -v /ykq/mysql/log:/var/log/mysql \
-v /ykq/mysql/data:/var/lib/mysql -v /ykq/mysql/conf:/etc/mysql/conf.d \
-e MYSQL_ROOT_PASSWORD=123456 mysql:8.2.0

  • 参数说明:

  • -p 3307:3306:将容器的 3306 端口映射到宿主机的 3307 端口。

    • -v /ykq/mysql/conf:/etc/mysql/conf.d:将主机当前目录下的 conf/my.cnf 挂载到容器的 /etc/mysql/my.cnf。配置目录

    • -v /ykq/mysql/log:/var/log/mysql:将主机当前目录下的 logs 目录挂载到容器的 /logs。日志目录

    • -v /ykq/mysql/data:/var/lib/mysql :将主机当前目录下的data目录挂载到容器的 /var/lib/mysql 。数据目录

    • -e MYSQL_ROOT_PASSWORD=123456:初始化 root 用户的密码。

docker run --name elasticsearch -p 9200:9200 \
 -p 9300:9300 \
 -e "discovery.type=single-node" \
 -e ES_JAVA_OPTS="-Xms64m -Xmx128m" \
  -v /usr/local/data-docker/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
 -v /usr/local/data-docker/elasticsearch/data:/usr/share/elasticsearch/data \
 -v /usr/local/data-docker/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
 --network es-net \
 --privileged \
 -d elasticsearch:5.6.4

Docker部署tomcat

搜索tomcat镜像

docker search tomcat

拉取tomcat镜像

docker pull tomcat

创建容器,设置端口映射、目录映射

# 在/root目录下创建tomcat目录用于存储tomcat数据信息
mkdir ~/tomcat
cd ~/tomcat

docker run -d --name tomcat01 \
        -v $PWD/conf:/usr/local/tomcat/conf \
        -v $PWD/webapps:/usr/local/tomcat/webapps \
        -p 8080:8080 \
        tomcat:8.5

使用外部机器访问tomcat。

docker run -dit --name tomcat8089 --restart=always \
-p 8089:8080 \
-e TZ=Asia/Shanghai \
-v /opt/docker/tomcat/webapps:/usr/local/tomcat/webapps \
tomcat:8.5

Docker部署nginx

搜索nginx镜像

docker search nginx

拉取nginx镜像

docker pull nginx

创建容器,设置端口映射、目录映射

# 在/root目录下创建nginx目录用于存储nginx数据信息
mkdir ~/nginx
cd ~/nginx
mkdir conf
cd conf
# 在~/nginx/conf/下创建nginx.conf文件,粘贴下面内容
vim nginx.conf

user  nginx;
worker_processes  1;

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;


events {
worker_connections  1024;
}


http {
include       /etc/nginx/mime.types;
default_type  application/octet-stream;

log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
             '$status $body_bytes_sent "$http_referer" '
             '"$http_user_agent" "$http_x_forwarded_for"';

access_log  /var/log/nginx/access.log  main;

sendfile        on;
#tcp_nopush     on;

keepalive_timeout  65;

#gzip  on;

include /etc/nginx/conf.d/*.conf;
}

docker run -p 80:80 \
 -d --name nginx \
 -v /opt/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
 -v /opt/nginx/html:/usr/share/nginx/html \
 nginx:latest

  • 参数说明:

    • -p 80:80:将容器的 80端口映射到宿主机的 80 端口。

    • -v $PWD/conf/nginx.conf:/etc/nginx/nginx.conf:将主机当前目录下的 /conf/nginx.conf 挂载到容器的 :/etc/nginx/nginx.conf。配置目录

    • -v $PWD/logs:/var/log/nginx:将主机当前目录下的 logs 目录挂载到容器的/var/log/nginx。日志目录

使用外部机器访问nginx

Redis部署

搜索redis镜像

docker search redis

拉取redis镜像

docker pull redis:5.0

创建容器,设置端口映射

docker run -id --name=c_redis -p 6379:6379 redis:5.0

 使用外部机器连接redis

 未完待续!!!

这篇关于菜鸟入门Docker的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1144426

相关文章

通过Docker容器部署Python环境的全流程

《通过Docker容器部署Python环境的全流程》在现代化开发流程中,Docker因其轻量化、环境隔离和跨平台一致性的特性,已成为部署Python应用的标准工具,本文将详细演示如何通过Docker容... 目录引言一、docker与python的协同优势二、核心步骤详解三、进阶配置技巧四、生产环境最佳实践

使用docker搭建嵌入式Linux开发环境

《使用docker搭建嵌入式Linux开发环境》本文主要介绍了使用docker搭建嵌入式Linux开发环境,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录1、前言2、安装docker3、编写容器管理脚本4、创建容器1、前言在日常开发全志、rk等不同

从入门到精通详解Python虚拟环境完全指南

《从入门到精通详解Python虚拟环境完全指南》Python虚拟环境是一个独立的Python运行环境,它允许你为不同的项目创建隔离的Python环境,下面小编就来和大家详细介绍一下吧... 目录什么是python虚拟环境一、使用venv创建和管理虚拟环境1.1 创建虚拟环境1.2 激活虚拟环境1.3 验证虚

Java List 使用举例(从入门到精通)

《JavaList使用举例(从入门到精通)》本文系统讲解JavaList,涵盖基础概念、核心特性、常用实现(如ArrayList、LinkedList)及性能对比,介绍创建、操作、遍历方法,结合实... 目录一、List 基础概念1.1 什么是 List?1.2 List 的核心特性1.3 List 家族成

c++日志库log4cplus快速入门小结

《c++日志库log4cplus快速入门小结》文章浏览阅读1.1w次,点赞9次,收藏44次。本文介绍Log4cplus,一种适用于C++的线程安全日志记录API,提供灵活的日志管理和配置控制。文章涵盖... 目录简介日志等级配置文件使用关于初始化使用示例总结参考资料简介log4j 用于Java,log4c

史上最全MybatisPlus从入门到精通

《史上最全MybatisPlus从入门到精通》MyBatis-Plus是MyBatis增强工具,简化开发并提升效率,支持自动映射表名/字段与实体类,提供条件构造器、多种查询方式(等值/范围/模糊/分页... 目录1.简介2.基础篇2.1.通用mapper接口操作2.2.通用service接口操作3.进阶篇3

Python自定义异常的全面指南(入门到实践)

《Python自定义异常的全面指南(入门到实践)》想象你正在开发一个银行系统,用户转账时余额不足,如果直接抛出ValueError,调用方很难区分是金额格式错误还是余额不足,这正是Python自定义异... 目录引言:为什么需要自定义异常一、异常基础:先搞懂python的异常体系1.1 异常是什么?1.2

Python实现Word转PDF全攻略(从入门到实战)

《Python实现Word转PDF全攻略(从入门到实战)》在数字化办公场景中,Word文档的跨平台兼容性始终是个难题,而PDF格式凭借所见即所得的特性,已成为文档分发和归档的标准格式,下面小编就来和大... 目录一、为什么需要python处理Word转PDF?二、主流转换方案对比三、五套实战方案详解方案1:

使用IDEA部署Docker应用指南分享

《使用IDEA部署Docker应用指南分享》本文介绍了使用IDEA部署Docker应用的四步流程:创建Dockerfile、配置IDEADocker连接、设置运行调试环境、构建运行镜像,并强调需准备本... 目录一、创建 dockerfile 配置文件二、配置 IDEA 的 Docker 连接三、配置 Do

Spring WebClient从入门到精通

《SpringWebClient从入门到精通》本文详解SpringWebClient非阻塞响应式特性及优势,涵盖核心API、实战应用与性能优化,对比RestTemplate,为微服务通信提供高效解决... 目录一、WebClient 概述1.1 为什么选择 WebClient?1.2 WebClient 与