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

1647418915239

卸载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 流程

1647419619235

1647419583213

底层原理

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

1647419686889

(2)Docker为什么比VM快?
① Docker有着比虚拟机更少的抽象层
由于Docker不需要Hypervisor实现硬件资源虚拟化,运行在Docker容器上的程序直接使用的都是实际物理机的硬件资源,因此在Cpu、内存利用率上Docker将会在效率上有明显优势。

1647419702866

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

1647419729680

常用命令

命令文档网址:

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
  

1647420118880

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>

1647500770908

posted @ 2023-02-04 20:23  crabin88  阅读(69)  评论(0编辑  收藏  举报