docker(观狂神说后总结,未完结)

目录

 

一、docker的概述

docker的作用

1.应用更快速的交付和部署

2.更快捷的升级和扩容

3.更简单的系统运维

4.更高效的计算资源利用

为什么出现

docker的组成

镜像(image):

容器(container):

仓库(repository)

底层原理

二、docker的安装

安装

三、docker的常用命令

帮助命令

镜像命令

容器命令

其他常用命令

四、docker实战

五、docker的镜像

六、数据卷挂载与数据卷容器的使用

1.普通挂载

2.多个容器(docker容器)数据同步

七、DockFile(打包成镜像)

0.基础与介绍

1.构建步骤

2.配置文件语言语法:DockerFile的指令

 

3.执行生成镜像的命令

4.发布镜像

示例:Tomcat镜像


一、docker的概述

docker的作用

1.应用更快速的交付和部署

传统:一堆帮助文档,安装程序

Docker : 打包镜像发布测试,一键运行

2.更快捷的升级和扩容

使用了Docker之后,我们部署应用就和搭积木一样!

项目打包为一个镜像

3.更简单的系统运维

在容器化之后,我们的开发,测试环境都是高度一致的

4.更高效的计算资源利用

Docker是内核级别的虚拟化,可以在一个物理机上运行很多的容器实例,服务器的性能可以被压榨到极致。

为什么出现

虚拟机技术拥有很多缺点,导致了容器化技术的出现:

     资源占用十分多

     冗余步骤多

     启动很慢

docker的历史

。。。。

docker的组成

镜像(image):

docker镜像就好比是一个模板,可以通过这个模板来创建容器服务,通过这个镜像可以创建多个容器(最终运行或者项目运行都是在容器中的)。

容器(container):

Docker利用容器技术,独立运行一个或者一组应用,是通过镜像来创建的,有启动,停止,删除等Linux基本指令!目前就可以把这个容器理解为一个简易的Linux系统。

仓库(repository)

仓库就是存放镜像的地方,分为私有仓库和公有仓库;Docker Hub(默认是国外的)阿里云…都有容器服务器(配置镜像加速!)

底层原理

 

二、docker的安装

安装

1.环境查看:linux的内核要是3.10以上的版本

[root@LinuxRoot ~]#  cat /etc/os-release
NAME="CentOS Linux"
VERSION="8 (Core)"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="8"
PLATFORM_ID="platform:el8"
PRETTY_NAME="CentOS Linux 8 (Core)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:centos:centos:8"
HOME_URL="https://www.centos.org/"
BUG_REPORT_URL="https://bugs.centos.org/"

CENTOS_MANTISBT_PROJECT="CentOS-8"
CENTOS_MANTISBT_PROJECT_VERSION="8"
REDHAT_SUPPORT_PRODUCT="centos"
REDHAT_SUPPORT_PRODUCT_VERSION="8"

2.安装:

可以直接参考官方文档,十分详细:https://docs.docker.com/engine/install/centos/

# 1、卸载旧的版本
sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine
                  
# 2、需要的安装包
sudo yum install -y yum-utils

# 3、设置镜像的仓库(设置阿里云镜像,这里会比较快)
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

# 更新yum软件包索引
yum makecache fast

# 4、安装docker相关的源 docker-ce 社区 ee 企业版
yum install docker-ce docker-ce-cli containerd.io

# 5、启动docker
systemctl start docker

# 6、使用docker version 查看是否安装成功

# 7、docker run hello-world

# 8、查看下载的这个 hello-world 镜像

[root@LinuxRoot ~]# docker images
REPOSITORY            TAG       IMAGE ID       CREATED        SIZE
hello-world           latest    d1165f221234   8 days ago     13.3kB

镜像加速器

登录阿里云,就可以根据版本运行相应的命令

帮助文档

卸载

三、docker的常用命令

帮助命令

docker version # 显示docker的版本信息

docker info # 显示docker的系统信息,包括镜像和容器的数量

docker 命令 --help # 帮助命令

镜像命令

查看所有本地主机上的镜像

docker images  [选项] 

可选项

     -a, --all # 列出所有的镜像

     -q, --quiet # 只显示镜像的id

解释

REPOSITORY 镜像的仓库源

TAG 镜像的标签

IMAGE ID 镜像的id

CREATED 镜像的创建时间

[root@LinuxRoot ~]# docker images
REPOSITORY            TAG       IMAGE ID       CREATED        SIZE
hello-world           latest    d1165f221234   8 days ago     13.3kB
nginx                 latest    f6d0b4767a6c   2 months ago   133MB
centos                latest    300e315adb2f   3 months ago   209MB
portainer/portainer   latest    62771b0b9b09   7 months ago   79.1MB

 

搜索镜像

docker search 镜像名称   [选项]

-f,-filter:过滤筛选

 

下载镜像

docker pull 镜像名称:版本号

# 下载镜像 docker pull 镜像名[:tag]
[root@AlibabaECS ~]# docker pull mysql
Using default tag: latest # 如果不写tag,默认就是latest
latest: Pulling from library/mysql 
bf5952930446: Pull complete # 分层下载,docker image的核心 联合文件系统
8254623a9871: Pull complete 
938e3e06dac4: Pull complete 
ea28ebf28884: Pull complete 
f3cef38785c2: Pull complete 
894f9792565a: Pull complete 
1d8a57523420: Pull complete 
6c676912929f: Pull complete 
ff39fdb566b4: Pull complete 
fff872988aba: Pull complete 
4d34e365ae68: Pull complete 
7886ee20621e: Pull complete 
Digest: sha256:c358e72e100ab493a0304bda35e6f239db2ec8c9bb836d8a427ac34307d074ed # 签名
Status: Downloaded newer image for mysql:latest
docker.io/library/mysql:latest # 真实地址

# 两条命令等价
docker pull mysql
docker.io/library/mysql:latest

# 指定版本下载
docker pull mysql:5.7

[root@AlibabaECS ~]# docker pull mysql:5.7
5.7: Pulling from library/mysql
bf5952930446: Already exists 
8254623a9871: Already exists 
938e3e06dac4: Already exists 
ea28ebf28884: Already exists 
f3cef38785c2: Already exists 
894f9792565a: Already exists 
1d8a57523420: Already exists 
5f09bf1d31c1: Pull complete 
1b6ff254abe7: Pull complete 
74310a0bf42d: Pull complete 
d398726627fd: Pull complete 
Digest: sha256:da58f943b94721d46e87d5de208dc07302a8b13e638cd1d24285d222376d6d84
Status: Downloaded newer image for mysql:5.7
docker.io/library/mysql:5.7

删除镜像

docker rmi 镜像名称

[root@AlibabaECS ~]# docker rmi -f 容器id                # 删除指定的容器
[root@AlibabaECS ~]# docker rmi -f  容器id 容器id 容器id  # 删除多个容器
[root@AlibabaECS ~]# docker rmi -f $(docker images -aq) # 删除全部容器

容器命令

新建容器并启动

docker run [可选参数] image

参数说明’

--name = "Name"    容器名字  tomcat01,tomcat02,用来区分容器

-d                 后台方式运行

-it                使用交互方式运行,进入容器查看区分

-p                 指定容器的端口 -p 8080:8080
                             -p ip:主机端口:容器端口
                            -p 主机端口:容器端口(常用)
                            -p 容器端口
                             容器端口
       -P                 随机指定端口
 

测试,启动并进入容器
[root@AlibabaECS bin]# docker run -it centos /bin/bash
[root@94d468db18da /]# ls  # 查看容器内的centos,基础版本,很多命令都是不完善的!
bin  etc   lib    lost+found  mnt  proc  run   srv  tmp  var
dev  home  lib64  media       opt  root  sbin  sys  usr

从容器中退回主机

 exit                       # 直接容器停止并退出

Ctrl + P + Q            # 容器不停止退出

列出所有的运行的容器

docker ps [选项] 

# 列出当前正在运行的容器 -a

# 列出当前正在运行的容器+带出历史运行过的容器 -n=?

# 显示最近创建的容器 -q # 只显示容器的编号

删除容器

docker rm 容器id                  # 删除指定容器,不能删除正在运行的容器,如果要强制删除 rm -f
docker rm -f $(docker ps -aq)    # 删除所有的容器
docker ps -aq|xargs docker rm    # 删除所有的容器

启动和停止容器的操作

docker start 容器id # 启动容器

docker restart 容器id # 重启容器

docker stop 容器id # 停止当前正在运行的容器

docker kill 容器id # 强制停止当前容器

其他常用命令

1.查看镜像源数据

docker inspect   容器id

2.查看日志

docker logs -f -t --tail   容器id

3.查看容器中的进程信息ps

docker top 容器id

4.进入当前正在运行的容器

法一:进入容器后开启一个新的终端,可以在里面操作(常用)

docker exec -it  容器id /bin/bash

法二:进入容器正在执行的终端,不会启动新的进程

docker attach 容器id

5.从容器内拷贝到主机上

docker cp [r] 容器id :容器内路径 目的地主机路径

参数r : 递归拷贝

 

四、docker实战

nigix

tomcat

es+kibana

五、docker的镜像

镜像是什么

六、数据卷挂载与数据卷容器的使用

1.普通挂载

 

 

2.多个容器(docker容器)数据同步

 

 

 

七、DockFile(打包成镜像)

0.基础与介绍

 

1.构建步骤

  1. 编写一个dockerfile文件
  2. docker build 构建称为一个镜像
  3. docker run运行镜像
  4. docker push发布镜像(DockerHub 、阿里云仓库)

2.配置文件语言语法:DockerFile的指令

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

 

3.执行生成镜像的命令

 

4.发布镜像

 

 

Dockerfile 就是用来构建 docker 镜像的构建文件!

# 创建一个dockerfile文件,名字可以随便 建议Dockerfile
# 文件中的内容 指令(大写) 参数
FROM centos

VOLUME ["volume01","volume02"]

CMD echo "----end----"
CMD /bin/bash
#这里的每个命令,就是镜像的一层!

 

示例:Tomcat镜像

部署自己的tomcat服务器,

1.准备镜像文件 tomcat压缩包,jdk压缩包

2.创建DockerFile文件,文件名称为Dockerfile,这样可以省略-f 命令,默认是当前目录的文件名为"Dockerfile"的文件

内容如下:

FROM centos #
MAINTAINER cheng<1204598429@qq.com>
COPY README /usr/local/README #复制文件
ADD jdk-8u231-linux-x64.tar.gz /usr/local/ #复制解压
ADD apache-tomcat-9.0.35.tar.gz /usr/local/ #复制解压
RUN yum -y install vim
ENV MYPATH /usr/local #设置环境变量
WORKDIR $MYPATH #设置工作目录
ENV JAVA_HOME /usr/local/jdk1.8.0_231 #设置环境变量
ENV CATALINA_HOME /usr/local/apache-tomcat-9.0.35 #设置环境变量
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib #设置环境变量 分隔符是:
EXPOSE 8080 #设置暴露的端口
CMD /usr/local/apache-tomcat-9.0.35/bin/startup.sh && tail -F /usr/local/apache-tomcat-9.0.35/logs/catalina.out # 设置默认命令
 

3.构建镜像

# 因为dockerfile命名使用默认命名 因此不用使用-f 指定文件 ,注意最后的那个点

docker build -t diytomcat .

4.启动镜像

-d 后台运行

-p 指定容器端口和内部暴露端口

--name 取镜像名称

-v 数据挂载

docker run -d -p 9090:8080 --name kuangshentomcat -v /home/deng/build/tomcat/test:/url/local/apache-tomcat-9.0.37/webapps/test -v /home/deng/build/tomcat/tomcatlogs/:/usr/local/apache-tomcat-9.0.37/logs diytomcat

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值