学习笔记 Docker

Docker学习视频

随看随记

  • 计算机网络趣解,我认为第二个写的很有意思,解释的也很到位。
  • 在创建容器的时候,最好加上–restart=always 表示如果docker重启以后 容器跟随docker直接重启
  • 常用的完整后台启动docker语句
docker run -d --restart=always --name=mytomcat -p 10003:8080 mytomcat:1.0
  • linux中不同文件夹的存放的文件分类

/bin: 可执行文件, 用户命令
/boot: 系统启动相关的文件,如内核、initrd,以及grub(bootloader)
/data 自己创建的文件
/dev: 设备文件,块设备:随机访问,数据块
字符设备:线性访问,按字符为单位
设备号:主设备号(major)和次号(minor)
/etc:配置文件(相关配置文件都在里面)
/home:用户的家目录,每一个用户的家目录通常默认为/home/USERNAME
/lib: 库文件
静态库, .a
动态库, .dll, .so (shared object)
/lib/modules:内核模块文件
/lib64: 简单说,/lib64是内核级的,/usr/lib64是系统级的,/usr/local/lib64是用户级的.
/lost+found: 丢失与查找,linux系统出现文件是会记录日志文件至此
/media:挂载点目录,移动设备
/mnt:挂载点目录,额外的临时文件系统
/opt:可选目录,第三方程序的安装目录
/proc:伪文件系统,内核映射文件
/root: 管理员目录
/run: linux中run文件,自行百度
/sbin: 管理命令
/srv: 服务器的安装目录。比如ftp服务器安装完毕后,/srv下会增加一个ftp目录。
/sys: 伪文件系统,跟硬件设备相关的属性映射文件
/tmp:临时文件, /var/tmp
/usr:这个目录中包含了命令库文件和在通常操作中不会修改的文件。
这个目录对于系统来说也是一个非常重要的目录,其地位类似Windows上面的”Program Files”目录(安装程序的时候,默认就是安装在此文件内部某个子文件夹内。输入命令后系统默认执行/usr/bin下的程序(当然,前提是这个目录的路径已经被添加到了系统的环境变量中。此目录通常也会挂载一个独立的磁盘分区,它应保存共享只读类文件,这样它可以被运行Linux的不同主机挂载。
/var:可变化的文件,var目录主要针对常态性变动文件,包括缓存(cache)、登录文件(logfile)以及某些软件运行所产生的文件,包括程序文件(lock file,run file),或者例如Mysql数据库的文件等。

  • Dockerfile 中RUN CMD ENTRYPOINT的区别

RUN 指令:用于指定 docker build 过程中要运行的命令。
语法格式:
RUN 或
RUN ["","",“param2”,…]
RUN ["/bin/bash","-c","",“param1”,“param2”,…]
例如:
RUN yum install iproute nginx && yum clean all

CMD 指令:类似于 RUN 指令,用于运行程序,但二者运行的时间点不同;CMD 在docker run 时运行,而非docker build;
CMD 指令的首要目的在于为启动的容器指定默认要运行的程序,程序运行结束,容器也就结束;注意: CMD 指令指定的程序可被 docker run 命令行参数中指定要运行的程序所覆盖。
语法格式:
CMD 或
CMD ["","","",…]
CMD ["","",…] 该写法是为 ENTRYPOINT 指令指定的程序提供默认参数;
注意:如果 dockerfile 中如果存在多个CMD指令,仅最后一个生效;
例如:
CMD ["/usr/sbin/httpd","-c","/etc/httpd/conf/httpd.conf"]

ENTRYPOINT 指令:类似于 CMD 指令,但其不会被 docker run 的命令行参数指定的指令所覆盖,而且这些命令行参数会被当作参数送给 ENTRYPOINT 指令指定的程序;但是, 如果运行 docker run 时使用了 --entrypoint 选项,此选项的参数可当作要运行的程序覆盖 ENTRYPOINT 指令指定的程序;
语法格式:
ENTRYPOINT 或
ENTRYPOINT ["","","",…]
例如:
CMD ["-c"]
ENTRYPOINT [“top”,"-b"]
eg:
docker run -it --entrypoint=/bin/bash nginx
ENTRYPOINT 与 CMD 区别
如:
FROM ubuntu:14.10
ENTRYPOINT [“top”, “-b”]
CMD ["-c"]
把可能需要变动的参数写到 CMD 里面。然后你可以在 docker run 里指定参数,这样 CMD 里的参数(这里是-c) 就会被覆盖掉而 ENTRYPOINT 里的不被覆盖。
注意:
ENTRYPOINT有两种写法,第二种(shell form)会屏蔽掉 docker run 时后面加的命令和 CMD 里的参数。

Docker简介

  • Docker与VM虚拟机
    • VM:Linux Centos原生镜像,在一个电脑中的工作 如果要隔离需要开启多个虚拟机,比较占内存
    • Docker:以沙盒的方式隔离,仅对Linux最核心的环境进行镜像,十分小巧。
  • Docker 与 虚拟机技术
    • 虚拟机技术会虚拟一整硬件,并运行一个完整的操作系统,并在其上安装和运行软件。
    • Docker会生成很多容器,每个容器之间都是相互隔离的,有自己独特的文件系统,互不影响。
    • 容器内的应用直接运行在宿主机的内部,没有内核和虚拟的鹰剑,因此比较轻便。
  • Docker为什么比VM快?
    • Docker有着比虚拟机更少的抽象层
    • Docker利用的是宿主机的内核,VM需要的是Guest OS
      在这里插入图片描述
  • 所以说,新建一个容器的时候,docker不需要像虚拟机一样重新加载一个操作系统内核,避免引导。虚拟机是加载Guset OS , 分钟级别的,而docker是利用宿主机的操作系统,省略了这个复杂的过程,秒级。
  • 浏览器输入网址以后 会发生什么

Dockerg概述

  • 该安装是以购买了阿里云服务器 来进行的Docker安装 整个安装过程相对简单 按照官网的帮助文档就可以 Docker安装文档 注意如下
    1. 在设置静态仓库的时候 不要设置到国外的仓库 设置成阿里云的静态仓库 下载速度等更快
    2. 该网站最好需要翻墙
    3. 建议和边看视频 边操作 如果觉得视频慢 可以移步狂神博客
  • 在这里插入图片描述

Docker 常用命令

镜像命令

docker images #查看所有本地主机上的镜像 可以使用docker image ls代替

docker search #搜索镜像

docker pull #下载镜像 docker image pull

docker rmi #删除镜像 docker image rm

帮助命令

docker帮助文档

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

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

在这里插入图片描述

REPOSITORY		# 镜像的仓库源
TAG				# 镜像的标签
IMAGE ID		# 镜像的id 
CREATED			# 镜像的创建时间
SIZE			# 镜像的大小

-a, --all             Show all images (default hides intermediate images) #列出所有镜像
-q, --quiet           Only show numeric IDs # 只显示镜像的id

docker

docker search 搜索镜像

  • docker search mysql
    在这里插入图片描述
  -f, --filter filter   Filter output based on conditions provided
      --format string   Pretty-print search using a Go template
      --limit int       Max number of search results (default 25)
      --no-trunc        Don't truncate output

在这里插入图片描述

# 这两行shell都是一个意思 通过-f 进行过滤
# 搜索其中的star数大于3000的镜像
[root@iZ2ze0dk32hfzgkv2fetr4Z ~]# docker search mysql -f STARS=3000
[root@iZ2ze0dk32hfzgkv2fetr4Z ~]#  docker search mysql --filter=STARS=3000

docker pull 下载镜像

如果不加版本 则默认为最新版本 latest

[root@iZ2ze0dk32hfzgkv2fetr4Z ~]# docker pull myqsql

下载镜像 docker pull 镜像名+:tag

[root@iZ2ze0dk32hfzgkv2fetr4Z ~]# docker pull myqsql:5.7

虽然我的idea用的是5.7.30 但是docker这里下载不了 不知道后面应用会不会出问题

docker rmi 删除镜像 (docker rm image)

 docker rmi -f 镜像id #删除指定的镜像
 docker rmi -f 镜像id 镜像id 镜像id 镜像id#删除指定的镜像
 docker rmi -f $(docker images -aq) #删除全部的镜像

 $()为linux的命令,意义为输出()中的值

rmi 只能通过过滤镜像的id来进行查找

[root@iZ2ze0dk32hfzgkv2fetr4Z ~]# docker rmi -f c791733bf9b7
[root@iZ2ze0dk32hfzgkv2fetr4Z ~]# docker rmi -f $(docker images -aq)

容器命令

Docker中的所有的容器都是通过镜像进行创建的

docker run #镜像id 新建容器并启动
docker ps #列出所有运行的容器 docker container list
docker rm 容器id #删除指定容器
docker start 容器id #启动容器
docker restart 容器id #重启容器
docker stop 容器id #停止当前正在运行的容器
docker kill 容器id #强制停止当前容器

新建容器并启动

docker run [可选参数] image

--name="Name"		容器名字 tomcat01 tomcat02 用来区分容器
-d					后台方式运行
-it 				使用交互方式运行,进入容器查看内容
-p					指定容器的端口 -p 8080(宿主机):8080(容器)
		-p ip:主机端口:容器端口
		-p 主机端口:容器端口(常用)
		-p 容器端口
		容器端口
		
-P(大写) 				随机指定端口
# 启动并进入容器
[root@iZ2ze0dk32hfzgkv2fetr4Z ~]# docker run -it centos:7 /bin/bash
# 相当于进入了一个轻量级的centosLinux系统

显示容器

#docker ps  #列出当前正在运行的容器
  -a, --all     #列出当前正在运行的容器和历史容器
  -n=? 			#显示最近创建的容器+带出历史运行过的容器 ?表示数目
  -q, --quiet   #只列出当前正在运行的容器的ID

退出容器

exit 		#容器直接退出 容器会关闭 不会运行
ctrl +P +Q 	#容器不停止退出 容器后台运行

删除容器

此处的-f 是强制删除的意思

docker rm 容器id   #删除指定的容器,不能删除正在运行的容器,如果要强制删除 rm -rf
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 attach 容器id或name #打开正在后台运行的容器
[root@iZ2ze0dk32hfzgkv2fetr4Z ~]# docker run -it centos:7

[root@94290b0efed2 /]# exit
[root@iZ2ze0dk32hfzgkv2fetr4Z ~]#  docker ps
[root@iZ2ze0dk32hfzgkv2fetr4Z ~]#  docker ps -a 

[root@iZ2ze0dk32hfzgkv2fetr4Z ~]# docker rm $(docker ps -aq)

docker -it centos:7  # 开启一个新的容器

exit #退出容器

docker start 95180b2a988b   #开启容器

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值