Docker

Docker的基本操作

1.镜像操作

  • docker images
  • docker rmi
  • docker pull
  • docker push
  • docker save
  • docker load

2.拉取、查看镜像

需求:从DockerHub中拉取一个nginx镜像并查看

(1).首先去镜像仓库搜索nginx镜像,比如https://hub.docker.com/:

(2).根据查看到的镜像名称,拉取自己需要的镜像,通过命令:docker pull nginx

(3).通过命令:docker images 查看拉取到的镜像

3.保存、导入镜像

需求:利用docker save将nginx镜像导出磁盘,然后再通过load加载回来

(1).利用docker xx --help命令查看docker save和docker load的语法

例如,查看save命令用法,可以输入命令:

docker save --help

命令格式:

docker save -o [保存的目标文件名称] [镜像名称]

(2).使用docker save导出镜像到磁盘

运行命令:

docker save -o nginx.tar nginx:latest

结果如图:

(3).使用docker load加载镜像

先删除本地的nginx镜像:

docker rmi nginx:latest


然后运行命令,加载本地文件:

docker load -i nginx.tar


4.练习

需求:去DockerHub搜索并拉取一个Redis镜像

目标:

(1)去DockerHub搜索Redis镜像,查看Redis镜像的名称和版本

(2)利用docker pull命令拉取镜像

[root@VM-12-3-centos dockerStudy]# docker pull redis  #docker pull命令拉取镜像
Using default tag: latest
latest: Pulling from library/redis
a2abf6c4d29d: Already exists 
c7a4e4382001: Pull complete 
4044b9ba67c9: Pull complete 
c8388a79482f: Pull complete 
413c8bb60be2: Pull complete 
1abfd3011519: Pull complete 
Digest: sha256:db485f2e245b5b3329fdc7eff4eb00f913e09d8feb9ca720788059fdc2ed8339
Status: Downloaded newer image for redis:latest
docker.io/library/redis:latest
[root@VM-12-3-centos dockerStudy]# docker images   #查看拉取的镜像
REPOSITORY   TAG       IMAGE ID       CREATED         SIZE
nginx        latest    605c77e624dd   15 months ago   141MB
redis        latest    7614ae9453d1   15 months ago   113MB

(3)利用docker save命令将 redis:latest打包为一个redis.tar包

[root@VM-12-3-centos dockerStudy]# docker save -o redis.tar redis:latest
[root@VM-12-3-centos dockerStudy]# ls
nginx.tar  redis.tar

(4)利用docker rmi 删除本地的redis:latest

[root@VM-12-3-centos dockerStudy]# docker rmi redis:latest
Untagged: redis:latest
Untagged: redis@sha256:db485f2e245b5b3329fdc7eff4eb00f913e09d8feb9ca720788059fdc2ed8339
Deleted: sha256:7614ae9453d1d87e740a2056257a6de7135c84037c367e1fffa92ae922784631
Deleted: sha256:49c70179bc923a7d48583d58e2b6c21bde1787edf42ed1f8de9e9b96e2e88e65
Deleted: sha256:396e06df5d1120368a7a8a4fd1e5467cdc2dd4083660890df078c654596ddc1c
Deleted: sha256:434d118df2e9edb51238f6ba46e9efdfa21be68e88f54787531aa39a720a0740
Deleted: sha256:2047f09c412ff06f4e2ee8a25d105055e714d99000711e27a55072e640796294
Deleted: sha256:13d71c9ccb39b206211dd1900d06aa1984b0f5ab8abaa628c70b3eb733303a65

(5)利用docker load 重新加载 redis.tar文件

[root@VM-12-3-centos dockerStudy]# docker load -i redis.tar
9b24afeb7c2f: Loading layer  338.4kB/338.4kB
4b8e2801e0f9: Loading layer  4.274MB/4.274MB
529cdb636f61: Loading layer   27.8MB/27.8MB
9975392591f2: Loading layer  2.048kB/2.048kB
8e5669d83291: Loading layer  3.584kB/3.584kB
Loaded image: redis:latest


5.容器操作

(1).容器相关命令

容器操作的命令如图:

容器保护三个状态:

  • 运行:进程正常运行
  • 暂停:进程暂停,CPU不再运行,并不释放内存
  • 停止:进程终止,回收进程占用的内存、CPU等资源

其中:

  • docker run:创建并运行一个容器,处于运行状态
  • docker pause [id或名称]:让一个运行的容器暂停
  • docker unpause [id或名称]:让一个容器从暂停状态恢复运行
  • docker stop [id或名称]:停止一个运行的容器
  • docker start [id或名称]:让一个停止的容器再次运行
  • docker rm [id或名称]:删除一个容器

(2).创建并运行一个容器

创建并运行nginx容器的命令:

docker run --name Qeem -p 8888:80 -d nginx

命令解读:

  • docker run :创建并运行一个容器
  • --name : 给容器起一个名字,比如叫做mn
  • -p :将宿主机端口与容器端口映射,冒号左侧是宿主机端口,右侧是容器端口
  • -d:后台运行容器
  • nginx:镜像名称,例如nginx

这里的-p参数,是将容器端口映射到宿主机端口。

默认情况下,容器是隔离环境,我们直接访问宿主机的80端口,肯定访问不到容器中的nginx。

现在,将容器的8888与宿主机的80关联起来,当我们访问宿主机的8888端口时,就会被映射到容器的80,这样就能访问到nginx了:

6.数据卷(容器数据管理)

在之前的nginx案例中,修改nginx的html页面时,需要进入nginx内部。并且因为没有编辑器,修改文件也很麻烦。

这就是因为容器与数据(容器内文件)耦合带来的后果。

(1).什么是数据卷

**数据卷(volume)**是一个虚拟目录,指向宿主机文件系统中的某个目录。

一旦完成数据卷挂载,对容器的一切操作都会作用在数据卷对应的宿主机目录了。

这样,我们操作宿主机的/var/lib/docker/volumes/html目录,就等于操作容器内的/usr/share/nginx/html目录了

(2).数据集操作命令

数据卷操作的基本语法如下:

docker volume [COMMAND]

docker volume命令是数据卷操作,根据命令后跟随的command来确定下一步的操作:

  • create 创建一个volume
  • inspect 显示一个或多个volume的信息
  • ls 列出所有的volume
  • prune 删除未使用的volume
  • rm 删除一个或多个指定的volume

(3).创建和查看数据卷

需求:创建一个数据卷,并查看数据卷在宿主机的目录位置

小结:

数据卷的作用:

  • 将容器与数据分离,解耦合,方便操作容器内数据,保证数据安全

数据卷操作:

  • docker volume create:创建数据卷
  • docker volume ls:查看所有数据卷
  • docker volume inspect:查看数据卷详细信息,包括关联的宿主机目录位置
  • docker volume rm:删除指定数据卷
  • docker volume prune:删除所有未使用的数据卷

(4).给nginx挂载数据卷

需求:创建一个nginx容器,修改容器内的html目录内的index.html内容

分析:上个案例中,我们进入nginx容器内部,已经知道nginx的html目录所在位置/usr/share/nginx/html ,我们需要把这个目录挂载到html这个数据卷上,方便操作其中的内容。

提示:运行容器时使用 -v 参数挂载数据卷

修改文件:

浏览器查看:

end
SpringCloud
Linux
Docker
SpringBoot

评论区

暂无评论