镜像操作

image.png
image.png


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

image.png


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

步骤一:利用docker xx —help命令查看docker save和docker load的语法

  1. [root@iZwz9abtr8fgz7aekmx91hZ yum.repos.d]# docker save --help
  2. Usage: docker save [OPTIONS] IMAGE [IMAGE...]
  3. Save one or more images to a tar archive (streamed to STDOUT by default)
  4. Options:
  5. -o, --output string Write to a file, instead of STDOUT
  6. [root@iZwz9abtr8fgz7aekmx91hZ software]# docker load --help
  7. Usage: docker load [OPTIONS]
  8. Load an image from a tar archive or STDIN
  9. Options:
  10. -i, --input string Read from tar archive file, instead of STDIN
  11. -q, --quiet Suppress the load output

步骤二:使用docker save导出镜像到磁盘

  1. [root@iZwz9abtr8fgz7aekmx91hZ software]# docker save -o ./nginx.tar nginx:latest
  2. [root@iZwz9abtr8fgz7aekmx91hZ software]# ls
  3. manpages-zh-1.5.1 manpages-zh-1.5.1.tar.gz nginx-1.20.2.tar.gz nginx.tar

步骤三:使用docker load加载镜像

[root@iZwz9abtr8fgz7aekmx91hZ software]# docker rmi nginx:latest
Untagged: nginx:latest
...
[root@iZwz9abtr8fgz7aekmx91hZ software]# docker images
REPOSITORY   TAG       IMAGE ID   CREATED   SIZE

[root@iZwz9abtr8fgz7aekmx91hZ software]# docker load -i ./nginx.tar
2edcec3590a4: Loading layer [==================================================>]  83.86MB/83.86MB
...
[root@iZwz9abtr8fgz7aekmx91hZ software]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED        SIZE
nginx        latest    605c77e624dd   5 months ago   141MB

容器操作

image.png


创建运行一个Nginx容器

image.png


进入Nginx容器,修改HTML文件内容,添加“传智牛逼”

exec命令可以进入容器修改文件,但是在容器内修改文件是不推荐的
image.png


创建并运行一个redis容器,并且支持数据持久化

步骤一:到DockerHub搜索Redis镜像


步骤二:查看Redis镜像文档中的帮助信息

image.png


步骤三:利用docker run 命令运行一个Redis容器

[root@iZwz9abtr8fgz7aekmx91hZ ~]# docker run --name xiaochong-redis -p 6379:6379 -d redis redis-server --appendonly yes
[root@iZwz9abtr8fgz7aekmx91hZ ~]# docker exec -it xiaochong-redis bash
root@7c45075f68ed:/data# redis-cli
127.0.0.1:6379> keys *
(empty array)
127.0.0.1:6379> set num 666
OK

image.png

[root@iZwz9abtr8fgz7aekmx91hZ ~]# docker exec -it xiaochong-redis redis-cli
127.0.0.1:6379> set xiaochong 1
OK

数据卷(容器数据管理)

image.png
image.png


操作数据卷

image.png


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

image.png


挂载数据卷

我们在创建容器时,可以通过 -v参数来挂载一个数据卷到某个容器目录
image.png


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

image.png


创建并运行一个MySQL容器,将宿主机目录直接挂载到容器

docker run \
--name xiaochong-mysql8 \
-e MYSQL_ROOT_PASSWORD=myPassword123# \
-p 3307:3306 \
-v /tmp/mysql/cnf/my.cnf:/etc/mysql/conf.d/my.cnf \
-v /tmp/mysql/data:/var/lib/mysql \
-d mysql
alter user 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'xiaochong';
grant all privileges on *.* to 'root'@'%';
flush privileges;

数据卷挂载的方式对比

image.png

  • ①数据卷挂载耦合度低,由docker来管理目录,但是目录较深,不好找
  • ②目录挂载耦合度高,需要我们自己管理目录,不过目录容易寻找查看