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 参数挂载数据卷
修改文件:
浏览器查看:
评论区