写点什么

Docker 容器的使用

  • 2022-11-09
    河南
  • 本文字数:1777 字

    阅读完需:约 6 分钟



runoob@runoob:~$ docker run ubuntu:15.10 /bin/echo "Hello world"Hello world
复制代码


对参数进行解析


  • docker: Docker 的二进制执行文件。

  • run: 与前面的 docker 组合来运行一个容器。

  • ubuntu:15.10 指定要运行的镜像,Docker 首先从本地主机上查找镜像是否存在,如果不存在,Docker 就会从镜像仓库 Docker Hub 下载公共镜像。

  • /bin/echo "Hello world": 在启动的容器里执行的命令



运行交互式的容器

docker -it 可以让系统弹出一个伪造终端,它类似于个极简的操作系统,很多功能会被减少。


  • -t: 在新容器内指定一个伪终端或终端。

  • -i: 允许你对容器内的标准输入 (STDIN) 进行交互。



启动容器(后台模式)

加一个-d 返回一串长字符没有交互命令窗口

Docker ps

可以查看相关信息。


CONTAINER ID: 容器 ID。


IMAGE: 使用的镜像。


COMMAND: 启动容器时运行的命令。


CREATED: 容器的创建时间。


STATUS: 容器状态。


状态有 7 种:


  • created(已创建)

  • restarting(重启中)

  • running 或 Up(运行中)

  • removing(迁移中)

  • paused(暂停)

  • exited(停止)

  • dead(死亡)


PORTS: 容器的端口信息和使用的连接类型(tcp\udp)。


NAMES: 自动分配的容器名称。



获取镜像

docker pull 镜像名
复制代码

启动容器

docker run -it 镜像名 /bin/bash
复制代码


进行有终端交互的命令,退出终端用 exit

检测容器的状态

docker ps -a
复制代码

进入容器

docker attach例子:docker attach 1e560fca3906 
docker exec:推荐大家使用 docker exec 命令,因为此命令会退出容器终端,但不会导致容器的停止。例子:docker exec -it 容器名 /bin/bash
复制代码

导出和导入容器

docker export 容器名>包.tar将快照文件 ubuntu.tar 导入到镜像 test/ubuntu:v1cat docker/ubuntu.tar | docker import - test/ubuntu:v1
复制代码

删除容器

docker rm 容器名强制删除docker rm -f 容器名批量删除docker rm -f $(docker ps -a -q)
复制代码

设置端口信息

    -P :是容器内部端口随机映射到主机的端口。    -p : 是容器内部端口绑定到指定的主机端口。
复制代码

查看日志

docker logs -f 容器名
复制代码

查看容器进程

docker top 容器名
复制代码

检查 WEB 应用程序

docker inspect例子:runoob@runoob:~$ docker inspect wizardly_chandrasekhar[    {        "Id": "bf08b7f2cd897b5964943134aa6d373e355c286db9b9885b1f60b6e8f82b2b85",        "Created": "2018-09-17T01:41:26.174228707Z",        "Path": "python",        "Args": [            "app.py"        ],        "State": {            "Status": "running",            "Running": true,            "Paused": false,            "Restarting": false,            "OOMKilled": false,            "Dead": false,            "Pid": 23245,            "ExitCode": 0,            "Error": "",            "StartedAt": "2018-09-17T01:41:26.494185806Z",            "FinishedAt": "0001-01-01T00:00:00Z"        },......
复制代码

Docker 容器互联

新建 Docker 网络


docker network create -d bridge 网络名
复制代码


-d:参数指定 Docker 网络类型,有 bridge、overlay。

连接容器

运行一个容器并连接到新建的 test-net 网络:


$ docker run -itd --name test1 --network 网络名 ubuntu /bin/bash
复制代码

配置 DNS

我们可以在宿主机的 /etc/docker/daemon.json 文件中增加以下内容来设置全部容器的 DNS:


{  "dns" : [    "114.114.114.114",    "8.8.8.8"  ]}
复制代码


设置后,启动容器的 DNS 会自动配置为 114.114.114.114 和 8.8.8.8。


配置完,需要重启 docker 才能生效。


查看容器的 DNS 是否生效可以使用以下命令,它会输出容器的 DNS 信息:


$ docker run -it --rm  ubuntu  cat etc/resolv.conf
复制代码


手动指定容器的配置


如果只想在指定的容器设置 DNS,则可以使用以下命令:


$ docker run -it --rm -h host_ubuntu  --dns=114.114.114.114 --dns-search=test.com ubuntu
复制代码


参数说明:


--rm:容器退出时自动清理容器内部的文件系统。


-h HOSTNAME 或者 --hostname=HOSTNAME: 设定容器的主机名,它会被写到容器内的 /etc/hostname 和 /etc/hosts。


--dns=IP_ADDRESS: 添加 DNS 服务器到容器的 /etc/resolv.conf 中,让容器用这个服务器来解析所有不在 /etc/hosts 中的主机名。


--dns-search=DOMAIN: 设定容器的搜索域,当设定搜索域为 .example.com 时,在搜索一个名为 host 的主机时,DNS 不仅搜索 host,还会搜索 host.example.com。

发布于: 刚刚阅读数: 3
用户头像

还未添加个人签名 2022-11-01 加入

还未添加个人简介

评论

发布
暂无评论
Docker容器的使用_容器_我是一个茶壶_InfoQ写作社区