Docker入门
Docker入门
一、Docker为什么会出现
此外,Docker是基于Go开发的。
二、虚拟化技术和容器化技术的对比
(1) 虚拟化技术的缺点
·资源占用十分多
·冗余步骤多
·启动很慢
(2) 容器化技术
(3)比较Docker和虚拟化技术的不同
① 传统虚拟机, 虚拟出一条硬件,运行一个完整的操作系统,然后在这个系统上安装和运行软件;
② 容器内的应用直接运行在宿主机的内部,容器是没有自己的内核的,也没有虚拟硬件,所以轻便;
③ 每个容器间是相互隔离的,每个容器内都有一个属于自己的文件系统,互不影响;
(4)应用更快速的交互和部署
① 传统:一堆帮助文档,安装程序;
② Docker: 打包镜像发布测试,一键运行;
更便捷的升级和扩缩容;
更简的系统运维;
更高效的计算资源利用;
三、名词解释
(1)镜像(image)
Docker镜像就好比是一个模板,可以通过这个模板来创建容器服务,tomcat镜像 ===> run ===> tomcat01容器, 通过这个镜像可以创建多个容器(最终服务运行或者项目运行就是在容器中的);
(2)容器(container)
① Docker利用容器技术,独立运行一个或者一组应用, 通过镜像来创建的;
② 启动,停止,删除,基本命令!
③ 就目前可以把这个容器理解为一个建议的linux系统;
(3)仓库(repository)
① 存放镜像的地方;
② Docker Hub(默认是国外的);
③ 阿里云,,,都有容器服务(配置镜像加速!);
安装Docker
1.卸载原有的Docker sudo yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine 2.安装环境并配置阿里云镜像 sudo yum install -y yum-utils sudo yum-config-manager \ --add-repo \ http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo 3.更新 yum 软件包索引 sudo yum makecache fast 4.安装docker相关的 sudo yum install docker-ce docker-ce-cli containerd.io 5.启动Docker sudo systemctl start docker 6.查看Docker信息 sudo docker version 7.测试docker sudo docker run hello-world
卸载docker 1.卸载docker依赖 sudo yum remove docker-ce docker-ce-cli containerd.io 2.删除目录 sudo rm -rf /var/lib/docker sudo rm -rf /var/lib/containerd /var/lib/docker #默认工作路径
docker run hello-world 流程
底层原理
(1)Docker是怎么工作的?
Docker是一个Client-Server结构的系统,Docker的守护进程运行在主机上,通过Socket从客户端访问!
Docker-Server接收到Docker-Client的指令,就会执行这个命令!
(2)Docker为什么比VM快?
① Docker有着比虚拟机更少的抽象层
由于Docker不需要Hypervisor实现硬件资源虚拟化,运行在Docker容器上的程序直接使用的都是实际物理机的硬件资源,因此在Cpu、内存利用率上Docker将会在效率上有明显优势。
② Docker利用的是宿主机的内核,VM需要Guest OS
所以说,新建一个容器的时候,Docker不需要要像虚拟机一样重新加载一个操作系统内核,避免引导,虚拟机是加载GuestOS,分钟级别的,而Docker是利用宿主机的操作系统的。省略了这个复杂的过程,是秒级的。
常用命令
命令文档网址:
https://docs.docker.com/reference/
帮助命令
# docker version 显示docker的版本信息 # docker info 显示docker的系统信息(包括镜像和容器数量) # docker 命令 —help
镜像命令
docker images 查看本地主机上的镜像
[root@VM-20-14-centos ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE rabbitmq management 7b806da5f051 5 days ago 256MB hello-world latest feb5d9fea6a5 5 months ago 13.3kB Options: -a, --all #列出所有镜像 -q, --quiet #只显示镜像的id
docker search 查询镜像
[root@VM-20-14-centos ~]# docker search mysql NAME DESCRIPTION STARS OFFICIAL AUTOMATED mysql MySQL is a widely used, open-source relation… 12253 [OK] mariadb MariaDB Server is a high performing open sou… 4710 [OK] mysql/mysql-server Optimized MySQL Server Docker images. Create… 908 [OK] percona Percona Server is a fork of the MySQL relati… 572 [OK] phpmyadmin phpMyAdmin - A web interface for MySQL and M… 470 [OK] mysql/mysql-cluster Experimental MySQL Cluster Docker images. Cr… 93 centos/mysql-57-centos7 MySQL 5.7 SQL database server 92 bitnami/mysql Bitnami MySQL Docker Image 65 [OK]
docker pull 下载
#docker pull mysql 默认下载最新的 Using default tag:latest
docker rmi -f 删除
[root@VM-20-14-centos ~]# docker rmi -f 容器id 容器id 删除多个 [root@VM-20-14-centos ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE rabbitmq management 7b806da5f051 5 days ago 256MB hello-world latest feb5d9fea6a5 5 months ago 13.3kB [root@VM-20-14-centos ~]# docker rmi -f feb5d9fea6a5 Untagged: hello-world:latest Untagged: hello-world@sha256:4c5f3db4f8a54eb1e017c385f683a2de6e06f75be442dc32698c9bbe6c861edd Deleted: sha256:feb5d9fea6a5e9606aa995e879d862b825965ba48de054caab5ef356dc6b3412 删除所有 [root@VM-20-14-centos ~]# docker rmi -f $(docker images -aq)
容器命令
#docker run [参数] image #参数说明 --name="Name" 容器名字 tomcat01 tomcat02 来区分容器 -d 后台运行 -it 使用交互方式运行,进入容器查看内容 -p 指定容器的端口 -p 8080:8080 [root@VM-20-14-centos ~]# docker run -it centos /bin/bash [root@d83abec677f2 /]# ls bin etc lib lost+found mnt proc run srv tmp var dev home lib64 media opt root sbin sys usr #从容器停止并退出 [root@775ed1754d34 /]# exit exit #从容器退出不停止 按键 CTRL+P+Q [root@aa9402cbc235 /]# [root@VM-20-14-centos /]# #查看当前正在运行的容器 [root@VM-20-14-centos /]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES #查看正在运行的容器以及历史运行 [root@VM-20-14-centos /]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 775ed1754d34 centos "/bin/bash" 36 seconds ago Exited (0) 22 seconds ago zen_ptolemy [root@VM-20-14-centos /]# 删除容器 docker rm 容器id 删除指定,不能删除正在运行的 docker rm -f(docker ps -aq) 删除全部 docker rm -a -q|xargs docker rm 删除全部 启动和停止 docker start 容器id docker stop 容器id docker restart 容器id docker kill 容器id
安装Nginx
[root@VM-20-14-centos ~]# docker run -d --name nginx01 -p 3344:80 nginx 4a8c2c0f7ea90df77e565961cc1b3ac24b55419e014b24726a18fba94b0bc0b9 [root@VM-20-14-centos ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 88589edcdf50 nginx "/docker-entrypoint.…" 3 minutes ago Up 3 minutes 0.0.0.0:3344->80/tcp, :::3344->80/tcp nginx01 [root@VM-20-14-centos ~]# curl localhost:3344 #测试 <!DOCTYPE html> <html> <head> <title>Welcome to nginx!</title> <style> html { color-scheme: light dark; } body { width: 35em; margin: 0 auto; font-family: Tahoma, Verdana, Arial, sans-serif; } </style> </head> <body> <h1>Welcome to nginx!</h1> <p>If you see this page, the nginx web server is successfully installed and working. Further configuration is required.</p> <p>For online documentation and support please refer to <a href="http://nginx.org/">nginx.org</a>.<br/> Commercial support is available at <a href="http://nginx.com/">nginx.com</a>.</p> <p><em>Thank you for using nginx.</em></p> </body> </html>
本文作者:crabin88
本文链接:https://www.cnblogs.com/crabin/p/17092296.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步