Docker 学习笔记
1. 启动类命令
-
启动docker:
systemctl start docker
-
停止docker
systemctl stop docker
-
重启docker
systemctl restart docker
-
查看docker状态
systemctl status docker
-
开机启动docker
systemctl enable docker
-
查看docker概要信息
docker info
-
查看docker总体帮助文档
docker --help
-
查看命令帮助文档
docker 命令 --help
2. 镜像命令
-
docker images
: 俩出本地的镜像
docker images - a
: 只列出本地所有镜像,含历史镜像层docker images -q
:只显示镜像ID
-
docker search 名字
: 查找docker hub是否有某个镜像
docker search --limit 5 redis
: 只查询排名前5个 redis镜像
-
docker pull 名字
: 下载镜像,不写版本号就是最新版本latestdocker pull 名字:版本号
: 下载指定版本镜像docker pull 名字:latest
: 下载最新版本镜像docker pull redis:6.0.8
: 下载6.0.8版本redis镜像
-
docker system df
: 查看镜像、容器、数据卷所占的空间
-
docker rmi 镜像名字\镜像ID
: 删除一个镜像docker rmi -f 名字\ID
: 强制删除一个镜像docker rmi -f 名字1:tag 名字2:tag ...
: 强制删除多个镜像docker rmi -f $(docker images -qa)
: 强制删除全部镜像,学习中可以这么玩,如果在公司搞不好要坐牢。
-
虚悬镜像:仓库名称和版本都为none,建议删除,没什么用。
3. 容器命令
3.1 创建、运行容器
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
: 新建并启动一个容器
- docker run -it ubuntu /bin/bash
: 运行ubuntu镜像,生成一个容器,并保留终端交互,使用/bin/bash来交互
- docker run -it --name=u01 ubuntu bash
: 运行ubuntu镜像,生成一个名为u01的镜像,使用bash来交互
- docker -d 镜像名
: 守护模式,后台启动 常用于mysql redis等服务
3.2 查看容器
docker ps
: 查看所有正在运行的容器
docker ps -a
: 查看所有 正在运行 以及历史运行过 的容器docker ps -l
: 查看最近创建过的容器docker ps -n 5
: 查看最近创建过的5个容器docker ps -q
: 静默模式,只显示容器编号
3.3 退出容器
exit
: 在容器终端中exit,退出后容器会停止ctrl + p + q
:退出容器但容器不停止
3.4 操作容器
docker start 容器名\容器ID
: 启动已经停止的容器docker restart 容器名\容器ID
: 重启容器docker stop 容器名\容器ID
: 停止容器docker kill 容器名\容器ID
: 强制停止容器docker rm 容器名\容器ID
: 删除已经停止的容器docker rm -f 容器名\容器ID
: 强制删除运行中的容器- 一次性删除多个容器实例:
docker rm -f $(docker ps -a -q)
或docker ps -a -q | xargs docker rm
3.5 与运行中的容器交互
docker logs 容器名\容器ID
: 查看容器打印的日志docker top 容器名\容器ID
: 查看容器内进程运行情况docker inspect 容器名\容器ID
: 查看容器内部细节docker exec -it 容器名\容器ID /bin/bash
与正在运行的容器进行交互,使用/bin/bash终端,会用新的进程打开一个终端,exit后容器不会停止,常用。docker attach 容器ID
: 与正在运行的容器进行交互,不会用新的进程打开终端,exit后容器会停止运行,不建议使用。
3.6 容器的备份
docker cp 容器ID:容器内路径 目标主机路径
:容器文件复制到主机上docker export 容器ID > 文件名.tar
: 导出容器的内容作为一个他人归档文件cat 文件名.tar | docker import - 镜像用户/镜像名:版本号
:从tart包的内容创建一个新的文件系统,并导入为镜像
3.7 容器打包为镜像
docker commit -m="描述信息" -a="作者" 容器ID 目标镜像名:[标签名]
:将容器副本提交为一个镜像,通常用于对某容器进行增加配置后,再提交为一个新的镜像
3.8 容器数据卷
docker run -d -p 宿主机端口:容器内端口 -v 宿主机地址:容器内地址[:rw] --privileged=true 容器名
- -d 为静默模式
- -p为端口映射
- -v为数据卷挂载映射
- –privileged=true令容器获得访问挂载磁盘卷的权限
- :rw 代表容器内权限,可读可写,默认则是该权限;ro为只读 read only
例如 docker run -it -p 8080:8888 -v D:/Downloads/:/tmp/Downloads --privileged=true ubuntu --name u1
容器卷继承
docker run -it --privileged=true --volumes-from u1 --name u2 ubuntu
: 运行ubuntu镜像产生实例,其卷挂载继承u1容器实例- –volumes-from u1 继承u1实例的挂载 规则,u1停止后,该规则依然继承
4.docker下mysql配置与数据卷挂载
4.1 配置与数据卷挂载
docker run -d -p 3306:3306 --privileged=true -v D:/mysql/log:/var/log/mysql -v D:/mysql/data:/var/lib/mysql -v D:/mysql/conf:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=123456 --name mysql mysql:5.7
- -d 后台运行
- -p 3306:3306 端口映射 宿主机端口:镜像端口
- –privileged=true 挂载root权限,允许 访问挂载文件
- -v D:/mysql/log:/var/log/mysql 容器/var/log/mysql目录与宿主机D:/mysql/log建立共享映射
- -v D:/mysql/data:/var/lib/mysql 容器/var/lib/mysql 目录与宿主机D:/mysql/data建立共享映射
- -v D:/mysql/conf:/etc/mysql/conf.d 容器/etc/mysql/conf.d 目录与宿主机D:/mysql/conf建立共享映射
- -e MYSQL_ROOT_PASSWORD=123456 设置mysql的root密码为123456
- –name mysql 将容器名称设置为mysql
- mysql:5.7 镜像名称
4.2 解决中文乱码
D:/mysql/conf下新建my.cnf文件,并内容为:
重启服务
docker restart mysql