Docker

Docker

概述

以下来自大佬的解释
Docker(基于go语言)从狭义上来讲就是一个进程,从广义上来讲是一个虚拟容器,其实更专业的叫法是应用容器( Application Container ),Docker进程和普通的进程没有任何区别,它就是一个普通的应用进程。不过是用来操作镜像文件的。所以Docker进程+构建的应用镜像文件就等于Docker容器。
【镜像Docker images】:可以理解为一个文件夹

Linux的基本语法

一.配置环境并安装Docker

1.查看操作系统的版本(使用centos)

uname -a查看?
uname -r查看系统内核
cat /etc/os-release查看系统版本

  

2.卸载旧版本的Docker

 yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

3.下载并安装必要的系统工具

yum install -y yum-utils device-mapper-persistent-data lvm2

4.配置阿里云的镜像仓库(国外太慢)

#默认是国外的仓库https://download.docker.com/linux/centos/docker-ce.repo

yum-config-manager \
    --add-repo \
    http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

5.更新软件包的索引

yum makecache fast

6.安装Docker社区版(docker-ce)

docker-ce是社区版 || docker-ee是企业版的

 yum install docker-ce docker-ce-cli containerd.io

7.启动Docker并查看版本

systemctl start docker
docker version

8.运行hello-world测试

docker run hello-world

  

9.查看hello-world镜像是否存在

docker images

  

10.给阿里云镜像加速(非必要)

  
  

11.卸载docker(非必要)

1.卸载依赖 2.删除docker运行环境

 yum remove docker-ce docker-ce-cli containerd.io
rm -rf /var/lib/docker

二.Docker的run的运行原理

图片来自https://www.jianshu.com/p/07fe9f88d056
  

三.Docker的工作原理

。。。

Docker为什么比虚拟机快?
1.Docker有着更少的抽象层
2.Docker 是使用宿主的操作系统,直接运行在宿主的内核(没有自己的内核),但有自己的文件系统,且每个Docker的文件系统都相互隔离。
而虚拟机是重新导入一个操作系统

四.Docker的基本命令

【基本概念】
镜像与容器:镜像就是相当于是一个类,容器就相当于是类的实例

docker状态命令

1、docker的版本信息docker version
2、查看docker的状态systemctl status docker
3、启动dockersystemctl start docker
4、docker的系统信息,包括镜像和容器的数量docker info
5、查看docker相关的命令docker --help
  

4.1Docker的镜像命令

4.1.1查看命令内容(–help)

docker images --help:查看命令
  

4.1.2查看镜像(images)

docker images -a:查看所有的镜像
  
docker images -aq:查看所有的镜像id
  
docker history 镜像id:查看镜像的生成过程

4.1.2在docker hub中搜索可用镜像(search)

docker search:搜索镜像
  
docker search docker search mysql --filter=stars=3000
:条件搜索镜像
  

4.1.3下载镜像(pull)

docker pull mysql:不写版本默认是最高版
  
docker pull mysql:5.7:下载5.7版本的mysql
  

4.1.4删除或条件删除镜像(rmi)

docker rmi 2fe463762680:根据id删除镜像源(1.删除多个镜像可以通过空格来分离2.容器在运行时镜像是不能删除的)
  
docker rmi -f $(docker images -aq):复合语句,删除所有的镜像源
  
docker rmi -f $(docker images|grep hello |awk ‘{print $3}’)
-f使用强制删除,否则可能删除失败
docker images|grep hello是模糊查找所有存在hello的镜像
awk '{print $3}'输出第三个参数(即镜像id)
然后删除镜像名中含hello字段的镜像。
  

4.2 Docker的容器命令

4.2.1创建并启动一个新的容器(run)

docker run hello-world:会自动下载镜像并新建容器并启动(相当于pull+start)
  

【参数分析】:

1.docker run -d centos /bin/bash:以后台的方式启动容器(centos会1s后自动退出,nginx,tomcat不
  
2.docker run -it centos /bin/bash:启动并进入容器中
  
3.docker run -d --name nginx01 -p:3344:80 nginx从nginx镜像来以后台方式创建并运行一个名为nginx01的容器,且可以通过3344端口来访问容器的80端口。

4.2.2显示docker中的容器(ps)

  
注意当使用组合命令如-aq,-qs等需要考虑先后问题哦,如不能-fq,而要-qf。

docker ps:显示运行中的容器
docker ps -a:查看正在运行和运行过的容器
  
docker ps -n=3:查看正在运行和运行过的容器
  
docker ps -q:查看所有正在运行容器的id
  
docker ps -f status=exited查看所有停止运行的容器(f,filter)
  

4.2.3退出容器(exit)

exit:直接退出容器,返回主机
  
ctrl+p+q:直接返回主机(没有退出容器)
  

4.2.4删除容器(rm)

docker rm 容器id:根据id删除容器(若在运行则删除不了)
docker rm -f 容器id:根据id强制删除该容器
docker rm -f $(docker ps -aq):复合语句,删除所有容器

4.2.5启动或停止原有容器(start,restart和stop)

docker start 容器id:启动容器(不进入容器)
docker restart 容器id:重新启动容器
docker stop 容器id:停止容器
  
docker kill 容器id:强制停止容器

【常见问题1】为什么用-d启动centos容器之后会立马停掉,而用-it就不会
因为Docker容器后台运行,就必须有一个前台进程。容器运行的命令如果不是那些一直挂起的命令(比如运行top,ping),就是会自动退出的。所以我们在使用run启动centos容器时要用it,最好别用-d
【常见问题2】

4.2.6进入正在运行的容器

4.2.6.1进入容器的一个新终端(exec)

docker exec -it 8905d8db6989 /bin/bash:通过id(或容器名)进入容器后,开启一个新的终端
  

【常见问题1】为什么启动tomcat容器要用 /bin/bash .

4.2.6.2进入正在执行的终端(attach)

docker attach 8905d8db6989:进入容器的正在执行的终端(不开启新的终端)

4.2.7 修改容器名(rename)

docker rename oldname newname
  

4.2.8使用容器创建一个镜像(commit)

docker commit -a=“junjun” -m=“add junjun.txt” 47b3b330fbfc jtomcat:1.0
使用47b3b330fbfc容器来创建一个镜像jtomcat,版本是1.0
  

4.2.9 得知容器的系统环境

cat /etc/issue

4.2.10 复制容器内的文件夹到本地(如阿里云服务器)

docker container cp 87c9e21fd1a3:/t1 /其中87c9e21fd1a3是某容器的id。

4.3 Docker安装测试工具(非常重要)

  1. 在新建的容器中往往没有一些常用的测试工具,这需要我们自己下载安装。
      
  2. 直接安装是不行的,我们要先更新一下容器的apt-get指令才能安装我们需要的指令。
(1)更新apt-get

1.如果是完善centos容器的测试工具是用yum;如果是完善Ubuntu/debian,tomcat容器要使用apt-get指令。 我们可以通过cat /etc/issue来知道我们容器的类型
apt-get update
  

(2)安装你需要的指令

1.安装ifconfig,netstat指令: apt-get install net-tools
  

2.安装ping指令: apt-get install -y iputils-ping
  

3.安装ip指令: apt-get install iproute2
  

4.安装telnet指令 apt-get install telnet
  

5.安装ps指令 apt-get install -y procps
  
6.安装vim指令apt-get install vim

4.4 Docker常用其他的命令

4.4.1查看日志(logs)

docker logs -f -t --tail 10 8905d8db6989:查看最近10条日志(使用ctrl+c退出编辑)
  

4.4.2查看容器中的进程信息(top)

docker top 8905d8db6989:查看id为8905d8db6989的容器中的进程信息
  

4.4.3查看镜像中的元数据(inspect)

docker inspect 8905d8db6989:查看id为8905d8db6989的容器中的元数据
  

4.4.4容器与主机互相拷贝文件(docker cp)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值