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停止容器
docker stop
通过 docker ps 查看,容器已经停止工作
启动或重启已停止运行的容器docker start | restart进入容器
在使用 -d 参数时,容器启动后会进入后台。此时想要进入容器,可以通过以下指令进入:
docker attach
注意: 如果从这个容器退出,会导致容器的停止
docker exec -it/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.pyDocker 容器互联 容器命名
当我们创建一个容器的时候,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



