docker学习0421

一、docker是什么?

  • 概念     

Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。

Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。

容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。

  • Docker 架构

从架构图可看,一个完整的Docker有以下几个部分组成:

1.DockerClient客户端

     Docker命令行工具

2.Docker Daemon守护进程

     Docker守护进程(docker daemon)是运行在你的操作系统上的一个服务。目前,它只能运行在Linux上,因为它依赖于一些Linux内核特性(比如Cgroup与Namespace)。 但是,也有一些特殊的办法让Docker运行在MacOS与Windows上(运行在Linux虚拟机中)。
     Docker守护进程提供了REST API。许多工具(Docker命令行,Docker Compose等)都可以通过REST API与Docker守护进程进行交互,例如创建容器,构建镜像等。

3.Docker Image镜像

    镜像相当于是一个 root 文件系统。比如官方镜像 ubuntu:16.04 就包含了完整的一套root 文件系统。

4.DockerContainer容器

    镜像和容器的关系,就像是java中的类和对象一样
        镜像(类)是静态的定义
        容器(实例化电源线)是镜像运行时的实体。
    容器可以被创建、启动、停止、删除、暂停等。

  • docker容器虚拟化 与 传统虚拟机比较

 

二、docker怎么安装?

2.1、yum 包更新到最新

yum update

2.2、安装需要的软件包

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

2.3、 设置yum源

yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

2.4、 安装docker

yum install -y docker-ce

2.5、 查看docker版本,验证是否验证成功

docker -v

2.6、配置镜像加速

  • 创建daemon.json

sudo mkdir -p /etc/docker
sudo vim /etc/docker/daemon.json
{
  "registry-mirrors": [
    "http://hub-mirror.c.163.com",
    "https://fsqbo5wy.mirror.aliyuncs.com",
    "https://registry.docker-cn.com"
  ]
}

  • 重新启动服务

sudo systemctl daemon-reload
sudo systemctl restart docker

 

 

三、docker有那些常用命令?

Docker的常用命令

docker version	#显示docker的版本信息
docker info	#显示docker的系统信息,包括镜像和容器的数量
docker --help	#docker帮助命令

镜像命令

docker images	查看所有本地主机上的镜像
docker search mysql	搜索镜像
docker pull mysql	下载镜像
docker pull mysql:5.7	指定版本下载
docker rmi -f ID/name	删除镜像
docker rmi -f 容器id	删除指定的镜像
docker rmi -f 镜像id 镜像id 镜像id 镜像id	删除多个镜像
docker rmi -f $(docker images -aq)	#删除全部镜像

容器命令

​ 说明:有了镜像才可以创建容器,liunx,下载一个centos来测试学习

docker pull centos

新建容器并启动

docker run [可选参数] image

#参数说明
--name="Name"	容器名字	tomcat01 tomcat02 tomcat03,用来区分容器
-d			    后台方式运行
-it				使用交互方式运行,进入容器查看内容
-p				制定容器的端口 -p	8080:8080
	-p	ip:主机端口:容器端口
	-p	主机端口:容器端口
	-p 容器端口
	容器端口
	
-p	随机指定端口

#测试,启动并进入容器
docker run -it centos /bin/bash

列出所有运行的容器

docker ps 命令
	-a	#列出当前正在运行的容器+带出历史运行中的容器
	-n=?	#显示最近创建的容器
	-q	#只显示容器的编号

删除容器

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

退出容器

exit	#直接容器停止并退出
ctrl + P + Q	#容器不停止退出

启动和停止容器的操作

docker start 容器id	#启动容器
docker restart 容器id	#重启容器
docker stop 容器id	#停止当前正在运行的容器
docker kill 容器id	#停止当前容器

常用其他命令

后台启动容器

命令 docker run -d 镜像名
docker run -d centos
#问题docker ps,发现centos停止了

#常见的坑,docker容器使用后台运行,就必须要有一个前台进程,docker发现没有应用,就会自动停止
#nginx,容器启动后,发现自己没有提供服务,就会立即停止,就没有程序了。

查看日志

docker logs -f -t --tail 容器

#显示日志
-tf	#显示日志
-tail number	#显示日志条数

docker logs -tf --tail 10 容器id

查看容器中的进程信息ps

docker top 容器id

查看镜像的元数据

#命令
docker inspect 容器id

进入当前正在运行的容器

#我们通常都是使用后台的方式运行的,需要进入容器,修改一些配置
#命令
#方法一:
	docker exec -it 容器id bashshell
	eg:docker exec -it 容器id /bin/bash
	ls
	ps -ef
#方法二:
	docker attach 容器id
	

docker exec	#进入容器后开启一个新的终端,可以在里面操作(常用)
docker attach	#进入容器正在执行的终端,不会启动新的进程

从容器内拷贝文件到主机上

docker cp 容器id:容器内路径	目的主机路径
	docker cp 容器id:/home/test.java /home

#拷贝是一个手动过程,未来我们使用 -v卷的技术,可以实现

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值