资讯详情

用了一个月的Docker,我真的是爱了

一个月Docker,我真的很爱

在这里插入图片描述

文章目录

  • 一个月Docker,我真的很爱
    • 前言
    • Docker的概念
    • 安装Docker
    • Docker的架构
    • 配有镜像加速器
    • Docker基础命令
      • Docker使用镜像命令
        • 列出镜像列表
        • 获取新的镜像
        • 查找镜像
        • 删除镜像
      • Docker容器相关命令
        • 启动容器
        • 查看所有容器
        • 删除容器
        • 停止容器
        • 启动容器
        • 进入容器
        • 查看容器信息
      • 查看容器日志
    • Docker数据卷
      • 简介数据卷
      • 配置数据卷
      • 使用数据卷
    • DockerFile
      • 基础命令
      • 实战使用
    • 结语

前言

博主刚来公司,领导直接给了我一个docker-compose.yml文件真的让我这个刚入职的小白惊呆了。因为开发后的一些环境测试是在Docker所以我入职以来一直使用容器Docker命令真的用来吐哈哈。但我不得不说真的。好用??×

所以今天给大家带来一篇相应的博客文章,希望能给大家带来一些帮助。


Docker的概念

  • 它是一应用容器引擎。
  • 诞生于2013年初,基于Go语言实现,dotCloud公司出品。
  • 它可以让开发者打包他们的应用程序,并依赖于轻量级和移植容器,然后发布任何流行的 机器上。
  • 沙箱机制完全用于容器隔离。
  • 容器性能成本极低。
  • 从17.03版本后分为


安装Docker

可以运行在MAC,Win,CentOS、UBUNTU等待操作系统。

笔记通过了xshell安装链接服务器

首先下载和配置 yum

yum update   yum install -y yum-utils device-mapper-persistent-data lvm2  #设置yum源 yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo 

下载

yum install -y docker-ce #检查安装是否成功 docker -v 

Docker的架构

  • 服务:接收命令或远程请求,操作镜像或容器
  • 客户端:发送命令或请求Docker服务端
  • 镜像,就是相当于是一个root比如官方镜像系统。ubuntu16.04 它包含一整套Ubuntu16.04最小系统的root文件系统。
  • :镜像和容器之间的关系就像面对程序设计中的类别和对象一样,静态定义镜像,实体在容器中运行。容器可以创建、启动、停止、删除、暂停等。
  • 仓库可视为保存镜像的代码控制中心。

配有镜像加速器

在正常情况下docker下载镜像太慢,通常配备镜像加速器。

一般有以下加速器:

  • 阿里云
  • 腾讯云
  • 网易云

本配置直接根据阿里云配置:

我们在控制台上搜索

我们可以看到这个相应的教程。

sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": ["https://自己配置.mirror.aliyuncs.com"] } EOF sudo systemctl daemon-reload sudo systemctl restart docker 

Docker基础命令

在使用 当我们通常使用一些基本的操作命令时,我们将学习 基本使用命令!

Docker使用镜像命令

列出镜像列表

我们可以用 列出当地主机上的镜像。

[root@VM-12-16-centos ~]# docker images REPOSITORY   TAG       IMAGE ID       CREATED        SIZE redis        5.0      c5da061a611a   5 months ago   110MB

各个选项说明:

docker images -p #查看所用的镜像id

获取一个新的镜像

如果我们本机想下载一个不存在的新镜像我们可以通过命令 docker pull xxx

Crunoob@runoob:~$ docker pull ubuntu:13.10
13.10: Pulling from library/ubuntu
6599cadaf950: Pull complete 
23eda618d451: Pull complete 
f0be3084efe9: Pull complete 
52de432f084b: Pull complete 
a3ed95caeb02: Pull complete 
Digest: sha256:15b79a6654811c8d992ebacdfbd5152fcf3d165e374e264076aa435214a947a3
Status: Downloaded newer image for ubuntu:13.10

下载完成后,我们可以直接使用这个镜像来运行容器。

查找镜像

如果要查找一个镜像我们能通过 docker search 命令来寻找对我们合适的镜像源。

[root@VM-12-16-centos ~]# docker search redis
NAME                                               DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
redis                                              Redis is an open source key-value store that…   11002     [OK]       
bitnami/redis                                      Bitnami Redis Docker Image                      221                  [OK]
bitnami/redis-sentinel                             Bitnami Docker Image for Redis Sentinel         37                   [OK]
bitnami/redis-cluster                                                                              32                   
rapidfort/redis                                    RapidFort optimized, hardened image for Redi…   15                   
rapidfort/redis-cluster                            RapidFort optimized, hardened image for Redi…   15                   
circleci/redis                                     CircleCI images for Redis                       14                   [OK]
ubuntu/redis                                       Redis, an open source key-value store. Long-…   10                   
bitnami/redis-exporter                                                                             7                    
.......

删除镜像

删除镜像,但是不能删除在运行得的镜像。

如果我们需要删除我们需要删除一个镜像,我们可以通过命令 docker rmi xxx 即可删除成功。

$ docker rmi hello-world

Docker容器相关命令

启动容器

一般我们能通过 docker run 参数 命令来进行容器的创建和启动。

$ docker run -it --name=c1 ubuntu /bin/bash

  • 保持容器运行。通常与 同时使用。加入这两个参数后,容器创建后自动进入容器中,退出容器后,容器自动关闭。
  • 为容器重新分配一个伪输入终端,通常与 同时使用。
  • 以守护(后台)模式运行容器。创建一个容器在后台运行,需要使用 docker exec 进入容器。退出后,容器则不会关闭。
  • 创建的容器一般称为交互式容器。
  • 创建的容器一般称为守护式容器。
  • 为创建的容器命名。

查看所有容器

一般我们能使用以下命令:docker ps -a 用来查看所有的容器。

$ docker ps -a

查看正在运行的镜像

[root@VM-12-16-centos ~]# docker ps
CONTAINER ID   IMAGE       COMMAND                  CREATED      STATUS      PORTS                                       NAMES
a7c50732a601   redis:5.0   "docker-entrypoint.s…"   6 days ago   Up 6 days   0.0.0.0:6379->6379/tcp, :::6379->6379/tcp   c_redis

删除容器

一般我们能通过docker rm xx 来进行一个容器删除。

$ docker rm -f 1e560fca3906

不能删除正在运行的容器。

停止容器

通过以下命令来进行一个容器停止命令。

$ docker stop <容器 ID>

启动容器

通过以下命名可以来进行一个容器启动。

$ docker start <容器 ID> 

进入容器

$ docker exec 参数 #退出容器,容器不会关闭。

查看容器信息

能通过下面的命令来进行一个容器信息的查看。

$ docker inspect 容器名称

查看容器日志

$ docker logs 容器名称

[root@VM-12-16-centos ~]# docker logs mysql
2022-06-26 03:49:59+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 5.7.36-1debian10 started.
2022-06-26 03:49:59+00:00 [Note] [Entrypoint]: Switching to dedicated user 'mysql'
2022-06-26 03:49:59+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 5.7.36-1debian10 started.
2022-06-26T03:49:59.301456Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2022-06-26T03:49:59.302460Z 0 [Note] mysqld (mysqld 5.7.36) starting as process 1 ...
2022-06-26T03:49:59.304538Z 0 [Note] InnoDB: PUNCH HOLE support available
2022-06-26T03:49:59.304556Z 0 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins
2022-06-26T03:49:59.304560Z 0 [Note] InnoDB: Uses event mutexes
2022-06-26T03:49:59.304563Z 0 [Note] InnoDB: GCC builtin __atomic_thread_fence() is used for memory barrier
2022-06-26T03:49:59.304566Z 0 [Note] InnoDB: Compressed tables use zlib 1.2.11
2022-06-26T03:49:59.304570Z 0 [Note] InnoDB: Using Linux native AIO
2022-06-26T03:49:59.304746Z 0 [Note] InnoDB: Number of pools: 1
2022-06-26T03:49:59.304949Z 0 [Note] InnoDB: Using CPU crc32 instructions
2022-06-26T03:49:59.305972Z 0 [Note] InnoDB: Initializing buffer pool, total size = 128M, instances = 1, chunk size = 128M
......

Docker数据卷

为了实现数据持久化,使容器之间可以共享数据。可以将容器内的目录,挂载到宿主机上或其他容器内,实现同步和共享的操作。即使将容器删除,挂载到本地的数据卷也不会丢失。

数据卷的简介

  • 数据卷是宿主机中的一个目录或文件。
  • 当容器目录和数据卷目录绑定后,对方修改会立即同步。
  • 一个数据卷可以同时被多个容器同时挂载。
  • 一个容器也可以被挂载多个数据卷。

  • 容器数据持久化。
  • 外部机器和容器间接通信。
  • 容器之间数据交换。
  • 防止数据的误删和丢失。

数据卷的配置

docker run ... -v 宿主机目录:容器目录

注意事项:

①目录必须是绝对路径。

②如果目录不存在,则会自动创建。

③可以挂载多个数据卷。

我们能使用winSCP来拉去服务器上面的文件。

使用数据卷

docker run -it -v 主机目录:容器内目录

#测试
$ docker run -it -v /home/ceshi:/home centos /bin/bash

我们可以通过数据卷在容器中使用MySQL的脚本,这样能节约很多时间和精力。

后面我们能使用docker-compose更简便的启动数据卷哦。

DockerFile

Dockerfile就是用来构建docker镜像的构建文件!也就是命令脚本。

基础命令

FROM		#基础镜像,一切从这里开始构建
MAINTAINER	#镜像是谁写的,姓名+邮箱
RUN			#镜像构建的时候需要运行的命令
ADD			#步骤,tomcat镜像,这个tomcat的压缩包!添加内容
WORKDIR		#镜像的工作目录 
VOLUME		#挂载的目录
EXPOSE		#暴露端口配置
CMD			#指定这个容器启动的时候要运行的命令,只有最后一个会生效,可被替代
ENTRYPOINT	#指定这个容器启动的时候要运行的命令,可以追加命令
ONBUILD		#当构建一个被继承 Dockerfile 这个时候就会运行ONBUILD 的指令
COPY 		#类似ADD,将我们文件拷贝到镜像中
ENV			#构建的时候设置环境遍量

实战使用

我就拿我最近部署项目使用的一个DockerFile来给大家看一下哦。

FROM java:8
MAINTAINER xiaobao <xiaobao@qq.com>
ADD ./blog_api.jar /app.jar
CMD java -jar /app.jar --spring.profiles.active=prod                                                          

运行镜像docker build -f ./blog_dockerfile -t app .

运行后我们就会有相对应的镜像,我们可以通过docker ps 来查看。


结语

好了本次Docker介绍就到这里啦,我们下期compose见。

标签: s30nc15b电感式接近开关

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台