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 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

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

 Dcokerfile 镜像制作

镜像制作分析

 制作jdk镜像

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

 创建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需要通过宿主机访问 不可以直接访问 所以需要做端口映射

在这里插入图片描述

 制作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

Liunx常用命令

检查IP 地址        ifconfig/ip addr  

1.CD

查看当前位置        pwd

返回根目录         cd /

返回用户注目录        cd ~

当前目录         cd .

返回上级目录        cd ..

进入usr目录        cd /usr/

返回上一个目录        cd -

直接回家        cd

2.LS目录和文件

ls -l        详细格式,文件权限,时间

ll           同 ls -l

ls *.txt         查看所有.txt类型的文档

3.目录操作

mkdir         创建目录

mkdir a        创建a目录

mkdir -p a/b        创建a目录 并在a目录里创建b目录

mkdir -m 777 c         创建一个权限为777的C目录

rmdir         删除目录(如果目录里有文件,则不能使用这个命令)

4. vi/vim 创建/查看/编辑文件

编辑模式:

        i         在光标前开始编辑

        a        在光标后开始编辑

        o        在当前行的下一行开始编辑

        u        撤销之前的操作

底行模式:

        :q!         不保存退出

        :wq        保存退出

        :/world        从当前光标处,向上查找world关键字

        :?world        从当前光标处 向后查找world 关键字

5.删除文件

        rm        删除文件

        rm n.txt

        rm -f n.txt         不提示删除

        rm -rf dirname        不提示递归删除目录下所有内容

        rm -rf *         删除所有文件

        rm -rf /*        删除所有子目录所有的文件

6. 复制和移动文件

        cp         复制文件

        cp nginx.conf n.txt

        cp -R tomcat1 tomcat2        复制整个目录

        mv         修改文件名,移动文件

        mv n.txt m.txt         修改文件名称

7. 浏览文件

        cat         输出文件所有的内容

        more        输出文档所有内容 分页输出 空格浏览下一页 q 退出

  

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值