安装引擎
yum install docker -y
管理引擎
systemctl start docker
systemctl stop docker
systemctl restart docker
systemctl status docker
systemctl enable docker
systemctl disable docker
管理火墙
systemctl start firewalld
systemctl stop firewalld
卸载引擎
。。。
搜索镜像
docker search 关键字
载入镜像
docker pull docker.io/rpmbuild/centos7
查询镜像
docker images
docker inspect 镜像ID
加签镜像
docker tag 仓库名称:[标签] 新仓库名称:[新标签]
删除镜像
docker rmi 仓库名称:标签
docker rmi 镜像ID
更新镜像
进入容器:docker exec -it b29df0f02d1b /bin/bash
执行更新:apt-get update
执行提交:docker commit -m="has update" -a="lihg" b29df0f02d1b lihg/cenos7:cenos7v2
构建镜像
。。。。。。
临时模式容器
docker run centos:centos7 /bin/echo "Hello world"
交互模式容器
docker run -i -t centos:centos7 /bin/bash
docker run -it centos:centos7 /bin/bash
-i: 允许对容器内的标准输入 (STDIN) 进行交互。
-t: 在容器内指定一个伪终端。
后台模式容器
docker run -d centos:centos7 /bin/sh -c "while true; do echo hello world; sleep 1; done"
交互、终端、后台:
docker run -itd --name centos7-test centos:centos7 /bin/bash
输出详情介绍:
CONTAINER ID: 容器 ID。
IMAGE: 使用的镜像。
COMMAND: 启动容器时运行的命令。
CREATED: 容器的创建时间。
STATUS: 容器状态。
PORTS: 容器的端口信息和使用的连接类型(tcp\udp)。
NAMES: 自动分配的容器名称。
状态有7种:
created(已创建)
restarting(重启中)
running 或 Up(运行中)
removing(迁移中)
paused(暂停)
exited(停止)
dead(死亡)
在宿主主机内,查看容器内的标准输出:
docker logs 32924edae1b8
docker logs kind_lalande
启动容器
docker start b29df0f02d1b
停止容器
docker stop 32924edae1b8
docker stop kind_lalande
重启容器
docker restart b29df0f02d1b
查看所有容器
docker ps -a
查看所有容器
docker ps
查看最后一次创建的容器
docker ps -l
进入容器:
docker exec -it b29df0f02d1b /bin/bash
退出容器:
exit 或 CTRL+D
导出容器到文件
docker export b29df0f02d1b > centos7-test.tar
导入镜像从文件
cat centos7-test.tar | docker import - centos70:centos702
docker import http://example.com/exampleimage.tgz centos73:centos731
删除容器
docker rm -f b29df0f02d1b
清理掉所有处于终止状态的容器
docker container prune
docker search training/webapp #搜索镜像
docker pull docker.io/training/webapp #载入镜像
docker run -d -P docker.io/training/webapp python app.py #运行容器
-d:让容器在后台运行。
-P:将容器内部使用的网络端口随机映射到我们使用的主机上。
docker ps #查看容器
http://192.168.3.236:32768/ #使用容器
Hello world!
docker stop b31ff5de80c0
docker rm -f b31ff5de80c0
docker run -d -p 5000:5000 training/webapp python app.py
http://192.168.3.236:5000/
Hello world!
查看容器的映射端口:
docker port 0c6fe31457cf
docker port upbeat_kowalevski
查看容器的标准输出:
docker logs -f 0c6fe31457cf
查看容器的应用进程:
docker top 0c6fe31457cf
宿主机IP地址:192.168.3.236
给Docker建立一个桥:
docker network create -d bridge bridge-001
运行一个容器并连接到桥
docker run -itd --name bridge-001-a1 --network bridge-001 docker.io/training/webapp /bin/bash
docker run -itd --name bridge-001-b2 --network bridge-001 docker.io/training/webapp /bin/bash
docker exec -it bridge-001-a1 /bin/bash
docker exec -it bridge-001-b2 /bin/bash
ping bridge-001-a1
ping bridge-001-b2
???????????????????????
apt-get update
apt install iputils-ping
???????????????????????
配置 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 -h testdns docker.io/training/webapp cat etc/resolv.conf
???
docker start bridge-001-a1
ping www.baidu.com
手动指定容器的DNS:
docker run -itd --rm -h testdnsserver --dns=114.114.114.114 --dns-search=www.baidu.com docker.io/training/webapp
参数说明:
--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。
Docker 仓库管理