Docker入门到精通

1,Docker原理与执行命令  

 

Docker官网地址: docker.com

安装命令(博主很懒,自行百度吧!!!):

1, yum install -y yun-utils device-mapper-persistent | vm2

2, systemctl start docker    ## 启动docker

3, systemctl enable docker      ## 开机启动

4, docker version    ## 查看docker的版本

Docker基本命令:

1, docker pull 镜像名称<:tags>      ## 从远程仓库拉取镜像,无版本号时默认最新

2, docker run 镜像名称<:tags>      ## 启动docker, run包含了pull

3,docker build 构建

4, docker images        ## 查看本地的全部镜像

5, docker ps        ## 查看正则运行中的镜像,即docker实例

6, docker rm <-f> 容器id       ## 删除容器

7, docker rml <-f> 镜像名称:<tags>       ## 删除镜像

Docker命令升级:

1, docker run -p 8000:8080 tomcat<:tags>    ## 宿主机:8000 容器:8080

2, docker run -p 8000:8080 -d tomcat<:tags>

3, docker build -t 机构/镜像名<:tags> DockerFile目录     ## 根据文件构建docker镜像

4, docker run -d --name web 镜像名称    ## --name 容器赋予名称

5, docker inspect 容器ID  ## 查看容器的元数据,如容器ID

## link 链接到另外的容器,个人理解类似于hostname,可以ping通

6, docker run -d --name web --link database tomcat   ## 链接到容器名称为database容器

使用阿里云的镜像加速服务,提高镜像的下载速度.

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

2,Docker-compose快速部署Docker应用

宿主机&&端口映射

        Docker启动之后,类似与一台Linux服务器,页拥有自己的IP,如何与外部通信?比如启动tomcat之后,默认为8080端口,如何能访问到了,端口映射则解决这样的问题。

容器的生命周期

1, docker create 镜像名称[:tags]     ## 创建容器,根据镜像创建容器,注意创建的是容器

2, docker start 容器id      ## 运行容器

3, docker pause 容器id   ## 暂停容器,注意用docker ps -a 查看容器的状态

4, docker stop/kill 容器id      ## 停止容器

构建Dockerfile

## 以tomcat为基础构建

FROM tomcat:latest

## 拥有者

MAINTAINER XXOO.com

 ## 切换工作目录,不存在则创建

WORKDIR /usr/local/tomcat/webapps     

## docker-web:Dockerfile同级目录, ./docker-web复制到工作目录下,不存在则创建

## 将同级docker-web目录的内容复制到工作目录docker-web下

ADD docker-web ./docker-web

注释: 理解docker分层级临时镜像.

Dockerfile基础命令

1, FROM     尽量使用官方提供的Base image

  1. FROM centos    ## 制作基准镜像(基于centos:lastest)
  2. FROM scratch   ## 不依赖任何基准镜像base image
  3. FROM tomcat:tags

2, LABEL && MAINTAINER 说明信息

  1. MAINTAINER 机构名称
  2. LABEl version = "1.0"
  3. LABEL description = "描述信息"

3, WORKDIR 设置工作目录,尽量使用绝对路径

  1. WORKDIR /usr/local
  2. WORKDIR /usr/local/nerdir  ## 自动创建

4, ADD && COPY 复制文件

  1. ADD hello /   ## 复制到跟路径
  2. ADD test.tar.gz   ## 添加到根目录并解压
  3. ADD 除了复制,还具备添加远程文件的功能

5, ENV 设置环境常量

  1. ENV JAVA_HOME /usr/local/openjdk8
  2. RUN ${JAVA_HOME}/bin/java -jar test.jar
  3. 尽量使用环境常量,提高程序的维护性

6, RUN 容器构建时运行,建议采用Exec的方式

  1. RUN yum install -y vim     ## Shell 命令格式
  2. RUN ["yum","install","-y","vim"]     ## Exec命令格式

7, ENTRYPOINT启动命令,容器启动时执行的命令

  1. ENTRYPOINT(入口点)用于在容器启动时执行的命令
  2. Dockerfile中只有最后一个ENTRYPOINT会被执行
  3. ENTRYPOINT ["ps"]  ## 推荐使用Exec格式

8,CMD 默认命令.   ENTRYPOINT 和 CMD可组合使用

  1. CMD用于设置默认执行的命令
  2. 如Dockerfile中出现多个CMD,则只有最后一个被执行
  3. 如容器启动时附加指令,则CMD被忽略
  4. CMD ["ps","-ef"]   ## 推荐使用Exec的格式

9, EXPOSE

创建Dockerfile文件如下:

FROM centos
RUN ["echo","image building"]
CMD ["echo","container starting"]


构建: 末尾的.指定Dockerfile的位置
docker build -t hello.com/centos:1.0 .

总结: Dockerfile中ENTRYPOINT命令一定会被执行,而CMD不一定会被执行,
当启动容器时附加的命令会覆盖Dockerfile文件中的CMD命令. 也就是内部执行最后一条命令,但是
外部如果存在,则会覆盖内部的的命令。

源文件构建-redis 注意: /bin/bash目录

Shell和Exec方式区别

3,容器间单向通信

[root@localhost ~]# docker network create -d bridge my-bridge
07a7a182d22cb96df0aa237219b70036c8e69d74e66de535a634efa790ac0f49
[root@localhost ~]# docker network ls
NETWORK ID     NAME        DRIVER    SCOPE
b63e770ed0e6   bridge      bridge    local
c89642d26a66   host        host      local
07a7a182d22c   my-bridge   bridge    local
75834e8c0240   none        null      local

docker network connect 网络名称(如上图中my-bridge) 容器名称

容器间共享数据,通过volume挂载的方式:

-v 主机目录:容器目录

1, 每个容器都与主机挂载

2, 创建一个容器,用于挂载

Docker compose(单机)/Docker swarm(集群)/K8S(集群)

4,Kubernetes的安装与使用

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值