前言
本文主要是记录一些Docker的常用指令,方便查询,提高工作效率。
镜像篇
要想创建容器,首页得有镜像,所以本文先从镜像开始讲起。
镜像下拉
要想得到一个镜像有多种方式,即可以从dockerhub
下拉(下载),也可以从自己的镜像源,亦或者自己构建。
镜像下拉使用docker pull
命令,如下:
$ docker pull ubuntu:16.04
复制代码
查看镜像列表
当镜像下拉成功后,就可以使用该命令查看:
$ docker image ls
$ docker image ls | grep ubuntu
ubuntu 16.04 96da9143fb18 1 months ago 124MB
复制代码
删除镜像
$ docker image rm 镜像名/镜像id
复制代码
镜像上传
以上传至Dockerhub
为例,具体步骤如下:
1.在 Dockerhub
创建一个账号,假设用户名为 yangan
2.在 Dockerhub
创建一个仓库 (比如ubuntu),用于存放上传的镜像
3.终端执行docker login --username=你的用户名
进行登录
$ docker login --username=yangan
Password:
Login Succeeded
复制代码
4.对镜像打标签(需要与仓库名匹配)
# 用法
Usage: docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]
$ docker tag ubuntu:16.04 yangan/ubuntu_test:v1
复制代码
5.执行push命令上传
# username表示用户名,tagname就是标签名
$ docker push username/ubuntu_test:tagname
$ docker push yangan/ubuntu_test:v1
复制代码
镜像导入导出
1.镜像导出
$ docker save <image_name>:<tag> | gzip > <image_name>_<tag>.tar.gz
2.镜像导入
$ gunzip -c <image_name>_<tag>.tar.gz | docker load
2.也可以先解压为tar,再load
$ docker load < <image_name>_<tag>.tar
复制代码
容器篇
通过上面的步骤,我们已经有了镜像,接下来就可以创建容器了。
容器创建
容器创建使用docker run
子命令,该子命令可以传递各种参数,从而构造出不同作用的容器。
用法:
docker run [OPTIONS] IMAGE [COMMAND] [ARG…]
常见参数:
-it:为该容器分配一个可以交互的终端,默认是bash
--name:指定容器的名称,不指定会随机生成
-d:容器是否后台运行,如果不指定,容器退出后会自动停止
-p:指定映射的端口,第一个为宿主机端口,第二个为容器端口
-v:指定目录映射, 第一个是宿主机目录,第二个是容器目录
-e:指定环境变量参数
--rm:当容器执行完毕后自动删除该容器
--privileged:给予容器扩展权限。如果指定该参数,则容器内的root用户拥有真正的root权限;否则,容器内的root用户只是外部的一个普通用户权限。
复制代码
常见demo:
# 1.默认终端为 bash
$ docker run -it ubuntu:16.04
root@efe0291ff0c3:/# echo $SHELL
/bin/bash
# 2.指定终端
$ docker run -it ubuntu:16.04 /bin/sh
# echo $0
/bin/sh
# 3.指定用户名
$ docker run -it --name ubuntu123 ubuntu:16.04
root@b650d1846d40:/#
# 4.指定其他参数
$ docker run -it -d --name ubuntu234 -p 12007:12007 -p 9001:9001 -v /data:/data -e PYTHONIOENCODING=utf-8 ubuntu:16.04
复制代码
查看容器列表
# 查看正在运行的容器
$ docker ps
$ docker container ls
# 查看所有容器
$ docker ps -a
$ docker container ls --all
复制代码
删除容器
$ docker container rm 容器名/容器id
# 删除没有运行的容器和不活跃的镜像
$ docker system prune
复制代码
进入容器
# 1.进入容器,使用exit命令退出容器不会杀死容器
$ docker exec -it container_name /bin/bash
# 2.进入容器,使用exit命令退出容器会杀死容器
$ docker attach container_name
复制代码
容器打包
其实构建镜像除了上面提到的Dockerfile
,也可以在容器的基础上直接打包,使用的命令是 docker commit
。
$ docker commit ubuntu_test ubuntu_test:v1
复制代码
如上,该命令的意思是将 ubuntu_test
容器打包成一个镜像 ubuntu_test:v1
,v1 是标签,一般用于指定版本。打包这个过程并不会影响原有容器。
容器文件拷贝
# 1.拷贝容器的文件到宿主机 (wp2md为容器名)
$ docker cp wp2md:/exitwp/text /home/xxx/Documents/
# 2.拷贝宿主机文件到容器
$ docker cp /home/xxx/Documents/test.md wp2md:/exitwp/text
复制代码
容器日志查看
$ docker logs -f -t --tail 行数 容器名
复制代码
整体信息篇
docker info
该命令主要用于查看本机 Docker
的基本信息,如版本、容器数量、镜像数量、镜像源等。
$ docker info
Client:
Debug Mode: false
Server:
Containers: 18
Running: 8
Paused: 0
Stopped: 10
Images: 30
...
复制代码
docker stats
该命令主要用于查看容器的资源使用情况,比如占用的CPU、内存等。默认情况下,该命令每隔 1 秒钟会刷新一次,即不断输出,直到你中断。
dea2e5f26346 linux-test 0.00% 23.41MiB / 1.952GiB 1.17% 14.3MB / 328kB 116MB / 256MB 2
ad1ad315d73f mysql-test 0.15% 175.6MiB / 1.952GiB 8.79% 10.7kB / 0B 30.6MB / 4.1kB 27
...
复制代码
如果只想输出当前的状态信息,则需要加上 --no-stream
参数
docker stats –no-stream
如果要查看指定容器的信息,则需要加上 registry
docker stats –no-stream registry 容器id
docker system
该命令主要用于管理Docker,有四个子命令,我一般使用docker system df
查看磁盘占用情况:
举例如下:
$ docker system df
TYPE TOTAL ACTIVE SIZE RECLAIMABLE
Images 18 9 6.993GB 3.749GB (53%)
Containers 12 5 4.051GB 584MB (14%)
Local Volumes 14 4 2.965GB 938MB (31%)
Build Cache 0 0 0B 0B
复制代码
写在最后
各位老板,创作不易,更需不断地磨练和总结,欢迎关注我,我是言淦,为你分享各种实用的编程知识与编程技巧,你们的点赞与关注是我前进和创作的最大动力!!