1、docker 的安装
curl -sSL https://get.daocloud.io/docker | sh
2、启动docker
sudo systemctl start docker
3、通过运行 hello-world 映像来验证是否正确安装了 Docker Engine-Community
sudo docker run hello-world
4、设置docker 开机启动
docker systemctl enable docker
5、卸载 docker
删除安装包:yum remove docker-ce
删除镜像、容器、配置文件等内容:rm -rf /var/lib/docker
6、启动容器(交互式运行容器)
docker run -it ubuntu /bin/bash
docker run -i -t ubuntu:15.10 /bin/bash
7、启动容器(后台模式)
docker run -d ubuntu:15.10 /bin/sh -c "while true; do echo hello world; sleep 1; done"
docker run -itd --name ubuntu-test ubuntu /bin/bash
8、我们可以通过运行 exit 命令或者使用 CTRL+D 来退出容器
9、查看容器内日志
docker logs 2b1b7a428627
docker logs -f bf08b7f2cd89 # -f: 让 docker logs 像使用 tail -f 一样来输出容器内部的标准输出
10、停止容器
docker stop 2b1b7a428627
11、查看运行中的容器
docker ps
12、查看所有的容器
docker ps -a
13、获取镜像
docker pull hello-world
16、启动一个已经停止的容器
docker start b750bbbcfd88
17、停止一个容器
docker stop b750bbbcfd88
18、重启一个容器
docker restart b750bbbcfd88
19、进入容器
docker exec -it 243c32535da7 /bin/bash
20、导出容器 1e560fca3906 快照到本地文件 ubuntu.tar
docker export 1e560fca3906 > ubuntu.tar
21、将快照文件 ubuntu.tar 导入到镜像 test/ubuntu:v1
cat docker/ubuntu.tar | docker import - test/ubuntu:v1
也可以通过指定 URL 或者某个目录来导入
docker import http://example.com/exampleimage.tgz example/imagerepo
22、删除容器
docker rm -f 1e560fca3906
docker rm wizardly_chandrasekhar
23、运行一个 web 应用
docker pull training/webapp # 载入镜像
docker run -d -P training/webapp python app.py # -d:让容器在后台运行。 -P:将容器内部使用的网络端口随机映射到我们使用的主机上。
24、通过 -p 参数来设置不一样的端口
docker run -d -p 5000:5000 training/webapp python app.py
# -P :是容器内部端口随机映射到主机的高端口。 -p : 是容器内部端口绑定到指定的主机端口。
docker run -d -p 127.0.0.1:5000:5000/udp training/webapp python app.py
# 指定搬定地址,这样我们就可以通过访问 127.0.0.1:5001 来访问容器的 5000 端口。上面的例子中,默认都是绑定 tcp 端口,如果要绑定 UDP 端口,可以在端口后面加上 /udp。
25、查看容器端口的映射情况
docker port 61986b896237
docker port adoring_stonebraker 5000
26、使用 docker inspect 来查看 Docker 的底层信息。它会返回一个 JSON 文件记录着 Docker 容器的配置和状态信息
docker inspect 61986b896237
27、查询最后一次创建的容器
docker ps -l
28、列出镜像列表
docker images
29、加载指定版本的镜像,加载版本为15.10的ubuntu系统镜像来运行容器时
docker run -t -i ubuntu:15.10 /bin/bash
30、获取一个新的镜像
docker pull ubuntu:13.10
docker pull httpd
31、查找镜像
docker search httpd
32、运行镜像
docker run httpd
33、删除镜像
docker rmi hello-world
34、创建镜像:当我们从 docker 镜像仓库中下载的镜像不能满足我们的需求时,我们可以通过以下两种方式对镜像进行更改。
1、从已经创建的容器中更新镜像,并且提交这个镜像
2、使用 Dockerfile 指令来创建一个新的镜像
35、更新镜像后提交新镜像
docker commit -m="has update" -a="chenchaogui" 4aacb26de6bd chenchaogui/ubuntu:v2
# -m: 提交的描述信息 -a: 指定镜像作者 4aacb26de6bd:容器 ID chenchaogui/ubuntu:v2 指定要创建的目标镜像名
36、构建镜像
通过Dockerfile构建镜像
docker build -t chenchaogui/centos:6.7 . # -t :指定要创建的目标镜像名 . :Dockerfile 文件所在目录,可以指定Dockerfile 的绝对路径
运行构建的镜像:docker run -t -i chenchaogui/centos:6.7 /bin/bash
37、设置镜像标签为dev
docker tag c7beb8e317c7 chenchaogui/centos:dev
38、容器命名:当我们创建一个容器的时候,docker 会自动对它进行命名。另外,我们也可以使用 --name 标识来命名容器
docker run -d -P --name chenchaogui training/webapp python app.py
39、创建一个新的Docker网络
docker network create -d bridge test-net # -d:参数指定 Docker 网络类型,有 bridge、overlay。其中 overlay 网络类型用于 Swarm mode
40、运行一个容器并连接到新建的 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
41、安装ping命令
apt-get update
apt install iputils-ping
42、配置Docker的DNS
我们可以在宿主机的 /etc/docker/daemon.json 文件中增加以下内容来设置全部容器的 DNS:
{
"dns" : [
"114.114.114.114",
"8.8.8.8"
]
}
43、在指定容器配置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。