Docker的常用命令
1 Docker简介
Docker是开源应用容器引擎,轻量级容器技术。
基于Go语言,并遵循Apache2.0协议开源
Docker可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的Linux系统上,也可以实现虚拟化
容器完全使用沙箱技术,相互之间不会有任何接口
类似于虚拟机技术(vmware、vitural),但docker直接运行在操作系统(Linux)上,而不是运行在虚拟机中,速度快,性能开销极低
白话文,简介就是:
Docker支持将软件编译成一个镜像,然后在镜像中各种软件做好配置,将镜像发布出去,其他使用者可以直接使用这个镜像。
运行中的这个镜像称为容器,容器启动是非常快速的。类似windows里面的ghost操 作系统,安装好后什么都有了。
2 Docker核心概念
docker镜像(Images)
:Docker镜像是用于创建Docker容器的模板docker容器(Container)
:镜像启动后的一个实例称为容器,容器是独立运行的一个或一组应用,docker客户端(Client)
:客户端通过命令行或其他工具使用Docker Api 与Docker的守护进程进行通信docker主机(Host)
:一个物理或虚拟的机器用来执行Docker守护进程和容器docker仓库(Registry)
:Docker仓库用来存储镜像,可以理解为代码控制中的代码仓库,
Docker Hub 提供了庞大的镜像集合供使用
3 Docker的常用命令
3.1 docker镜像命令
通常情况下,Docker的镜像都放在Docker的官网 Docker Hub上。
我们可以进入官网,搜索镜像后,选择合适的版本,进行下载,官网直接给了命令,很方便。如下图,可以参考: docker拉取镜像查看版本
镜像检索
docker search 镜像名称
除了可以在Docker Hub上搜索镜像外,还可以通过该命令进行搜索,下面以 mysql 为例:
docker search mysql
以下是我们搜索到的大致内容
[root@instance-ubphse5x /]# docker search mysql
INDEX NAME DESCRIPTION STARS OFFICIAL AUTOMATED
docker.io docker.io/mysql MySQL is a widely used, open-source relati... 8711 [OK]
docker.io docker.io/mariadb MariaDB is a community-developed fork of M... 3045 [OK]
docker.io docker.io/mysql/mysql-server Optimized MySQL Server Docker images. Crea... 644 [OK]
//此处省略好几行...
主要列介绍:
name列 docker.io/mysql
其中mysql 其中指的是镜像名称
STARS 8711
stars 数
OFFICIAL [OK]
是 官方 否非官方
镜像下载
docker pull 镜像名:tag
其中tag多为系统的版本,可选的,默认为least。
//以下命令是各个版本的举例
docker pull mysql //等同于 docker pull mysql:latest
docker pull mysql:8.0 //下载8.0版本
docker pull mysql:5.7.28
docker pull mysql:5.7
镜像列表
docker images
获取已下载镜像列表
[root@instance-ubphse5x /]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/nginx latest 5a9061639d0a 5 days ago 126 MB
docker.io/hello-world latest fce289e99eb9 9 months ago 1.84 kB
RESPOSITORY
为镜像名TAG
为镜像版本,least代表最新版IMAGE ID
为该镜像唯一IDCREATED
为该镜像创建时间SIZE
为该镜像大小
镜像删除
docker rmi [IMAGE ID]
删除指定镜像,IMAGE ID指的是上面查询到的:
docker rmi IMAGE ID
删除所有镜像:
docker rmi $(docker images -q)
3.2 容器操作
我们将镜像下载下来后,就可以启动它了。
根据镜像启动容器
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
docker run --name container-name -d image-name
-- name
:为容器起一个名称-d
:detached,执行完这句命令后,控制台将不会阻塞,可以继续输入命令操作image-name
:要运行的镜像名称-p
:将容器的端口映射到主机的端口-v
:将主机中目录挂载到容器目录。就是表示目录映射关系。这样做的好处就是宿主机上修改文件,可以直接共享到容器里面-it
:该命令是-i(以交互模式运行容器,并将容器的标准输入打开,这样理解,表示创建容器后立马运行) 和 -t(为容器重新分配一个伪输入终端,这样理解,表示容器启动后会进入其命令行) 组合后表示,容器创建就能登陆进去,即分配一个伪终端--rm
:停止容器后立马删除容器/bin/bash
:以交互式的形式运行容器 这个暂时没有搞懂,不知道怎么用,试了半天也没搞定,,,,,这种方式运行容器,当退出的时候容器也就停止了
如下命令:
docker run -d -p 80:80 --name nginx -v /nginx/html:/usr/share/nginx/html -v /nginx/conf:/etc/nginx -v /nginx/logs:/var/log/nginx nginx
-p 80:80
:将容器的80端口映射到主机的80端口--name nginx
:将容器命名为nginx-v /nginx/html:/usr/share/nginx/html
:将主机中/nginx/html目录挂载到容器的/usr/share/nginx/html目录-v /nginx/conf:/etc/nginx
:将主机中/nginx/conf目录挂载到容器的/etc/nginx目录-v /nginx/logs:/var/log/nginx
:将主机中/nginx/logs目录挂载到容器的/var/log/nginx目录
说明:这里挂在的目的是我们配置nginx的时候不用进入容器,直接可以在物理机上进行操作,方便!
查看容器
//查看所有容器(运行中和未运行)
docker ps -a
//查看正在运行的容器
docker ps
//查看停止的容器
docker ps -f status=exited
// 查看最后一次运行的容器
docker ps -l
停止容器
docker stop 容器名称(或者容器ID)
启动容器
docker start 容器名称(或者容器ID)
docker容器已经存在了,我们需要修改启动命令可以 :参考文章
文件拷贝
如果我们需要将文件拷贝到容器内可以使用cp命令
docker cp 需要拷贝的文件或者时目录 容器名称:容器目录
也可以将文件从容器中拷贝出来
docker cp 容器名称:容器目录 需要拷贝的文件或目录
删除容器
删除单个容器:
docker rm 容器名称(或者容器ID)
删除所有容器:
docker rm $(docker ps -a -q )
查看容器的所有信息
会打印出一个此容器的配置信息
docker inspect 容器名称(或者容器ID)
查看容器日志
查看当前容器日志,可通过如下命令:
docker logs 容器名称(或者是容器ID)
查看端口映射
可以通过如下命令查看容器映射了哪些端口及协议:
docker port 容器名称(或者是容器ID)
登陆守护式容器(后台运行的容器)
通过该命令可以操作容器内部的文件什么的。
docker exec -it 容器名称(或容器ID) /bin/bash
边测试边写文章,整整写了一下午。。。。。中间有草草了之的想法,还好,坚持下来了。