docker学习笔记-docker容器命令

获取镜像

docker pull ubuntu

运行命令:(run)

docker run ubuntu:15.10 /bin/echo "Hello world"

让 docker 运行的容器实现"对话"的能力: (-i -t)

runoob@runoob:~$ docker run -i -t ubuntu:15.10 /bin/bash
root@0123ce188bd8:/#

退出容器:

exit

启动容器(后台模式 -d)

docker run -d ubuntu:15.10 /bin/sh -c "while true; do echo hello world; sleep 1; done"

确认容器有在运行

docker ps 或 docker ps -a

容器内的标准输出

docker logs <CONTAINER ID | NAMES>

停止容器

docker stop <CONTAINER ID | NAMES>

通过 docker ps 查看,容器已经停止工作

启动或重启已停止运行的容器

docker start | restart <CONTAINER ID | NAMES>

进入容器

在使用 -d 参数时,容器启动后会进入后台。此时想要进入容器,可以通过以下指令进入:

docker attach <CONTAINER ID | NAMES>

注意: 如果从这个容器退出,会导致容器的停止

docker exec -it <CONTAINER ID | NAMES> /bin/bash

注意: 如果从这个容器退出,容器不会停止

删除容器

docker rm -f 1e560fca3906

# 清理掉所有处于终止状态的容器
docker container prune

导出容器

docker export 1e560fca3906 > ubuntu.tar

导入容器

cat docker/ubuntu.tar | docker import - test/ubuntu:v1

也可以通过指定 URL 或者某个目录来导入

docker import http://example.com/exampleimage.tgz example/imagerepo

实操:WEB 应用容器

# 拉取镜像
docker pull training/webapp

# -P:将容器内部使用的网络端口随机映射到我们使用的主机上
docker run -d -P training/webapp python app.py
或
docker run -d -p 5000:5000 training/webapp python app.py

# 查看指定 (ID 或者名字)容器的某个确定端口映射到宿主机的端口号
docker port bf08b7f2cd89

# -f: 让 docker logs 像使用 tail -f 一样来输出容器内部的标准输出
docker logs -f bf08b7f2cd89

# 使用 docker top 来查看容器内部运行的进程
docker top wizardly_chandrasekhar

# 使用 docker inspect 来查看 Docker 的底层信息
# 它会返回一个 JSON 文件记录着 Docker 容器的配置和状态信息
docker inspect wizardly_chandrasekhar

# 停止容器
docker stop wizardly_chandrasekhar

# 重启容器
docker start wizardly_chandrasekhar

# docker ps -l 查询最后一次创建的容器
docker ps -l

# 正在运行的容器,我们可以使用 docker restart 命令来重启
docker restart wizardly_chandrasekhar

# 我们可以使用 docker rm 命令来删除不需要的容器
docker rm wizardly_chandrasekhar  

删除容器时,容器必须是停止状态,否则会报如下错误
Error response from daemon: You cannot remove a running container 
bf08b7f2cd897b5964943134aa6d373e355c286db9b9885b1f60b6e8f82b2b85. Stop the container 
before attempting removal or force remove

网络端口映射

我们可以指定容器绑定的网络地址,比如绑定 127.0.0.1

docker run -d -p 127.0.0.1:5001:5000 training/webapp python app.py

默认都是绑定 tcp 端口,如果要绑定 UDP 端口,可以在端口后面加上 /udp

docker run -d -p 127.0.0.1:5000:5000/udp training/webapp python app.py

Docker 容器互联

容器命名

当我们创建一个容器的时候,docker 会自动对它进行命名。另外,我们也可以使用 --name 标识来命名容器

docker run -d -P --name runoob training/webapp python app.py

新建网络

docker network create -d bridge test-net

# 查看一下新建网络
docker network ls

连接容器

# 运行一个容器并连接到新建的 test-net 网络:
docker run -itd --name test1 --network test-net ubuntu /bin/bash

# 打开新的终端,再运行一个容器并加入到 test-net 网络:
docker run -itd --name test2 --network test-net ubuntu /bin/bash

下面通过 ping 来证明 test1 容器和 test2 容器建立了互联关系。

如果 test1、test2 容器内中无 ping 命令,则在容器内执行以下命令安装 ping(即学即用:可以在一个容器里安装好,提交容器到镜像,在以新的镜像重新运行以上俩个容器)。

apt-get update
apt install iputils-ping

 在 test1 容器输入以下命令:

在 test2 容器输入以下命令:

这样,test1 容器和 test2 容器建立了互联关系。

如果你有多个容器之间需要互相连接,推荐使用 Docker Compose

配置 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 信息:

# --rm:容器退出时自动清理容器内部的文件系统。
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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

窦再兴

你的鼓励是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值