Docker的学习
Step1: Basic Theoretical knowledge
Step1.1: Install Docker In Unbuntu 20.0+
1 | 使用 apt-get 进行安装 |
verify docker is installed successful?
1 | sudo docker run hello-world |
Step2: How To Use
获取镜像
1 | docker pull [选项] [Docker Registry 地址[:端口号/]仓库名[:标签]] |
运行镜像
1 | docker run -it --rm ubuntu:18.04 bash |
列出镜像
1 | docker image ls |
ImageID 是唯一的,同一个Image 可以有不同的 Tag标签;
根据仓库名列出镜像
列出特定的某个镜像,也就是说指定仓库名字和标签
以特定格式显示
- 列出镜像结果,只包含镜像ID和仓库名
1
docker image ls --format "{{.ID}}:{{.Repository}}"
- 打算以表格显示,并且有标题行,可以自己定义列
1
docker image ls --format "table {{.ID}}\t{{.Repository}}\t{{.Tag}}"
查看镜像体积
1 | docker system df |
删除虚悬镜像
定义: 官方更新了镜像,新镜像和旧镜像的名字一样重复了,旧镜像的仓库名和标签都为
1 | docker image prune |
中间层镜像
1 | docker image ls -a |
中间层镜像与虚悬镜像不同,虽然他们的tag都是none,中间层镜像就是顶层镜像需要依赖的镜像。
当你删除顶层镜像,随之这个顶层镜像依赖的中间层镜像也会被删除。
删除镜像
安装Mysql
- 拉取镜像
1 | docker pull mysql:8.0 |
- 运行镜像
1 | docker run --name zxhsMysql -e MYSQL_ROOT_PASSWORD=root -d mysql:8.0 |
—name 【自己指定的名字】
-e 【environment 的缩写,环境变量】
MYSQL_ROOT_PASSWORD 【环境变量名,设置密码】
-d 【后台运行】
我们可以对mysql进行访问
方式一:进入容器内部使用
默认用户是 root
方式二:在最顶层做端口映射,这样在宿主机也可以直接访问,开启端入映射
1 | docker run --name mysql02 -e MYSQL_ROOT_PASSWORD=root -p 3307:3306 -d mysql:8.0 |
-p 【对端口进行映射】
用自己电脑连接一下服务器(记得安全组开设端口哦)
只需要我们映射端口,不需要我们刷新权限和开启远程连接这种麻烦的事情
对容器中的数据进行备份(数据卷)
1 | $ docker run --name some-mysql -v /my/own/datadir:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root -p 3307:3306 -d mysql:8.0 |
/my/own/datadir 【当前宿主机存储数据的目录】
/var/lib/mysql 【容器中存储数据的目录】
这样 /var/lib/mysql 中的数据就会同步到 /my/own/datadir 这个目录下了
Mysql自定义配置文件
容器中的配置文件地址:/etc/mysql/my.cnf
自己定制的配置需要在 :/etc/mysql/conf.d/mysql.cnf 进行配置
1 | docker run --name some-mysql |
初始化一个新鲜的容器
- 启动容器创建一个指定数据库
1 | docker run -d -p 3307:3306 --name zxh -v /root/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root -e MYSQL_DATABASE=jingdong mysql:8.0 |
-e MYSQL_DATABASE 【初始化时指定数据库】
- 启动容器时执行对应的sql文件
容器执行sql脚本目录 /docker-entrypoint-initdb.d
1 | docker run -d -p 3307:3306 --name zxh -v /root/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root -e MYSQL_DATABASE=jingdong |
- 容器启动指定用户名和密码
-e MYSQL_USER=root
-e MYSQL_PASSWORD=root
安装Redis 6.2.5
1 | 拉取镜像 |
PS ,redis持久化的两种方式
快照
手动生成:进入 redis-cli 运行 save 或者bgsave 会生成一个 dump.rdb 文件, save会阻塞,bgsave不会阻塞(background save)
自动生成:
AOF
生成 appendonly.aof 文件
恢复数据的时候,优先恢复 appendonly.aof 文件
Redis 自定义配置
宿主机 /root/my/conf/redis.conf
修改 /root/my/conf/redis.conf 中的配置
bind 0.0.0.0
prot 6380
appendonly yes
- 启动 redis 容器加载自定义配置启动
1 | docker run -d -p 6380:6380 --name customer-redis -v /root/my/conf/redis.conf:/etc/redis.conf redis:6.2.5 redis-server /etc/redis.conf |
将宿主机中的 /root/my/conf/redis.conf 映射到容器中的 /etc/redis.conf
并且启动的时候 以 /etc/redis.conf 中的配置启动
- 启动redis容器加载自定义配置,同时持久化数据到宿主机
1 | docker run -d -p 6380:6380 --name customer-redis |
安装Nignx 1.21.1
1 | #下载镜像 |
Docker compose 模版
1 | version: "3" |