1.Docker 基础概念及命令
Docker 基本概念
Docker 三个重要概念:仓库 (Repository)、镜像 (image) 和 容器 (Container)
例:docker run --name MyWordPress --link db:mysql -p 8080:80 -d wordpress
Docker 指令的基本用法:
docker + 命令关键字(COMMAND) + 一系列的参数
基础命令
#守护进程的系统资源设置
docker info
#仓库的查询
docker search 镜像名称
#仓库的下载
docker pull 镜像名称
#镜像的查询
docker images 镜像名称
docker images 镜像名称:版本号/镜像ID号 #唯一索引查询
#镜像的删除
docker rmi 镜像名称
#镜像的强制删除,慎用,因为强制删掉镜像,容器也就不会正常运行
docker rmi -f 镜像名称/镜像名称:版本号
#容器的删除
docker rm 容器名称
#容器的查询
docker ps
选项:-a #查看所有
#容器的创建启动
docker run
#容器启动停止
docker start/stop
Docker 指令除了单条使用外,还支持赋值、解析变量、嵌套使用
docker rm -f $(docker ps -a -q)
-q : 简要化输出
2.单一容器管理
每个容器被创建后,都会分配一个 CONTAINER ID 作为容器的唯一标示,后续对容器的启动、停止、修改、删除等所有操作,都是通过 CONTAINER ID 来完成,偏向于数据库概念中的主键
#查看,所写的地方完全打开展示
$ docker ps --no-trunc
#停止
$ docker stop/start CONTAINERID
#通过容器别名启动/停止
$ docker start/stop MywordPress
#查看容器所有基本信息
$ docker inspect 容器名称name
#查看容器日志
$ docker logs 容器名称name
#查看容器所占用的系统资源
$ docker stats 容器名称name
#容器执行命令
$ docker exec 容器名 容器内执行的命令
#登入容器的bash
$ docker exec -it 容器名 /bin/bash
i : 交互接口
t : tty接口
exit #退出
run 基础命令
--restart=always #容器的自动启动
-h x.xx.xx #设置容器主机名
--dns xx.xx.xx.xx #设置容器使用的 DNS 服务器
--dns-search #DNS搜索设置
--add-host hostname:IP #注入 hostname <> IP 解析
--rm #服务停止时自动删除
# 示例
1
[root@localhost ~]# docker run --name txb --restart=always -d 2c23e
85b52ab3dcdb9a3f93893eed1432d20ba75a232a61815c473f924b270f5a413d
[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
85b52ab3dcdb 2c23e "/bin/sh -c 'tail ..." 10 seconds ago Up 8 seconds txb
[root@localhost ~]# systemctl restart docker
systemctl restart docker.service
[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
85b52ab3dcdb 2c23e "/bin/sh -c 'tail ..." 2 minutes ago Up 1 second txb
2
[root@localhost ~]# docker run --name lhl -h lili -d a05f
703c13c8d2465b07c3835c13223f4c6a8da818e117e1e81dc26ac9ecf05dda6a
[root@localhost ~]# docker exec -it lhl /bin/bash
root@lili:/var/www/html# hostname
lili
root@lili:/var/www/html# exit
exit
3
[root@localhost ~]# docker run --name lhllhl --add-host www.ll.com:192.168.1.111 -d a05f
d6a5a1900b7874096e7f28dc41c7e42f1156e4707d659d62eb31c5f77f8fe360
[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d6a5a1900b78 a05f "docker-entrypoint..." 10 seconds ago Up 9 seconds 80/tcp lhllhl
[root@localhost ~]# docker exec -it lhllhl /bin/bash
root@d6a5a1900b78:/var/www/html# 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
192.168.1.111 www.ll.com
172.17.0.5 d6a5a1900b78
4 --rm #服务停止时自动删除
[root@localhost ~]# docker run --name aaaaa --rm -h www.txb.com -d a05f
26ccfa996c0b645691137b0e27f7fd541a740c2760a5375cfbac11defba0997d
[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
26ccfa996c0b a05f "docker-entrypoint..." 5 seconds ago Up 4 seconds 80/tcp aaaaa
[root@localhost ~]# docker stop $(docker ps -a -q)
26ccfa996c0b
[root@localhost ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
3.多容器管理 —— Docker-Compose
docker 三剑客
docker-compose 基于 yaml 格式资源清单
docker-swarm
docker-machine
Docker 提倡理念是 “一个容器一个进程”,假设一个服务需要由多个进程组成,就需要多个容器组成一个系统,相互分工和配合对外提供完整服务
比如:博客系统
组件1:mariadb
组件2:WordPress 的 apache web
在启动容器时,同一台主机下如果两个容器之间需要由数据交流,使用 --link 选项建立两个容器之间的互联,前提是建立是 mariadb 已经开启
比如:docker start db
docker sta