Docker

Docker,第1张

Docker学习笔记(一) 一、基本命令

安装依赖

yum install -y yum-utils

设置阿里云镜像

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

使用yum makecache 生成索引缓存索引提供搜索安装速度

yum makecache fast

yum 会把下载的软件包和header存储在cache中而不自动删除。如果觉得占用磁盘空间,可以使用yum clean指令清除索引缓存和下载包的缓存。

yum clean all

安装docker

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

启动docker

systemctl start docker

查看版本

docker version

运行测试hello-world

docker run hello-world

d出"Hello from Docker!"则安装成功。

卸载docker

#卸载依赖
yum remove docker-ce-cli containerd.io
#删除资源目录(默认资源路径)
rm -rf /var/lib/docker

帮助命令

docker version 		#显示docker的基本信息
docker info    		#显示docker的系统信息,镜像容器数量
docker xxx --help	#帮助命令
二、镜像命令

查看所有本地主机上的镜像

[root@xxx ~]# docker images
REPOSITORY    TAG       IMAGE ID       CREATED        SIZE
hello-world   latest    feb5d9fea6a5   7 months ago   13.3kB

#注解
REPOSITORY	#镜像仓库源
TAG			#版本标签信息
IMAGE ID	#镜像ID
CREATED		#创建时间
SIZE		#镜像大小

#可选
-a		#列出所有镜像
-q		#只显示镜像ID

搜索镜像

[root@xxx ~]# docker search mysql

#可选(举例)
--filter=STARS=2000		#搜索出来的镜像STARS大于2000的

所有可选项可以通过# docker search --help 来获取

拉取镜像

[root@xxx ~]# docker pull mysql[:镜像名]

删除镜像

[root@xxx ~]# docker rmi -f [IMAGE ID]/[REPOSITORY] [IMAGE ID]...	#通过镜像ID或者名称来删
[root@xxx ~]# docker rmi -f $(docker images -aq)					#递归删除所有镜像
三、容器命令 创建一个CentOS容器
docker pull centos
新建容器并启动
docker run [可选参数] image

#参数
--name="xxx"		#容器名字,用来区分容器
-d					#后台方式运行
-it					#使用交互方式运行,进入容器查看内容
-p					#指定容器的端口 
		 使用方式:   1.+主机端口:容器端口(映射)
		 		    2.+容器端口
		 		    3.+ip:主机端口:容器端口
-P					#随机指定端口

#启动并进入容器
docker run -it centos /bin/bash		#启动进入CentOS
ls									#查看目录
exit								#退出容器
docker ps							#当前在运行的容器
docker ps 
			-a 						#已经运行过+当前运行的容器
			-n=1					#显示最近1个启动过的容器
			-q						#只显示容器的编号
ctrl+P+Q							#容器不停止退出容器
删除容器
docker rm 容器id					   #删除指定容器(无法删除运行的容器)
docker rm -f $(docker ps -aq)		#递归删除所有容器
docker ps -a -q|xargs docker rm		#删除所有容器
启动和停止容器
docker start 容器id
docker restart 容器id
docker stop	容器id
docker kill	容器id				   #强制停止容器
四、常用其他命令 后台启动容器
docker run -d centos

#坑:docker容器使用后台运行,就必须有一个前台进程,docker发现没有应用,就会自动停止
	如:安装了nginx,容器启动后发现自己没有提供服务,就会立刻自杀。
查看日志
docker logs [可选参数] 镜像id

例子:
docker logs -f -t --tail 	#容器,没有日志
#编写一段shell脚本(每一秒生成一串日志)
docker run -d centos /bin/sh -c "while true;do echo xxx;sleep 1 done"

#显示当前运行的镜像
docker ps

#显示10条日志
docker logs -tf --tail 10 [镜像id]
#参数解释
-t		显示日志
-f		带上时间戳
--tail	显示日志条数
查看容器中的进程信息
docker top 容器id
#说明
UID		当前用户id
PID		父id
PPID	进程id



#查看镜像元数据
docker ps -a	
选一个镜像id
docker inspect 镜像id
进入当前正在运行的容器
#通常容器都是在后台运行的,需要进入容器修改一些配置

#命令(这里以CentOS为例子)
#方式一
docker ps
docker exec -it 容器id /bin/bash	


#方式二
docker attach 容器id

#区别
exec 	进入容器后开启一个新终端,可以 *** 作
attach 	进入容器正在执行的终端,不会启动新终端 
从容器内拷贝文件到主机上
docker cp 容器id:/home/test.java /home	#从容器的home拷贝到主机的home目录
五、Docker是如何工作的

Docker是一个Client-Server结构的系统,Docker的守护进程运行在主机上,通过Socket从客户端访问
Docker-Server接收到Docker-Client的指令,就会执行这个命令!

Docker为什么比虚拟机快?

① Docker有着比虚拟机更少的抽象层

Docker容器提供了基于进程的隔离,而VM虚拟机提供了资源的完全隔离,由于Docker不需要Hypervisor实现硬件资源虚拟化,运行在Docker容器上的程序直接使用的都是实际物理机的硬件资源,因此在Cpu、内存利用率上Docker将会在效率上有明显优势。

② Docker利用的是宿主机的内核,VM需要Guest OS
所以说,新建一个容器的时候,Docker不需要像虚拟机一样重新加载一个 *** 作系统内核,避免引导,虚拟机是加载GuestOS,而Docker是利用宿主机的 *** 作系统的。省略了这个复杂的过程。

③ Docker的集成性比VM好。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/787530.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-05
下一篇2022-05-05

发表评论

登录后才能评论

评论列表(0条)

    保存