一、镜像管理命令
1.搜索镜像,建议直接在docker hub官网搜索会比较直观看到版本
docker search 镜像名称
2.下载镜像
docker pull 镜像名:版本号,如果要下载最新的就是docker pull 镜像名:latest,或者直接docker pull 镜像名
4.列出系统下载的所有镜像
docker images
3.删除镜像:如果镜像有创建关联的容器则会提示要先删除容器之后才能删除镜像
docker rmi 镜像ID 或者 docker rmi 镜像名:版本号
5.查看镜像或者容器的详细信息
1)docker inspect 镜像ID或者docker inspect 镜像名:版本号
2)docker inspect 容器ID
二、容器管理命令
1.docker create :创建容器但不启动它
格式:docker create [OPTIONS] IMAGE [COMMAND] [ARG...]
OPTIONS:可以通过命令docker create --help查看他的可使用项
IMAGE :可以是(镜像名称:版本)或者镜像ID
常用OPTIONS说明:
- --name :给容器起一个新名字,为容器指定一个名称,格式为:--name 容器新名称
-
-P: 随机端口映射,容器内部端口映射到宿主机的随机端口
-
-p: 指定端口映射,格式为:宿主机端口 : 容器端口
-
-e : 配置环境变量;格式为: -e 变量名=变量值
- -v:主机与容器的目录映射关系,格式为:-v 宿主机目录 : 容器目录,这样容器里面的文件会写到宿主机一份,容器被删除了,宿主机还保留之前运行的文件
docker create -P nginx:latest #使用镜像nginx:latest创建一个容器,并将容器的80端口映射到主机随机端口
docker create --name mynginx nginx:latest #使用镜像nginx:latest创建一个容器并重命名为mynginx
docker create -p 80:80 -v /data:/data -d nginx:latest #使用镜像nginx:latest创建一个容器,并将容器的80端口映射到宿主机的80端口,宿主机的目录 /data 映射到容器的 /data
docker create --name mysqld -e MYSQL_ROOT_PASSWORD=ROOT -p 3306:3306 mysql:5.7-debian #使用镜像mysql:5.7-debian创建一个容器并取名为mysqld,设置环境变量MYSQL_ROOT_PASSWORD的值为root,并将该容器的3306端口映射到宿主机的3306端口
2.docker run:创建并启动容器
格式:docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
OPTIONS:可以通过命令docker run--help查看他的可使用项
IMAGE :可以是(镜像名称:版本)或者镜像ID
常用OPTIONS说明:
- --name="nginx":给容器起一个新名字,为容器指定一个名称
-
-i: 以交互模式运行容器,通常与 -t 同时使用;
- -t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
-
-P: 随机端口映射,容器内部端口随机映射到主机的端口
-
-p: 指定端口映射,格式为:主机(宿主)端口:容器端口
-
--dns 8.8.8.8: 指定容器使用的DNS服务器,默认和宿主机一致;
-
--dns-search example.com: 指定容器DNS搜索域名,默认和宿主机一致;
- -d:后台运行容器,并返回容器ID
-
-h "mars": 指定容器的hostname;
-
-e username="ritchie": 设置环境变量;
-
--env-file=[]: 从指定文件读入环境变量;
-
--cpuset="0-2" or --cpuset="0,1,2": 绑定容器到指定CPU运行;
-
-m :设置容器使用内存最大值;
-
--network="bridge": 指定容器的网络连接类型,支持 bridge/host/none/container:<name|id> 四种类型;默认是桥接类型,host表示使用宿主机的网络,,
-
- 默认是bridge桥接类型,也就是容器会有一个自己的网卡如10.*.*.*,然后经过桥转换成与宿主机的网卡,如192.168.*.*
- host:表示使用宿主机的网络,一旦设置的是host网络连接类型,则不需要参数-p指定端口映射,用host这种方式容器就没有多余的虚拟网络,也就是容器自己没有网卡,直接用的宿主机的网卡
- none:表示容器使用自己的网络,也就是用的容器自己的网卡
- container:<name|id>:表示使用某个容器的网络,共享端口和IP
-
-
--link=[]: 添加链接到另一个容器;
-
--expose=[]: 开放一个端口或一组端口;
-
--volume , -v: 主机与容器的目录映射关系,格式为:-v 宿主机目录 : 容器目录
$ docker run --name mysqld -e MYSQL_ROOT_PASSWORD=root -p 33306:3306 -d mysql:5.7 #使用镜像mysql:5.7创建容器并命名为mysqld,设置环境变量MYSQL_ROOT_PASSWORD等于root,同时指定3306端口映射并后台运行该容器
$ docker run -it nginx:latest /bin/bash #使用镜像nginx:latest以交互模式启动一个容器,在容器内执行/bin/bash命令
$ docker run -p 80:80 -v /data:/data -d nginx:latest #使用镜像 nginx:latest创建容器并后台启动,将容器的 80 端口映射到主机的 80 端口,主机的目录 /data 映射到容器的 /data
$ docker run -P -d nginx:latest #使用镜像nginx:latest创建容器并后台运行容器,同时将容器的80端口映射到主机随机端口
$ docker run --name mynginx -d nginx:latest #使用docker镜像nginx:latest创建一个名称为mynginx的容器并后台启动该容器
3.docker container ls:查看正在运行的容器,也可以用docker container ps,是一样的
docker container ls -a:查看所有创建的容器,包括没有运行的
具体可选参数可通过docker container ls --help进行查看,如下图
4.docker exec:使用正在运行的容器,进入容器并在运行的容器中执行命令
docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
OPTIONS说明:
-
-d :后台运连接容器
-
-i : 持续连接容器
-
-t :分配一个伪终端
$ docker exec -it mynginx /bin/bash #在容器 mynginx 中开启一个交互模式的终端
$ docker ps -a #查看所有在运行的容器
... 9df70f9a0714 openjdk "/usercode/script.sh…" ...
$ docker exec -it 9df70f9a0714 /bin/bash #通过容器ID进入容器并打开一个终端
$ docker exec -it mynginx /bin/sh /root/runoob.sh #在容器 mynginx 中以交互模式执行容器内 /root
5.docker start :启动容器
docker start myrunoob #启动名称为murunoob的容器,docker start后面可以跟容器名称或者ID
6.docker stop:关闭容器
docker stop myrunoob #关闭murunoob容器,docker stop后面可以跟容器名称或者ID
7.docker rm :删除容器
docker rm myrunoob #删除容器myrunoob,除了用容器名称也可以用ID,注意:要删除的容器必须是关闭状态
8.docker logs:查看容器的日志
docker logs [OPTIONS] CONTAINER
OPTIONS说明:
-
-f : 实时跟踪日志输出,持续输出日志
-
--since :显示某个开始时间的所有日志
- --until:显示某个时间以前的日志
-
-t : 显示时间戳
-
--tail :仅列出最新N条容器日志
$ docker logs -f mynginx #跟踪查看mynginx容器日志输出
$ docker logs --since="2016-07-01" --tail=10 mynginx #查看mynginx容器从2016年7月1号后的最新10条日志
7.docker top:查看容器中运行的进程信息
$ docker top mysqld #查看mysqld容器中运行的进程 UID PID PPID C STIME TTY TIME CMD 999 40347 40331 18 00:58 ? 00:00:02 mysqld
8.docker cp :复制容器的数据到宿主机
docker cp 容器ID:容器内路径 宿主机路径
docker cp 宿主机路径 容器ID:容器内路径
$ docker cp mysqld:/etc/mysql ~/tmp/config #复制容器mysqld中/etc/mysql数据到宿主机下的~/tmp/config标签:容器,--,宿主机,nginx,常用命令,镜像,docker From: https://www.cnblogs.com/xnancy/p/17141682.html
$ docker cp ./a.txt mysqld:/tmp/ #复制宿主机当前目录下的a.txt文件到容器mysqld下面的/tmp/ 文件夹下