镜像操作
从DockerHub中拉取一个nginx镜像并查看
利用docker save将nginx镜像导出磁盘,然后再通过load加载回来
步骤一:利用docker xx —help命令查看docker save和docker load的语法
[root@iZwz9abtr8fgz7aekmx91hZ yum.repos.d]# docker save --help
Usage: docker save [OPTIONS] IMAGE [IMAGE...]
Save one or more images to a tar archive (streamed to STDOUT by default)
Options:
-o, --output string Write to a file, instead of STDOUT
[root@iZwz9abtr8fgz7aekmx91hZ software]# docker load --help
Usage: docker load [OPTIONS]
Load an image from a tar archive or STDIN
Options:
-i, --input string Read from tar archive file, instead of STDIN
-q, --quiet Suppress the load output
步骤二:使用docker save导出镜像到磁盘
[root@iZwz9abtr8fgz7aekmx91hZ software]# docker save -o ./nginx.tar nginx:latest
[root@iZwz9abtr8fgz7aekmx91hZ software]# ls
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
容器操作
创建运行一个Nginx容器
进入Nginx容器,修改HTML文件内容,添加“传智牛逼”
exec命令可以进入容器修改文件,但是在容器内修改文件是不推荐的
创建并运行一个redis容器,并且支持数据持久化
步骤一:到DockerHub搜索Redis镜像
步骤二:查看Redis镜像文档中的帮助信息
步骤三:利用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
[root@iZwz9abtr8fgz7aekmx91hZ ~]# docker exec -it xiaochong-redis redis-cli
127.0.0.1:6379> set xiaochong 1
OK
数据卷(容器数据管理)
操作数据卷
创建一个数据卷,并查看数据卷在宿主机的目录位置
挂载数据卷
我们在创建容器时,可以通过 -v参数来挂载一个数据卷到某个容器目录
创建一个nginx容器,修改容器内的html目录内的index.html内容
创建并运行一个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;
数据卷挂载的方式对比
- ①数据卷挂载耦合度低,由docker来管理目录,但是目录较深,不好找
- ②目录挂载耦合度高,需要我们自己管理目录,不过目录容易寻找查看