02 Docker基本管理

2.1 Docker镜像管理

2.1.1 案例:构建各类Docker镜像服务

2.1.2 案例环境

|-----|-----------------|----------------|
| 主机 | 操作系统 | 主机IP地址 |
| 服务器 | Centos7.3x86-64 | 192.168.10.100 |

2.1.3 案例拓扑原理

通过 Dockerfile 创建常见应用镜像,Dockerfile 的构成如图 2.3 所示

图 2.1 Dockerfle 构成图

2.1.4 案例需求

下面是本案例的需求:

(1)基于容器(现有镜像)创建镜像:

(2)基于模板创建镜像:

(3)基于 Dockerfile 创建常用基础服务。

1.端口映射

(1)随机映射端口
复制代码
[root@localhost ~]# docker run -d -P  httpd
4c476c9e9567c198a1a2d4f587fd49fa63bdb8efa130b9e0fd91d09692771c9c
[root@localhost ~]# docker ps
CONTAINER ID   IMAGE     COMMAND              CREATED         STATUS         PORTS                                     NAMES
4c476c9e9567   httpd     "httpd-foreground"   8 seconds ago   Up 7 seconds   0.0.0.0:32768->80/tcp, :::32768->80/tcp   hungry_williamson
(2)指定映射端口
复制代码
[root@localhost ~]# docker run  -d -p 8080:80 httpd
b967b6a5eb6c197282ef7b22406364788f398994bb3304bddcf80c635bf28f60
[root@localhost ~]# docker ps
CONTAINER ID   IMAGE     COMMAND              CREATED              STATUS              PORTS                                     NAMES
b967b6a5eb6c   httpd     "httpd-foreground"   3 seconds ago        Up 2 seconds        0.0.0.0:8080->80/tcp, :::8080->80/tcp     silly_hypatia
4c476c9e9567   httpd     "httpd-foreground"   About a minute ago   Up About a minute   0.0.0.0:32768->80/tcp, :::32768->80/tcp   hungry_williamson
[root@localhost ~]# 

2.容器互联

(1)创建源容器
bash 复制代码
[root@localhost ~]# docker run -dit --name web01 centos:7
5de53ba0244d76ef1f0e89deed62ed1c811cb252a92213166df1d86d4c7d2b6b
(2)创建接收容器
bash 复制代码
[root@localhost ~]# docker run -dit --name web02 --link web01:web01 centos:7
cc2f113d62752ef7da978df2a0c443240400b5e3b780577b7216de55bbcaf82d
[root@localhost ~]# docker ps
CONTAINER ID   IMAGE      COMMAND              CREATED              STATUS              PORTS                                     NAMES
cc2f113d6275   centos:7   "/bin/bash"          5 seconds ago        Up 5 seconds                                                  web02
5de53ba0244d   centos:7   "/bin/bash"          59 seconds ago       Up 58 seconds                                                 web01
b967b6a5eb6c   httpd      "httpd-foreground"   About a minute ago   Up About a minute   0.0.0.0:8080->80/tcp, :::8080->80/tcp     silly_hypatia
4c476c9e9567   httpd      "httpd-foreground"   3 minutes ago        Up 3 minutes        0.0.0.0:32768->80/tcp, :::32768->80/tcp   hungry_williamson
[root@localhost ~]# 
(3)测试容器互联
bash 复制代码
[root@localhost ~]# docker exec -it web02 /bin/bash
[root@cc2f113d6275 /]# ping web01
PING web01 (172.17.0.4) 56(84) bytes of data.
64 bytes from web01 (172.17.0.4): icmp_seq=1 ttl=64 time=0.127 ms
64 bytes from web01 (172.17.0.4): icmp_seq=2 ttl=64 time=0.076 ms
64 bytes from web01 (172.17.0.4): icmp_seq=3 ttl=64 time=0.071 ms
^C
--- web01 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2048ms
rtt min/avg/max/mdev = 0.071/0.091/0.127/0.026 ms

[root@cc2f113d6275 /]# cat /etc/hosts
127.0.0.1    localhost
::1    localhost ip6-localhost ip6-loopback
fe00::0    ip6-localnet
ff00::0    ip6-mcastprefix
ff02::1    ip6-allnodes
ff02::2    ip6-allrouters
172.17.0.4    web01 5de53ba0244d    //web01
172.17.0.5    cc2f113d6275
[root@cc2f113d6275 /]# 

3.容器间通信

bash 复制代码
[root@localhost ~]# docker network create my_net
1a700ddbc5f3b3d479ba0654af19fa87f647a9d1c017e618c6b2d5fe2309379c

[root@localhost ~]# docker run -itd  --name web03  centos:7
05b5bec5de8b380a614e85365e719cb6f1d0ea85b10b260bfd10094a6f49ecb6

[root@localhost ~]# docker run -itd --name pc01 --net=my_net centos:7
66896396ab6732e0d4157f5ae20644c76264d75c2789006a2f8385c0e476f1ba


[root@localhost ~]# docker run -itd --name pc02 --net=my_net centos:7
28d589d7761ca23dfec2e5cadc10e726a7736db62f3b3152a365b27166341d47
[root@localhost ~]# docker ps
CONTAINER ID   IMAGE      COMMAND              CREATED              STATUS              PORTS                                     NAMES
28d589d7761c   centos:7   "/bin/bash"          4 seconds ago        Up 3 seconds                                                  pc02
66896396ab67   centos:7   "/bin/bash"          38 seconds ago       Up 37 seconds                                                 pc01
05b5bec5de8b   centos:7   "/bin/bash"          About a minute ago   Up About a minute                                             web03
cc2f113d6275   centos:7   "/bin/bash"          6 minutes ago        Up 6 minutes                                                  web02
5de53ba0244d   centos:7   "/bin/bash"          7 minutes ago        Up 7 minutes                                                  web01
b967b6a5eb6c   httpd      "httpd-foreground"   8 minutes ago        Up 8 minutes        0.0.0.0:8080->80/tcp, :::8080->80/tcp     silly_hypatia
4c476c9e9567   httpd      "httpd-foreground"   9 minutes ago        Up 9 minutes        0.0.0.0:32768->80/tcp, :::32768->80/tcp   hungry_williamson
[root@localhost ~]# docker exec -it pc02 /bin/bash
[root@28d589d7761c /]# ping pc01
PING pc01 (172.18.0.2) 56(84) bytes of data.
64 bytes from pc01.my_net (172.18.0.2): icmp_seq=1 ttl=64 time=0.106 ms
64 bytes from pc01.my_net (172.18.0.2): icmp_seq=2 ttl=64 time=0.085 ms
^C
--- pc01 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1051ms
rtt min/avg/max/mdev = 0.085/0.095/0.106/0.014 ms

2.2 Docker数据管理

1.创建数据卷

bash 复制代码
[root@localhost ~]# docker run -itd -v /data1 -v /data2 --name web04 centos:7
72cdca8369829635566ce9b9c0a3e00a834d8b361743d56413a17754d9eeb7a1

[root@localhost ~]# docker exec -it web04 /bin/bash
[root@72cdca836982 /]# ls
anaconda-post.log  bin  data1  data2  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
[root@72cdca836982 /]# 

2.数据卷容器

bash 复制代码
[root@localhost ~]# docker run -itd --volumes-from web04 --name web05 centos:7 /bin/bash
85aa54fdd16585310c913f53803c0f1fb7ef689b481a2a42c1494b27a3a0341a
[root@localhost ~]# docker exec -it web05 /bin/bash
[root@85aa54fdd165 /]# ls
anaconda-post.log  bin  data1  data2  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
[root@85aa54fdd165 /]# 

3.挂载主句目录作为数据卷

bash 复制代码
[root@localhost ~]# docker run -dit -p 9999:80 -v /data:/usr/local/apache2/htdocs  --name web06 httpd
36eedcd5d5bfeadce269d8c3964d1bd7ebc1f238b91ba5c2502d4bb244a3cd06
[root@localhost ~]# echo "ni hao" > /d
data/ dev/  
[root@localhost ~]# echo "ni hao" > /data/index.html 
[root@localhost ~]# curl 192.168.10.100:9999
ni hao
[root@localhost ~]# 
bash 复制代码
[root@localhost html]# docker run -itd  -p 3333:80 -v /www/conf/default.conf:/etc/nginx/conf.d/default.conf  -v /www/html/:/usr/share/nginx/html -v /www/nginx/log/:/var/log/nginx  --name web15 nginx /bin/bash
52c2823baf0518a1c63f40a97f6058f035f777dd247beafd85c6aa6aba9454df
[root@localhost html]# docker exec -it web15 /bin/bash
root@52c2823baf05:/# nginx
root@52c2823baf05:/# exit
exit

[root@localhost html]# curl 192.168.10.100:3333
访问成功
[root@localhost html]# 
相关推荐
XIAOHEZIcode6 小时前
Linux系统鼠标偏移常见原因以及修复方案
linux·运维·游戏
用户0328472220701 天前
如何搭建本地yum源(上)
运维
武子康1 天前
调查研究-183 Apple container:Mac 上用轻量 VM 跑 Linux 容器,Swift 会改写本地容器体验吗?
docker·容器·apple
大树884 天前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠4 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
霸道流氓气质4 天前
领域驱动设计(DDD)在 Spring Boot 微服务中的实践指南
运维·spring boot·微服务
Inhand陈工4 天前
基于台达PLC与映翰通IG502的智慧水产养殖精准投喂与远程运维解决方案
运维·人工智能·物联网·阿里云·信息与通信
Alsn864 天前
等待学习-学习目录:Docker 容器安全攻防
学习·安全·docker
酣大智4 天前
ARP代理--工作原理
运维·网络·arp·arp代理
shushangyun_4 天前
2026年快消品B2B系统推荐:支持终端门店订货、促销政策自动化的工具?
java·运维·网络·数据库·人工智能·spring·自动化