Docker常用命令与相关操作(更新中)

Docker介绍

1.什么是Docker

Docker是一个开源的应用容器引擎,它是一个是基于Go语言开发的开源项目。使用Docker可以让开发者封装他们的应用以及依赖包到一个可移植的容器中,然后发布到任意的Linux机器上,也可以实现虚拟化。Docker容器完全使用沙箱机制,相互之间不会有任何接口,这保证了容器之间的安全性。

文档地址icon-default.png?t=N7T8https://docs.docker.com/get-docker/        Docker镜像仓库地址icon-default.png?t=N7T8https://hub.docker.com/

2.Docker为什么出现

在我的电脑上能够运行,在别人电脑无法运行;版本更新导致服务不可用。并且环境配置十分麻烦,每一个机器都要部署环境,费时费力。

Docker给以上问题提出了解决方案。Docker的思想来自于集装箱。隔离:Docker核心思想-打包装箱,每个箱子是相互隔离的。

3.Docker与虚拟机的区别

传统虚拟机,虚拟出一套硬件。运行一个完整的操作系统,然后在这个系统上安装和运行程序,这是资源密集型的。由于产生的磁盘镜像和应用程序的操作系统设置相互交叉,所以导致虚拟机对系统的依赖性很强,一旦系统出现问题,虚拟机依赖的文件以及安全补丁等都可能会出现文件丢失的情况。

而Docker容器内的应用直接运行在宿主机的内核中,容器是没有自己的内核的,多个容器可以共享单个内核,并且创建Docker容器的镜像所需要的配置并不依赖于宿主机系统。每个容器间是相互隔离,每个容器内都有一个属于自己的文件系统,互不影响。

4.Docker特点

1.应用更快速的交付和部署

打包镜像发布测试,一键运行

2.更便捷的升级和扩缩容

使用Docker之后,我们部署应用就和搭积木一样,项目打包为一个镜像,水平扩展服务器A -> 服务器B

3.更简单的系统运

在容器化之后,我们的开发,测试环境都是高度一致的

4.更高效的计算资源利用

Docker是内核级别的虚拟化,可以在一个物理机上可以运行很多的容器实例。服务器的性能可以被压榨到极致。

5. Docker镜像加速原理

Docker的镜像实际上由一层一层的文件系统组成,这种层级的文件系统称为UnionFS

UnionFS联合文件系统

Union文件系统是一种分层、轻量级并且高性能的文件系统,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下。

特性:一次同时加载多个文件系统,但从外面看起来,只能看到一个文件系统,联合加载会把各层文件系统叠加起来,这样最终的文件系统会包含所有底层的文件和目录。

Docker命令

1.帮助命令

# 显示docker的版本信息

[root@iZbp19644h35s5z1dntm5eZ ~]# docker version

# 显示docker的系统信息,包括镜像和容器的数量
[root@iZbp19644h35s5z1dntm5eZ ~]# docker info      

       

# 查看所有帮助命令
[root@iZbp19644h35s5z1dntm5eZ ~]# docker --help    

# 查看帮助命令 docker COMMAND --help
[root@iZbp19644h35s5z1dntm5eZ ~]# docker start --help

2.镜像命令

docker images:查看索引本地的主机上的镜像

docker search:搜索镜像

--filter:过滤器

docker search --filter=SRARS=1000 centos:查询收藏数大于1000的centos的镜像

docker pull:拉取镜像

docker pull 镜像名        不加tag(版本号),即拉取docker仓库中该镜像的最新版本latest

docker pull 镜像名:tag    加tag则是拉取指定版本。

docker下载镜像使用分层下载, docker image的核心,联合文件系统。

docker rmi:删除镜像

# 删除指定的镜像

docker rmi -f 镜像id

# 删除多个镜像

docker rmi -f 镜像id 镜像id 镜像id

# 删除全部镜像

docker rmi -f $(docker images -aq)

 3.容器命令

docker run 新建容器并启动

docker ps时,发现容器停止了,因为docker容器使用后台运行,就必须要有一个前台进程,docker发现没有应用,就会自动停止。

mysql、Nginx等会与客户端代连接,所以会有一个前台进程,不会自动退出

docker run [可选参数] image

docker run -d -p 8855:80 --name nginx001 nginx:后台启动nginx,向外映射端口为8855,重命名为nginx001

--name="name"         容器名称:用来区分容器

-d                                后台方式运行:相当于nohup

-it                                使用交互式运行:进入容器查看内容

-p                                指定容器的端口(四种方式)小写字母p 

        -p:ip:主机端口:容器端口

        -p:主机端口:容器端口(常用)

        -p:容器端口

        容器端口

-P                                随机指定端口(大写字母P)

docker ps 列出所有运行的容器

docker ps 

-a                             列出当前正在运行的容器+历史运行过的容器

-n=?                         显示最近创建的容器(可以指定显示几条 -n=1)

-q                             只显示容器的编号          

退出容器

exit                        容器直接停止,并退出

Ctrl +P + Q             容器不停止,退出 

查看镜像的元数据

docker inspect 容器id

进入当前正在运行的容器

通常容器都是使用后台方式运行的,需要进入容器,修改一些配置

#方式一:docker exec -it 容器id /bin/bash

#方式二:docker attach 容器id

两种方式的区别

docker exec          #进入容器后开启一个新的终端,可以在里面操作

docker attach        #进入容器正在执行的终端,不会启动新的进程

其他命令 

docker strart 容器id:启动容器

docker restart 容器id:重启停止的容器

docker ps:列出当前正在运行的容器

docker ps -a:查看索引容器,包括未运行

docker stop 容器id或name:停止容器

docker kill 容器id:强制停止当前容器

docker exec -it 容器id/name /bin/bash:进入容器

exit:退出容器

docker rm 容器id或name:删除已停止的容器

docker rm -f 容器id:删除正在运行的容器

docker exec -it 容器ID sh:进入容器

docker container logs 容器id:查看容器日志

docker top 容器id:查看容器里的进程

4. 文件数据卷

docker是将应用和环境打包成一个镜像。如果数据都在容器中,那么我们将容器删除,数据就会丢失,因此需要数据可以持久化。

容器之间有一个数据共享的技术,Docker容器中产生的数据,同步到本地。这就是卷技术,即目录额挂载,将我们容器内的目录,挂载到Linux主机上面。

1. 使用命令来挂载:-v

安装mysql

docker run -d -p 3306:3306 --name mysql01 -e MYSQL_ROOT_PASSWORD=123456 \
-v /home/mysql/logs:/logs \
-v /home/mysql/conf:/etc/mysql/conf.d \
-v /home/mysql/data:/var/lib/mysql \
mysql:8.0

2.使用Dockerfile实现挂载

  • 13
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值