[Docker系列]Docker命令大全

263 阅读5分钟

说在前面的话

       Docker是一个开源的应用容器引擎,让开发者可以打包应用和相关的依赖到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化。容器是完全使用沙箱机制,互相之间不会有任何的接口。Dokcer就像船搬运货物时一样,需要先拆了再装上。如果能把一切东西都放在一个集装箱里,我们就可以只搬运箱子,里面的货物也会随着移动。在我们实际开发中就会经常出现这种情况,某个功能在测试环境可以,但是到了生产环境就不行。Docker可以解决这些问题,保存开发环境和生产环境一致。

下面我们就走进Docker,先来看一个mysql容器的启动命令

docker run -p 3306:3306 --name mysql -v /data/mysql/data:/var/lib/mysql  -e MYSQL_ROOT_PASSWORD=123456  -d mysql:5.7

可以看到mysql已经起起来了,并且我们通过密码123456连上了mysql

上面的命令执行了什么操作呢,看了下面的介绍我们就会有一个清晰的认识了!

环境信息:

docker info :显示docker系统信息,包含镜像和容器数

docker version :显示docker版本信息

容器生命周期管理:

docker run :运行容器的命令

docker start :启动一个或者多个已经被停止的容器

docker restart :重启容器

docker stop :停止一个运行中的容器

docker kill : 杀掉一个运行中的容器

docker rm : 删除一个或者多个容器

docker pause : 暂停容器中所有的进程

docker unpause :回复容器中所有的进程

docker create :创建一个新的容器但是不启动它

docker exec :在运行的容器中执行命令

举例:docker exec -it 容器名或者容器ID /bin/bash 进入到容器内部,然后通过快捷键ctrl+p+q可以从容器退出到宿主机

容器操作:

docker ps :列出容器

docker inspect :获取容器/镜像的元数据

docker top :查看容器中运行的进程信息,支持ps命令

docker attach :连接到正在运行中的容器

docker wait :阻塞运行直到容器停止,然后打印出它的退出代码

docker export :将文件系统作为一个tar归档文件导出STDOUT

docker port :列出指定的容器的端口映射

docker logs :获取容器的日志

docker events :从服务器获取实时事件

容器rootfs命令:

docker commit :从容器创建一个新的镜像

docker cp :用于容器与主机之间的数据拷贝

docker diff :检查容器里文件结构的更改

容器镜像仓库:

docker login :登录到一个docker镜像仓库,如果未指定镜像仓库地址,默认为官方仓库Docker Hub

docker logout :登出一个docker镜像仓库,如果未指定镜像仓库地址,默认为官方仓库Docker Hub

docker pull :从镜像仓库中拉取或者更新指定镜像

docker push :将本地的镜像上传到镜像仓库,首先要登录到镜像仓库

docker search :从镜像仓库中查找镜像

本地镜像管理:

docker build :用于使用Dockerfile创建镜像

docker images :列出本地镜像

docker rmi :删除本地一个或者多个镜像

docker tag :标记本地镜像,将其归入某一仓库

docker save :将指定镜像保存成tar归档文件

docker import :从归纳文档中创建镜像

docker load :导入使用docker save命令导出的镜像

docker history : 查看指定镜像的创建历史

docker run的OPTIONS参数说明

-d :指定容器运行于前台还是后台,默认是false(前台)

-i :打开STDIN,用户控制台交互

-t :分配tty设备,该可以支持终端登录,默认为false

-u :指定容器的用户

-a :登录容器(必须是以docker run -d启动的容器)

-w :指定容器的工作目录

-c :设置容器CPU权重,在CPU共享场景使用

-e :指定环境变量

-m :指定容器的内存上限

-p :指容器暴露的端口

-h :指定容器的主机名

-v :给容器挂载存储卷,挂载到宿主机的某个目录

--volume-from :给容器挂载其他容器上的卷

--cap-add :添加权限

--cap-drop :删除权限

--cidfile :运行容器后,在指定文件中写入容器PID值,是一种典型的监控系统用法

--cpuset :设置容器可以使用哪些cpu,此参数可以用来设置某些容器单独使用cpu

--device :添加主机设备给容器,相当于设备直通

--dns :指定容器的dns服务器

--dns-search :指定容器的dns搜索域名,写到容器的etc/resolv.conf文件

--entrypoint :覆盖image的入口点

--env-file :指定环境变量文件,文件格式为每行一个环境变量

--expose :指定容器暴露的端口

--link :指定容器间的关联,使用其他容器的IP、env等信息

--lxc-conf :指定容器的配置文件,只有在指定-exec-driver=lxc时使用

--name :指定容器的名字

--net="" :相关选项如下

  1. bridge:Docker默认的网络设置,此模式会为每一个容器分配一个Network Namespace、设置IP等,并将主机上的Docker容器连接到一个虚拟网桥上;
  2. host:容器使用主机的网络;
  3. containser:NAME_or_ID:使用其他容器的网络,共享IP和PORT等网络资源;
  4. none:容器使用自己独立的网络,但并没有对其进行任何网络设置,如分配veth pair和网桥连接、配置等。

--privileged=false :指定容器是否为特权容器,特权容器拥有所有的capabilities

--restart="" :指定容器停止后的重启策略

  1. no:不重启;
  2. on-failure容器故障退出时重启;
  3. always:容器退出时总是重启。

--rm=false :指定容器停止后自动删除容器(不支持以docker run -d 启动的容器)

--sign-proxy=true :设置由代理接受并处理信息,但SIGCHLD、SIGSTOP和SIGKILL不能被代理