Docker/Linux常用命令

Docker入门

1.概述

        Docker是一个虚拟化的平台(官网为http://www.docker.com/),由Go语言实现.可通过虚拟化的方式,为应用提供可运行的容器.基于这种方式 可更快的打包.测试以及部署应用程序.

        现阶段,很多应用软件的安装都在向基于docker方式的安装进行实现。例如mysql,那么为什么不直接在操作系统中安装一个mysql,而是用容器呢?因为,安装MySql过程并不简单,要配置安装源,安装依赖包,对mysql进行配置…如果要在多台主机上安装,每台主机都要进行这些繁琐的操作,万一服务器挂了,这一系列操作还要再重来一遍,但有了docker,一个安装配置好的mysql容器,可以直接拿到另一台主机上启动,而不必重新安装mysql。另外,docker还有一重要的用处,就是可以保证开发,测试和生产环境的一致.

Docker的核心对象

镜像(Image)

        Docker 镜像是一个特殊的文件系统(https://hub.docker.com/),除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。例如JDK镜像、Centos镜像、MySQL镜像等,可以暂时先将其理解为一个安装程序。

容器(Container)

        Docker容器可以将其理解为一个运行镜像的载体,镜像(Image)和容器(Container)的关系,就像是光盘和光驱。容器基于镜像创建、启动,然后运行镜像的中的文件。

Docker架构图

Docker/Linux常用命令

  • Docker Host是我们的docker宿主机(就是安装了docker的操作系统)
  • Registry是docker拉取镜像的远程仓库,提供大量的镜像供下载,下载完成之后保存在Images中
  • Docker Daemon是docker的服务线程,处理Docker客户端命令。
  • Images 是Docker本地的镜像仓库,可以通过docker images查看镜像文件。

Docker服务的基本操作

 启动docker服务

systemctl start docker

查看docker状态

systemctl status docker

设置docker开机自启

systemctl enable docker

禁用docker开机自启

systemctl disable docker

重新启动docker服务

systemctl restart docker

查看docker信息

docker info

查看docker info 中具体key的信息

docker info | grep 'Docker Root Dir'

停止docker服务

systemctl stop docker

docker镜像加速

由于国内网络问题,需要配置加速器来加速。修改配置文件 /etc/docker/daemon.json

下面命令直接生成文件 daemon.json

cat <<EOF > /etc/docker/daemon.json
{
  "registry-mirrors": [
    "https://docker.mirrors.ustc.edu.cn",
    "http://hub-mirror.c.163.com"
  ],
  "max-concurrent-downloads": 10,
  "log-driver": "json-file",
  "log-level": "warn",
  "log-opts": {
    "max-size": "10m",
    "max-file": "3"
    },
  "data-root": "/var/lib/docker"
}
EOF
 

Docker镜像操作

1. 下载镜像 docker pull 镜像名 

2. 浏览镜像文件 docker images

3. 查看镜像详情 docker inspect 镜像名/ID

4. 查看历史镜像 (一个镜像是由多个层组成的 获取具体内容) docker history 镜像名

5. 导出镜像文件(Linux系统中的镜像文件下载到本地) docker save hello-word | gzip > hello-woed.tar.gz

6. 删除镜像文件 docker image rm 镜像名

7. 导入镜像操作(需要在镜像所在的文件下目录下执行) docker load < 镜像文件

8. 运行镜像文件 docker run 镜像名

Docker容器的常用操作

1. 先下载镜像Centos 目前使用是 7    docker pull centos:7        (官方的镜像地址为https://hub.docker.com/)

2. 查看镜像 docker images

3. 创建并启动容器 docker run -it xxx bash   (xxx为镜像名 或者images前三位  -it表示两个参数-i表示交互式操作,-t表示终端 bash表示进入操作终端,基于交互式进行相关操作) 

4. 通过docker启动运行centos7镜像          docker run -it centos:7 bash

5.查看docker中运行的容器           docker ps

6. 查看docker 运行中的所有容器         docker ps -a 

7.查看容器日志         docker container logs 容器id

8. 停止运行的容器         docker container stop 容器id

9. 重启容器         docker container restart 容器id

10. 进入指定容器        docker exec -it 容器id bash

11. 从容器中退出         exit

12. 删除容器         docker container rm 容器id

13.删除 运行中的容器        docker container rm -f 容器id

14. 清理所有终止状态的容器        docker container prune

Docker数据管理

一.数据卷        

        数据卷是一个可以提供一个或者多个容器使用的特殊目录, 可以在容器之间共享和重用 默认一直存在 即使容器被删除

二.数据卷常用操作

1. 创建数据卷        docker volume create container-vol

2. 查看所有的数据卷        docker volume ls

3. 查看指定数据卷的信息        docker volume inspect container-vol

4. 启动挂载数据卷的容器         docker run -it -v container-vol:/root centos:7 bash

5. 删除数据卷 (如果数据卷被容器使用则无法删除)        docker volume rm container-vol

6.清理无主数据卷        docker volume prune

三. 挂载主机目录

1. 在容器启动时 以目录直接挂载的方式进行数据操作         docker run -it -v /usr/app:/opt/app centos:7 bash

Docker/Linux常用命令

 2. 查看挂载目录信息        docker inspect 容器id

 Dcokerfile 镜像制作

镜像制作分析

Docker/Linux常用命令

 制作jdk镜像

  1. centos:7镜像 (所有的镜像文件创建时都需要有一个空的centos镜像,就类似通过一个空的光盘或u盘创建一个系统启动盘是一样的)
  2. jdk压缩包 jdk-8u51-linux-x64.tar.gz(可以从课前资料获取),基于此压缩包,制作jdk镜像。

Docker/Linux常用命令

 创建Dockerfile 文件

        创建每个新的镜像时都需要Dockerfile文件 需要跟导入的jdk放在同一目录

1. vim Dockerfile

FROM centos:7
ADD jdk-8u51-linux-x64.tar.gz /usr/local/docker
ENV JAVA_HOME=/usr/local/docker/jdk1.8.0_51 \
    PATH=/usr/local/docker/jdk1.8.0_51/bin:$PATH
CMD ['bash']

创建jdk镜像文件

1.docker build -t jdk:8 .     不要丢掉 .  -t表示镜像标识(镜像名) 是tag的缩写

基于jdk启动sentinel

1. 将sentinel复制到宿主机的目录 

2. 基于jdk:8 镜像启动运行sentinel服务

docker run -d -p 8180:8080 --name sentinel \
-v /root/servers:/usr/sca \
jdk:8 java -jar /usr/sca/sentinel-dashboard-1.8.0.jar

-d 表示后台运行  -p表示实现端口映射 (假如外部需要访问这个容器,必须要做端口映射)

-name 表示为启动的容器起一个名字

查看日志信息             docker container logs 容器id/容器名

3.访问sentinel需要通过宿主机访问 不可以直接访问 所以需要做端口映射

Docker/Linux常用命令

 制作sentinel镜像

        说明,通过docker images指令查看centos:7是否存在,然后将 jdk-8u51-linux-x64.tar.gz,sentinel-dashboard-1.8.0.jar放在/root/setup/sentinel目录(目录不存在的话自己创建)

在sentinel所在的目录下创建Dockerfile文件

FROM centos:7
ADD jdk-8u51-linux-x64.tar.gz  /usr/local/
ADD sentinel-dashboard-1.8.0.jar  /usr/local/
ENV JAVA_HOME=/usr/local/jdk1.8.0_51 \
    PATH=/usr/local/jdk1.8.0_51/bin:$PATH
EXPOSE 8080
ENTRYPOINT ["java","-jar","/usr/local/sentinel-dashboard-1.8.0.jar"]

 

在Dockerfile文件所在的目录执行        docker build -t sentinel:8 .

后台运行sentinel         docker run -d --name sentinel8181 -p 8181:8080 sentinel:8

上一篇:sentinel 流量卫兵简单使用


下一篇:Redis三种集群模式介绍