美文网首页云原生
四 必备Docker知识

四 必备Docker知识

作者: 負笈在线 | 来源:发表于2022-04-28 15:25 被阅读0次

(一) Docker基础知识

https://hub.docker.com/

Docker:它是一个开源的软件项目,在Linux操作系统上,docker提供了一个额外的软件抽象层及操作系统层虚拟化的自动管理机制。

物理机环境部署应用过程:

a.安装系统
b.依赖环境
c.Java – jdk jre
d.NodeJS – Node
e.PHP – PHP
f.应用程序
g.加一个物理机—> 提高并发量

虚拟机环境部署应用过程:
KVM Xen

a.把一个物理机虚拟机虚拟成多个机器
b.把依赖环境打成一个系统的模板

容器化环境部署应用过程:
Docker

a.镜像基础
b.依赖环境的镜像
c.Java – Java基础的基础镜像
d.PHP – PHP基础的基础镜像
e.根据基础镜像 – 放入自己的代码或者包
f.生产一个新镜像
g.程序镜像
h.镜像 – 按层存储
i. 启动时间特别,秒级启动
A – Java  JDK1.8
a.jar
B – Java -> JDK1.8
b.jar

容器:把自己的应用程序,根据某个依赖的基础镜像,生成一个应用程序镜像

应用程序镜像,可以运行在任何部署了Docker环境的机器上。

(二) Docker基本命令

查看Docker版本

# docker version
Client: Docker Engine - Community
 Version:           19.03.4
 API version:       1.40
 Go version:        go1.12.10
 Git commit:        9013bf583a
 Built:             Fri Oct 18 15:52:22 2019
 OS/Arch:           linux/amd64
 Experimental:      false

Server: Docker Engine - Community
 Engine:
  Version:          19.03.4
  API version:      1.40 (minimum version 1.12)
  Go version:       go1.12.10
  Git commit:       9013bf583a
  Built:            Fri Oct 18 15:50:54 2019
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.2.6
  GitCommit:        894b81a4b802e4eb2a91d1ce216b8817763c29fb
 runc:
  Version:          1.0.0-rc8
  GitCommit:        425e105d5a03fabd737a126ad93d62a9eeede87f
 docker-init:
  Version:          0.18.0
  GitCommit:        fec3683

Docker详细信息

# docker info

Client:
 Debug Mode: false

Server:
 Containers: 8
  Running: 4
  Paused: 0
  Stopped: 4
 Images: 8
 Server Version: 19.03.4
 Storage Driver: overlay2
    # aufs、overlay brtfs
  Backing Filesystem: xfs
  Supports d_type: true
  Native Overlay Diff: true
 Logging Driver: json-file
# json-file: 存在本地
 Cgroup Driver: cgroupfs
 Plugins:
  Volume: local
  Network: bridge host ipvlan macvlan null overlay
  Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
 Swarm: inactive
 Runtimes: runc
 Default Runtime: runc
 Init Binary: docker-init
 containerd version: 894b81a4b802e4eb2a91d1ce216b8817763c29fb
 runc version: 425e105d5a03fabd737a126ad93d62a9eeede87f
 init version: fec3683
 Security Options:
  seccomp
   Profile: default
 Kernel Version: 4.18.0-80.el8.x86_64
 Operating System: CentOS Linux 8 (Core)
 OSType: linux
 Architecture: x86_64
 CPUs: 2
 Total Memory: 1.764GiB
 Name: k8s-master01
 ID: PRWL:PVRE:U7JQ:LNM6:SNLN:4QDV:URQA:MWQF:XXCE:VOT3:53GL:ECC6
 Docker Root Dir: /var/lib/docker
# 可以更改的,ssd的硬盘。最后使用一个单独的磁盘进行挂载
 Debug Mode: false
 Registry: https://index.docker.io/v1/
 Labels:
 Experimental: false
 Insecure Registries:
  127.0.0.0/8
 Live Restore Enabled: false
#生产环境一定要True

搜索镜像:

# docker search centos
NAME                               DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
centos                             The official build of CentOS.                   6054                [OK]                
ansible/centos7-ansible            Ansible on Centos7                              130                                     [OK]
consol/centos-xfce-vnc             Centos container with "headless" VNC session…   116                                     [OK]
jdeathe/centos-ssh                 OpenSSH / Supervisor / EPEL/IUS/SCL Repos - …   114                                     [OK]
centos/systemd                     systemd enabled base container.                 84                                      [OK]
centos/mysql-57-centos7            MySQL 5.7 SQL database server                   77                                      
imagine10255/centos6-lnmp-php56    centos6-lnmp-php56                              58                                      [OK]
tutum/centos                       Simple CentOS docker image with SSH access      47                                      
centos/postgresql-96-centos7       PostgreSQL is an advanced Object-Relational …   45                                      
kinogmt/centos-ssh                 CentOS with SSH                                 29                                      [OK]
pivotaldata/centos-gpdb-dev        CentOS image for GPDB development. Tag names…   12                                      
guyton/centos6                     From official centos6 container with full up…   10                                      [OK]
drecom/centos-ruby                 centos ruby                                     6                                       [OK]
centos/tools                       Docker image that has systems administration…   6                                       [OK]
pivotaldata/centos                 Base centos, freshened up a little with a Do…   4                                       
pivotaldata/centos-gcc-toolchain   CentOS with a toolchain, but unaffiliated wi…   3                                       
pivotaldata/centos-mingw           Using the mingw toolchain to cross-compile t…   3                                       
darksheer/centos                   Base Centos Image -- Updated hourly             3                                       [OK]
miko2u/centos6                     CentOS6 日本語環境                                   2                                       [OK]
blacklabelops/centos               CentOS Base Image! Built and Updates Daily!     1                                       [OK]
mcnaughton/centos-base             centos base image                               1                                       [OK]
indigo/centos-maven                Vanilla CentOS 7 with Oracle Java Developmen…   1                                       [OK]
pivotaldata/centos6.8-dev          CentosOS 6.8 image for GPDB development         0                                       
smartentry/centos                  centos with smartentry                          0                                       [OK]
pivotaldata/centos7-dev            CentosOS 7 image for GPDB development           0                                       
# docker search nginx
NAME                               DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
nginx                              Official build of Nginx.                        13358               [OK]

Docker拉取镜像:
拉取一个镜像到本地:

# docker pull alpine:latest
latest: Pulling from library/alpine
df20fa9351a1: Already exists
Digest: sha256:185518070891758909c9f839cf4ca393ee977ac378609f700f60a771a2dfe321
Status: Downloaded newer image for alpine:latest
docker.io/library/alpine:latest

提交一个镜像到仓库:

# docker login
# docker tag calico/pod2daemon-flexvol:v3.11.1 dotbalo/pod2daemon-flexvol:v3.11.1
# docker push dotbalo/pod2daemon-flexvol:v3.11.1

Docker run:启动一个镜像
--前台启动

 # docker run -ti centos:8 bash
 [root@55eb31fec62e /]# whoami
 root

-- 后台启动

# docker run -d centos:8 bash
# docker ps -a

查看容器日志:

# docker logs -l docker-ID
# cd /var/lib/docker/containers/

查看正在运行的容器

# docker ps
# docker ps -a
# docker ps -q

进入容器

# docker exec -ti docker-ID sh/bash
# kubectl exec -ti pod-id – sh/bash

拷贝文件

# docker cp docker-ID:/var/log/testfile ./
# docker cp ./testfile docker-ID:/var/log/

删除容器

# docker rm docker-ID
# docker rm ‘docker ps -aq’

删除镜像

# docker rmi

查看镜像

# docker image

启动/停止容器

# docker start/stop

创新镜像

# docker build

查看历史

# docker history

提交变更的镜像

# docker commit

(三) Dockerfile语法基础

FROM:继承基础镜像
MAINTAINER:镜像制作作者信息
RUN:用来执行shell命令
EXPOSE:暴露端口号
CMD:启动容器默认的命令
ENTRYPIOINT:启动容器真正执行的命令
VOLUME:创建挂载点
ENV:配置环境变量
ADD:复制文件到容器
COPY:复制文件到容器
WORKDIR:设置容器的工作目录
USER:容器使用的用户
CMD和ENTRYPIOINT 必须要有一个
CMD可以被覆盖,如果有ENTRYPIOINT的话,CMD就是ENTRYPIOINT的参数。
ENTRYPIOINT – 》 COMMAND
CMD –》 arg
例1:

LABEL maintainer="test dockerfile"
LABEL test=dockerfile
RUN useradd dot
RUN mkdir /opt/dot
CMD [ "sh", "-c", "echo 1"]
#RUN useradd dot && /opt/dot

例2:

FROM centos:8
LABEL maintainer="test dockerfile"
LABEL test=dockerfile
ENV test_env1 env1
ENV test_env2 env2
RUN useradd dot
RUN mkdir /opt/dot
#ENTRYPOINT ["echo"]
ENV env1=test1 env2=test2
ADD ./index.tar.gz /opt/
COPY ./index.tar.gz /opt/dot/
WORKDIR /opt/dot
USER 1000
CMD pwd ; ls
#RUN useradd dot && /opt/dot

(四) 制作Docker镜像及多阶段制作镜像

制作小镜像:
一定不要使用centos镜像
Alpine,busybox,scratch,Debian
Glibc: node:slim python:slim net
使用多阶段构建:
编译操作和生成最终镜像的操作

# build step
FROM golang:1.14.4-alpine as builder
WORKDIR /opt

COPY main.go /opt

RUN go build /opt/main.go 

CMD "./main"

# create real app image

FROM alpine:3.8

COPY --from=builder /opt/main /

CMD "./opt/main"

FROM php:7.1.22-fpm-alpine

RUN apk add --no-cache binutils freetype libpng libjpeg-turbo freetype-dev libpng-dev libjpeg-turbo-dev libc6-compat libxml2 libxml2-dev libmcrypt libmcrypt-dev     libc-dev   icu-dev gettext-dev  openssl-dev bzip2-dev

RUN docker-php-ext-install pdo pdo_mysql mcrypt zip gd pcntl opcache bcmath 
#RUN docker-php-ext-install gettext 
RUN docker-php-ext-install mysqli 
#RUN apk add --no-cache php7-sysvsem php7-pdo_dblib  php7-sockets php-soap php7-xmlrpc
##RUN apk add --no-cache php7-sysvsem php7-pdo_dblib  php7-sockets php-soap php7-xmlrpc
##RUN apk add --no-cache freetds-dev
##RUN docker-php-ext-install pdo_dblib 
#RUN docker-php-ext-install soap 
#RUN docker-php-ext-install sockets
#RUN docker-php-ext-install sysvsem 
#RUN docker-php-ext-install xmlrpc
#RUN apk add --no-cache freetds-dev
#RUN docker-php-ext-install pdo_dblib
#RUN docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/
#RUN docker-php-ext-install -j$(nproc) gd
#FROM php:7.1.22-fpm-alpine

#COPY --from=0 /usr/local/lib/php/extensions/no-debug-non-zts-20160303 /usr/local/lib/php/extensions/no-debug-non-zts-20160303

#RUN apk add --no-cache freetds-dev php7-sysvsem php7-pdo_dblib  php7-sockets php-soap php7-xmlrpc binutils freetype libpng libjpeg-turbo freetype-dev libpng-dev libjpeg-turbo-dev libc6-compat libxml2 libxml2-dev libmcrypt libmcrypt-dev     libc-dev   icu-dev gettext-dev  openssl-dev bzip2-dev && cd /usr/local/lib/php/extensions/no-debug-non-zts-20160303 && docker-php-ext-enable *.so  && rm -rf /var/cache/apk/*

相关文章

  • 四 必备Docker知识

    (一) Docker基础知识 https://hub.docker.com/[https://hub.docker...

  • Linux环境安装docker

    docker基本上是进阶程序员的必备知识点,本文安装参考了docker官方网站----->docker安装教程[h...

  • 【Docker系列】:全面认识Docker和基本指令

    Docker逐渐成为虚拟化技术的佼佼者,Docker技术也是架构师的必备技能。 什么是Docker Docker ...

  • docker 使用详解

    Docker入门(程序员和运维必备) 首先来简单说下什么是Docker Docker 是一个开源的应用容器引擎,让...

  • Docker学习(四)-其他知识

    上篇文章中我简单介绍了如何使用Docker三剑客的知识,这篇文章我将简单介绍下Docker涉及的一些其他知识,包括...

  • 学习资料推荐——docker

    带你快速掌握 Docker 这项新时代开发者必备的工具 掘金小册——docker实践指南 新人5折哦!

  • Docker

    # Docker java进阶/docker 学习目标: 掌握Docker基础知识,能够理解Docker镜像与容器...

  • Docker网络——单host网络

    前言 前面总结了Docker基础以及Docker存储相关知识,今天来总结一下Docker单主机网络的相关知识。毋庸...

  • PRISMA开发环境准备

    本文属使用Prisma构建GraphQL服务系列。 必备环境 docker nodejs 安装PRISMA 注意,...

  • docker 入门

    Docker 学习目标: 掌握Docker基础知识,能够理解Docker镜像与容器的概念 完成Docker安装与启...

网友评论

    本文标题:四 必备Docker知识

    本文链接:https://www.haomeiwen.com/subject/jfldyrtx.html