Docker基本命令-镜像容器操作

Docker基本命令

Docker镜像基本命令

搜索镜像命令

  • 搜索镜像nginx

    docker search nginx;
  • 搜索官方提供的nginx镜像

    docker search --filter "is-official=true" nginx;
  • 搜索自动化构建的nginx镜像

    docker search --filter "is-automated=true" nginx
  • 搜索大于等于3颗星的nginx镜像

    docker search --filter stars=3 nginx

下载镜像nginx

docker pull nginx

本地镜像查看

docker images

本地镜像nginx删除

docker rmi nginx

附:镜像加速

配置阿里云容器镜像加速器

https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors

容器的基本操作

容器创建

docker run -itd --name=container_name image_name/镜像id

  • -i 表示以交互模式运行容器
  • -d 表示后台运行容器, 并返回容器id
  • -t 为容器重新分配一个伪输入终端
  • –name为容器指定名称
  • 注意: 一个镜像可以创建多个容器,只要名字不一样就可以

查看容器

  • 查看容器(运行中的)

    docker ps
  • 查看容器(包括已停止的)
    docker ps -a

停止容器

docker stop container_name/container_id

启动容器

docker start container_name/container_id

重启容器

docker restart container_name/container_id

删除容器

docker rm container_name/container_id

注意: 删除容器需要先停止容器

进入容器

docker exec -it container_name/container_id /bin/bash

退出容器

exit

容器提交修改

docker commit -a "author" -m "message" container_name/container_id new_image_name:tag_name

参数说明

  • -a:参数可选,用于指定作者,可以写你的名字
  • -m:参数可选,提交信息,可以说一下你做了哪些修改
  • container_id:该参数为被修改的容器ID
  • new_image_name:此为新镜像的名字,可自定义
  • tag_name:此为新镜像的标签,可不写,不写时标签默认为latest
  • 修改完,停掉容器,重新启动,修改的内容还在;
  • 容器删除了,再次通过镜像创建容器,如果没有把容器修改内容保存到镜像中,再次创建的容器没有修改的内容;
  • 每个容器都很干净的,里面没有多余的命令,需要自己安装;

端口映射

解决的是客户端发送过来的请求和容器之间的交互

docker run -itd -p 宿主机端口号:容器端口号 + 镜像名字/镜像id

文件挂载

  • 解决的是宿主机和容器之间的交互
  • 文件挂载和复制都要用绝对路径
  • docker run -itd -v /宿主机/文件目录/文件名:/容器/目录/文件名

    eg:

    docker run -itd --name=nginx -p 80:80 -v /wwwroot/html:/usr/share/nginx/html nginx
    docker run -itd --name=nginx -p 80:80 -v /wwwroot/:/usr/share/nginx/html/ 584256c85bdd
  • 文件挂载的意义: 本地代码或者文件通过容器挂载的方式,放到容器里面,交由其来运行;

文件复制

文件挂载和复制都要用绝对路径

将容器的文件复制到本地

docker cp 容器名:/容器目录/文件名 /宿主机目录/文件名

将本地的文件复制到容器

docker cp /宿主机目录/文件名 容器名:/容器目录/文件名

容器互联

解决的是容器与容器之间的交互

docker run -itd --link 被关联的容器名字:被关联的容器的别名

Docker容器理论沉淀

  • docker的容器,容器启动之后,会自动运行容器里面的服务;类似nginx, nginx启动之后,我们会得到一个运行nginx软件的虚拟机; nginx是运行在容器里面的,对外提供服务的是我们的服务器, 这里的服务器可以理解为我们的***宿主机***;

  • 给用户提供的访问,是宿主机在提供,而不是容器再提供,那我们怎么把用户的请求,请求到宿主机之后,自动分配给容器呢? 这个就是端口映射的操作;

  • 端口映射就是把宿主机的80端口和容器的80端口两者之间关联起来;用户的所有请求到了宿主机的80端口就会自动被转发到容器的80端口;这样一来,我们所有的http请求到了宿主机之后,就会被容器里面的nginx接收到进行处理;

  • docker里面的容器, 每一个容器都提供一种服务; 它不是一个容器里面提供所有的服务; 我们不会在一个服务里面, 把php, mysql, nginx都装进去, 为什么呢? 分开装的好处便于切换版本, 不需要动环境的东西,只需要装一个新版的容器, 切换一下容器就可以了;

安装mysql和php容器

  • 因为mysql可以单独运行, 但php的运行依赖mysql,所以先启动一个mysql的容器;
  • 因为数据比较重要,所以启动mysql容器需要挂在目录到本地持久化,容器里面数据变化,本地也会变化,这样容器出问题后,只要删除容器,重新挂载一下本地目录就可以了,文件数据不会丢失;
  • docker run -itd --name=mysql -p 3306:3306 -v /wwwroot/mysql/:/var/lib/mysql/ -e MYSQL_ROOT_PASSWORD=123456 mysql
  • 此时,本地工具连接mysql报错,提示"caching_sha2_password" 这是mysql8的一个特点,需要安装一个插件,我们此时需要对mysql密码进行重新设置
  • -e MYSQL_ROOT_PASSWORD=123456 启动容器的时候,往里面传参,设置mysql的root密码
  • 修改mysql密码 ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456'; 在mysql中修改root密码,任意地址可连接
  • 启动php容器
  • docker run -itd --name=php --link mysql:mysql -v /wwwroot/php/index.php:/index.php php
  • 把index.php挂载到容器根目录里中
  • docker安装pdo扩展

    docker-php-ext-install pdo_mysql
  • 注意:容器互联之后,host地址不用 ip地址了, 用关联时候命令的容器别名或者ip替代ip就可以
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值