前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Docker基础命令大全

Docker基础命令大全

作者头像
JavaEdge
发布2021-02-22 16:16:34
4320
发布2021-02-22 16:16:34
举报
文章被收录于专栏:JavaEdgeJavaEdge

1 容器生命周期管理

docker start

启动一个或多个已经被停止的容器 启动已被停止的容器myrunoob

代码语言:javascript
复制
docker start myrunoob

docker stop

停止一个运行中的容器

代码语言:javascript
复制
docker stop myrunoob

docker restart

重启容器

代码语言:javascript
复制
docker restart myrunoob

docker run

创建一个新的容器并运行一个命令

参数

  • -a stdin 指定标准输入输出内容类型,可选 STDIN/STDOUT/STDERR 三项;
  • -d 后台运行容器,并返回容器ID;

-i:–interactive 以交互模式运行容器,通常与 -t 同时使用,即使未连接STDIN也保持打开状态

-P: 随机端口映射,容器内部端口随机映射到主机的端口

-p: 指定端口映射,格式为:主机(宿主)端口:容器端口

-t: --tty Allocate a pseudo-TTY为容器重新分配一个伪输入终端,通常与 -i 同时使用;

  • –name=“nginx-lb” 为容器指定一个名称

–dns 8.8.8.8: 指定容器使用的DNS服务器,默认和宿主一致;

–dns-search example.com: 指定容器DNS搜索域名,默认和宿主一致;

-h “mars”: 指定容器的hostname;

-e username=“ritchie”: 设置环境变量;

–env-file=[]: 从指定文件读入环境变量;

–cpuset=“0-2” or --cpuset=“0,1,2”: 绑定容器到指定CPU运行;

-m :设置容器使用内存最大值;

–net=“bridge”: 指定容器的网络连接类型,支持 bridge/host/none/container: 四种类型;

–link=[]: 添加链接到另一个容器;

–expose=[]: 开放一个端口或一组端口;

–volume , -v: 绑定一个卷

本地镜像管理

image

image 文件是什么?

Docker 把应用程序及其依赖打包在 image 文件。只有通过该文件才能生成 Docker 容器。image 文件可看作是容器的模板。Docker 根据 image 文件生成容器实例。同一个 image 文件,可生成多个同时运行的容器实例。

image 是二进制文件。实际开发中,一个 image 文件往往通过继承另一个 image 文件,加上一些个性化设置而成。 比如你可以在 Ubuntu 的 image 基础上,往里面加入 Apache 服务器,形成你的新 image。

代码语言:javascript
复制
# 列出本机的所有 image 文件
$ docker image ls
代码语言:javascript
复制
# 删除 image 文件
$ docker image rm [imageName]

image 文件是通用的,一台机器的 image 文件拷贝到另一台机器,照样可以使用。一般来说,为了节省时间,我们应该尽量使用别人制作好的 image 文件,而不是自己制作。即使要定制,也应该基于别人的 image 文件进行加工,而不是从零开始制作。

为了方便共享,image 文件制作完成后,可以上传到网上仓库。Docker 的官方仓库 Docker Hub 是最重要、最常用的 image 仓库。此外,出售自己制作的 image 文件也是可以的。

其实docker image ls用如下命令亦可

images

代码语言:javascript
复制
docker images

rmi

其实docker image rm用如下命令亦可

代码语言:javascript
复制
docker rmi

tag

docker image build

从Dockerfile构建image

代码语言:javascript
复制
Usage:  docker image build [OPTIONS] PATH | URL | -

history

代码语言:javascript
复制
docker history image_id

save

load

import

container

  • 容器文件 image 文件生成的容器实例,本身也是一个文件,称为容器文件。也就是说,一旦容器生成,就会同时存在两个文件: image 文件和容器文件。而且关闭容器并不会删除容器文件,只是容器停止运行而已。

docker container ls

代码语言:javascript
复制
# 列出本机正在运行的容器
docker container ls
代码语言:javascript
复制
# 列出本机所有容器,包括终止运行的容器
docker container ls --all(-a)

上面命令的输出结果之中,包括容器的 ID。很多地方都需要提供这个 ID,比如上一节终止容器运行的docker container kill命令。

有的同学觉得 docker ps & docker ps -a 不是更方便查看 container 的运行状态吗? 因为 docker container options 是Docker 1.13中的更新,docker container ls 与 docker ps 功能相同,但语义更明确,简化了Docker的用法,所以更推荐使用新写法

-q直接显示当前所有容器的 container id

代码语言:javascript
复制
docker container ls -aq
docker container ls -a | awk {'print$1'}

过滤状态字段显示

代码语言:javascript
复制
docker container ls -f "status=exited"

docker container rm

终止运行的容器文件,依然会占据硬盘空间,可以使用docker container rm命令删除。

代码语言:javascript
复制
docker container rm [containerID]

运行上面的命令之后,再使用docker container ls -a命令,就会发现被删除的容器文件已经消失了。

全部删除

由于一个个指定 containerid 很麻烦,可以全部删除:

代码语言:javascript
复制
docker rm $(docker container ls -aq)
条件过滤删除

比如,我们想把退出的给全部删除

  • 筛选出退出状态的image 文件

直接删除

代码语言:javascript
复制
docker rm $(docker container ls -f "status=exited" -q)

docker container commit

根据容器的更改创建新image,比如在原 image 基础上安装了新的软件,那就可以上传新 image。

代码语言:javascript
复制
Usage:  docker container commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]

可简写为

代码语言:javascript
复制
docker commit

容器操作

ps

docker ps : 列出容器

inspect

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

语法

docker inspect [OPTIONS] NAME|ID [NAME|ID…]

参数

-f :指定返回值的模板文件。

-s :显示总的文件大小。

–type :为指定类型返回JSON。

获取镜像mysql:5.6的元信息。

代码语言:javascript
复制
runoob@runoob:~$ docker inspect mysql:5.6
[
    {
        "Id": "sha256:2c0964ec182ae9a045f866bbc2553087f6e42bfc16074a74fb820af235f070ec",
        "RepoTags": [
            "mysql:5.6"
        ],
        "RepoDigests": [],
        "Parent": "",
        "Comment": "",
        "Created": "2016-05-24T04:01:41.168371815Z",
        "Container": "e0924bc460ff97787f34610115e9363e6363b30b8efa406e28eb495ab199ca54",
        "ContainerConfig": {
            "Hostname": "b0cf605c7757",
            "Domainname": "",
            "User": "",
            "AttachStdin": false,
            "AttachStdout": false,
            "AttachStderr": false,
            "ExposedPorts": {
                "3306/tcp": {}
            },
...

获取正在运行的容器mymysql的 IP。

代码语言:javascript
复制
runoob@runoob:~$ docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' mymysql
172.17.0.3

镜像仓库

login

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

语法

代码语言:javascript
复制
docker login [OPTIONS] [SERVER]
docker logout [OPTIONS] [SERVER]

参数

代码语言:javascript
复制
-u
登录的用户名
-p :登陆的密码

实例

登录到Docker Hub

代码语言:javascript
复制
docker login -u 用户名 -p 密码

登出Docker Hub

代码语言:javascript
复制
docker logout

pull

push

代码语言:javascript
复制
docker push

注意 tag 必须是 hub 仓库的用户名,否则报错无权限。

但不推荐直接上传镜像,而是考虑安全问题,使用 Dockerfile 文件。即建立 hub 仓库和 GitHub 的映射,只要 GitHub 上有 Dockerfile 就会自动映射到 Dockerhub。

search

docker exec

进入运行中的容器。 比如进个 py 项目的容器:

代码语言:javascript
复制
docker exec -it image_id /bin/bash

查看 Python 的进程

代码语言:javascript
复制
ps -ef | grep python
代码语言:javascript
复制
进入容器项目的python
docker exec -it image_id python
查看 ip
docker exec -it image_id ip a

参考

  • https://www.ruanyifeng.com/blog/2018/02/docker-tutorial.html
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-12-14 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1 容器生命周期管理
    • docker start
      • docker stop
        • docker restart
          • docker run
            • 参数
        • 本地镜像管理
          • image
            • image 文件是什么?
            • images
            • rmi
            • tag
            • docker image build
            • history
            • save
            • load
            • import
          • container
            • docker container ls
            • docker container rm
            • docker container commit
        • 容器操作
          • ps
            • inspect
              • 语法
              • 参数
          • 镜像仓库
            • login
              • 语法
              • 参数
              • 实例
            • pull
              • push
                • search
                  • docker exec
                  相关产品与服务
                  容器服务
                  腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档