| docker命令 | 操作 | 描述 |
|---|---|---|
| docker images | 查看镜像 | |
| docker pull (镜像名称:镜像tag) | 拉取镜像 | |
| docker rmi (镜像id) | 删除镜像 | |
| docker commit (容器名称) (镜像名称:版本号) | 根据容器创建新的景象 | 不带数主机以外的配置参数 |
| docker search | 搜索镜像 | |
| docker build -f (dockerfile文件路径) -t (镜像名称:tag) | 创建镜像 | 通过dockerfile创建镜像 |
| docker 命令 --help | 查看命令参数 | |
| docker run -id --name (容器名称) (镜像名称:tag) | 创建容器 | -p:81:80 将宿主机81端口映射到容器80端口上, -v 容器卷挂载, -P(不需要加端口):随机映射端口 |
| docker run -id --name docker02 --volumes-from docker01 chentos:1.0 | 启动容器并且copy容器卷 | 容器2 --volumes-from 容器1 , 类似于 容器2 extend 容器1 双向共享 |
| docker run -d -p 3310:3306 -v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysq101 mysql:5.7 | 启动mysql容器,并配置密码 | -e MYSQL_ROOT_PASSWORD=密码 (配置密码) |
| docker start 容器id | 启动容器 | |
| docker stop 容器id | 停止容器 | |
| docker rm 容器id | 删除容器 | |
| docker ps | 查看容器 | -a:查看所有容器 |
| docker attach 容器id | 进入容器 | |
| docker exec -it 容器id /bin/bash | 进入容器 | |
| docker inspect 容器id | 查看容器详情 | |
| docker volume ls | 查看数据卷 | |
| docker volume inspect 卷名称 | 查看卷详情 | 包括存储路径,创建时间等 |
| docker network ls | 查看docker网络 | |
| docker network create <network_name> | 创建新的docker网络 |
| docker命令 | 操作 | 描述 |
|---|---|---|
| docker commit (容器名称) (镜像名称:版本号) | 根据容器创建新的景象 | 不带数主机以外的配置参数 |
| docker save -o (tar包名称) (镜像名称:版本号) | 根据景象创建tar包 | -o: output |
| docker load -i (tar包名称) | 根据景象创建tar包 | -i: input |
docker run -id --name node18 node:18 -v /home:/etc/home
通过node:18镜像创建名称为node18容器.
-i或--interactive:保持容器的标准输入 (stdin) 打开,允许你与容器的进程进行交互。-d或--detach:将容器放入后台模式运行,即使在你退出终端后也保持运行。-t或--tty:伪终端
因此,-id 的组合意味着创建一个交互式的容器,并将其放入后台运行。
/home(前者):代表宿主机目录/ect/home(后者):代表容器目录
数据卷
volume
匿名挂载
# -v 容器内路径
docker run -d -p --name nginx01 -v /ect/nginx nginx
/ect/nginx: 代表容器路径
# 查看所有的 volume 的情况
docker volume ls
// 展示如下!
# local 9f38292179faa178afcce54d80be99d4ddd68c91d2a68870bcece72d2b7ed061
- 这里发现,这种就是匿名挂载,我们在-v 只写了容器内的路径,没有写容器外的路径!9f38292179f... 代表容器外的路径
具名挂载
# -v 名称:容器路径
docker run -d -p --name nginx02 -v juming-nginx:/etc/nginx nginx
juming-nginx: 数据卷名称/etc/nginx: 容器路径
docker volume
local juming-nginx
指定目录挂载
# -v 宿主机路径:容器路径
docker run -d -p --name nginx02 -v /home/nginx:/etc/nginx nginx ./
/home/nginx: 宿主机路径/etc/nginx: 容器路径
Dockerfile
Dockerfile就是用来构建docker镜像的构建文件!
通过这个脚本可以生成镜像,镜像是一层一层的,脚本一个个的命令,每个命令都是一层!
# 创建一个dockerfile文件,名字可以随机 建议 Dockerfile
# 文件中的内容 指今(大写)参数
FROM centos
VOLUME ["volume01", "volume02"]
CMD echo ----end-----
CMD /bin/bash
通过docker build 执行命令
docker build -f /home/dockerfile -t centos1:1.0 .
-f: dockerfile文件路径-t: 生成镜像名称和tag
# 查看生成的镜像
docker images
实践
多个mysql实现数据共
# 启动容器1
docker run -d -p 3310:3306 -v /etc/mysql/conf.d -v /var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysq101 mysql:5.7
# 启动容器2并同步容器1的数据卷
docker run -d -p 3310:3306 -e MYSQL_ROOT_PASSWORD=123456 --name mysq102 --volumes-form mysq101 mysql:5.7
俩个容器相互ping通
docker exec -it nginx01 ping nginx02
# 报错: OCI runtime exec failed: exec failed: unable to start container process: exec: "ping": executable file not found in $PATH: unknown
- 创建docker网络
docker network create netEven
- 删除所有docker容器
sudo docker rm -f ${sudo docker ps -aq}
# a : all
# q : quiet