Docker常用命令篇
其实,在命令行输入docker 就可以看到所有命令的
docker logs dockerID 查看日志
1. 镜像image相关
1.1. 查看本机所有镜像
# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
- repository:镜像在仓库中的名称
- TAG:镜像标签(一般我们写软件的版本号)
- IMAGE ID:镜像ID
- CREATED:镜像创建的日期(不是获取该镜像的日期)
- SIZE:镜像的大小
1.2. 搜索镜像
# docker search 镜像名
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
- NAME:镜像名称
- DESCRIPTION:镜像描述
- STARS:星星数量,or点赞数量
- OFFICIAL:是否官方构建
- AUTOMATED:自动构建(是否是Docker Hub 自动构建流程创建的)
其实也可以通过 hub.docker/com 直接进行镜像搜索
1.3. 拉取镜像
# docker pull 镜像名称:tag
拉取镜像从中央仓库下载镜像到本地,假如不声明tag,会默认拉取latest版本
构建镜像 docker build -t nginx:test(需要Dockerfile)
1.4. 镜像删除
# docker rmi 镜像id
# docker rmi 镜像名称
# docker rmi 镜像名称:tag
# docker rmi `docker images -q` #删除所有镜像
删除镜像前必须要确保镜像没有被使用,也就是说,没有通过当前镜像创建容器
id可以只写前几位
1.5 镜像备份/导出
docker save [OPTIONS] IMAGE [IMAGE...]
docker save -o /root/mycentos7.tar mycentos:7
-o 镜像打包后的归档文件输出的目录
1.6 镜像导入/恢复
docker load [OPTIONS]
docker load -i mycentos7.tar
--input, -i:指定导入的文件;--quiet, -q:精简输出信息。
1.7 更新镜像:
- 使用镜像创建一个容器 docker run -t -i 镜像
- 在运行的容器内使用apt-get update更新
- 完成后使用exit退出容器
- 对刚刚的容器(通过id寻找),用docker commit -m -a 提交容器副本
1.8. 镜像推送至仓库与标签设置
docker tag local-image:tagname new-repo:tagname
docker push new-repo:tagname
先设置名称标签,再推送
退出登录
docker logout
2. 容器container相关
2.1. 查看容器
2.1.1. 正在运行的容器:
# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
- CONTAINER ID:容器ID
- IMAGE:所属镜像
- COMMAND:命令
- CREATED:创建时间
- STATUS:容器状态
- removing:迁移状态
- paused:暂停状态
- exited:停止状态
- dead:死亡状态
- PORTS:端口号
- NAMES:容器名称
2.1.2. 查看所有容器:
# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2.1.3. 查看退出的容器:
docker ps -f status=exited
查看最后一次运行的容器
docker ps -l
2.2. 容器启动相关
# docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
-i:表示运行容器;-t:表示容器启动后会进入其命令行(终端)。加入这两个参数后,容器创建就能登录进去。即分配一个伪终端;--name:为创建的容器命名;-v:表示目录映射关系(前者是宿主机目录,后者是映射到宿主机上的目录),可以使用多个 -v 做多个目录或文件映射。注意:最好做目录映射,在宿主机上做修改,然后共享到容器上;-d:在 run 后面加上 -d 参数,则会创建一个守护式容器在后台运行(这样创建容器后不会自动登录容器,如果只加 -i -t 两个参数,创建容器后就会自动进容器里);-p:表示端口映射,前者是宿主机端口,后者是容器内的映射端口。可以使用多个 -p 做多个端口映射。-P:随机使用宿主机的可用端口与容器内暴露的端口映射。
在Docker中,start、restart和run是三个不同的命令,各自有不同的功能和用途:
docker start:启动已经创建但是处于停止状态的容器。已经创建的容器可以通过容器ID或者容器名称来标识。使用start命令启动容器时,容器将以先前的状态继续执行。docker restart:重新启动正在运行中的容器。与start命令不同的是,restart命令会立即停止并重新启动容器,而不考虑容器的当前状态。docker run:是docker container create和docker container start的缩写。会创建并运行一个新的容器实例。run命令在运行容器之前会先查找本地是否有指定的镜像,如果没有则会从远程仓库中下载。创建容器实例后,run命令会立即启动该容器并执行指定的命令。
2.2.1. 创建并进入容器
docker run -it --name 容器名称 镜像名称:标签 /bin/bash
docker run -it --name mymysql mysql:5.7 /bin/bash
Docker容器运行必须有一个前台进程,如果没有前台进程执行,容器认为是空闲状态,会自动退出
exit,一旦退出,容器便会停止运行
2.2.2. 守护方式创建容器
docker run -di --name 容器名称 镜像名称:标签
创建完成后,会启动容器,但不会进入容器,容器一直运行,除非用docker stop关闭容器
理解为了后台运行
2.2.3 守护方式进入容器
进入容器,这里是进入已经在运行的容器
docker attach docekrID 不推荐:退出exit,容器会自动停止
docker exec -it 容器名称|容器id /bin/bash
容器必须正在运行
2.3. 停止与启动容器
docker stop 容器名称|容器id
docker start 容器名称|容器id
2.4. 容器删除
# 删除指定容器
docker rm 容器名称|容器ID
# 删除多个容器
docker rm 容器名称|容器ID 容器名称|容器ID
2.5. 容器内外文件复制
如果我们需要将文件拷贝到容器内可以使用 cp 命令。
docker cp 需要拷贝的文件或目录 容器名称:容器目录
也可以将文件从容器内拷贝出来。
docker cp 容器名称:容器目录 需要拷贝的文件或目录
2.6. 查看容器ip地址
查看容器元信息
docker inspect 容器名称|容器ID
也可以直接执行下面的命令直接输出 IP 地址。
docker inspect --format='{{.NetworkSettings.IPAddress}}' 容器名称|容器ID
2.7 导出容器
docker export dockerID > /目录/ubuntu.tar
最后的是导出的压缩包名
导入容器快照
docker import 从容器快照文件中导入为镜像
2.8 容器数据卷
todo
3. docker网络使用
3.1 创建网络
docker network create custom_network # 一个基于bridge网络模式的自定义网络模式
可以通过–drvier指定网络模式,默认是bridge网络模式
3.2 查看网络模式
docker network ls
容器之间要互相通信,必须要有属于同一个网络的网卡
通过 docker network inspect custom_network 查看两容器的具体 IP 信息
3.3 通过自定义网络模式创建容器
docker run -di –name aname –net custom_network busybox
通过docker inspect 容器名称|id 查看容器的网络信息
3.4 连接到网络
docker network connect 网络名称 容器名称 # 为容器连接新的网络模式
docker inspect 容器名称|容器id
可以查看容器的网络信息
3.5 断开网络
docker network disconnect 网络名称 容器名称
再次docker inspect无法找到容器的网络信息
3.6 移除网络
如果通过某个自定义网络模式创建了容器,则该网络模式无法删除
docker network rm 网络名称
4. todo
docker-compose
容器通信