docker基本命令

140 阅读4分钟
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命令官网

docker hub地址


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
  1. 创建docker网络
docker network create netEven
  1. 删除所有docker容器
sudo docker rm -f ${sudo docker ps -aq}
# a : all
# q : quiet