Docker安装和配置
Docker学习
学习网址 : RUNOOB
CentOS 系列安装 Docker
Docker 支持 CentOS6 及以后的版本。
CentOS6
对于 CentOS6,可以使用 EPEL 库安装 Docker,命令如下
yum install http://mirrors.yun-idc.com/epel/6/i386/epel-release-6-8.noarch.rpm
yum install docker-io
CentOS7
CentOS7 系统 CentOS-Extras 库中已带 Docker,可以直接安装:
yum install docker
安装之后启动 Docker服务,并让它随系统启动自动加载。
service docker start
chkconfig docker on
配置Docker中国区官方镜像
修改配置文件
使用vi修改 /etc/docker/daemon.json 文件并添加上"registry-mirrors": ["
https://registry.docker-cn.com"],如下:
vi /etc/docker/daemon.json
1 | { |
应用修改和重启docker
systemctl daemon-reload
systemctl restart docker
操作Docker 常用命令
使用 docker images
显示本地已有的镜像。
【-a 查看所有】
查看容器启动情况 docker ps
删除容器 docker rm mynginx
删除镜像 docker rmi imageName
查看容器日志 docker logs -f -t --tail=10 mynginx
【
–since : 此参数指定了输出日志开始日期,即只输出指定日期之后的日志。
-f : 查看实时日志
-t : 查看日志产生的日期
-tail=10 : 查看最后的10条日志。
mynginx : 容器名称
】
进入容器 sudo docker exec -it c4bfc0e2a5aa /bin/bash
Docker 快捷命令
- 清理所有Exited 的 容器
docker rm $(docker ps -q -f status=exited)
- 清理所有tag为nong 的镜像
docker images|grep none|awk '{print $3 }'|xargs docker rmi
- 清理所有
: 的镜像 docker rmi $(docker images -f "dangling=true" -q)
Docker Run 常用命令
1 | Usage: docker run [OPTIONS] IMAGE [COMMAND] [ARG...] |
Docker Compose
安装Docker Compose
-
下载
sudo curl -L "https://github.com/docker/compose/releases/download/1.24.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
-
增加权限
sudo chmod +x /usr/local/bin/docker-compose
-
检查是否安装成功
docker-compose -v
常用命令
-
列出所有容器
docker-compose ps
-
查看日志
docker-compose logs
-
打印绑定的公共端口,下面命令可以输出 eureka 服务 8761 端口所绑定的公共端口
docker-compose port eureka 8761
\ -
构建或者重新构建服务
docker-compose build
-
启动指定的服务已存在的容器
docker-compose start eureka
-
停止已运行的服务的容器
docker-compose stop eureka
-
删除指定服务的容器
docker-compose rm eureka
-
构建、启动容器
docker-compose up
-
通过发送 SIGKILL 信号来停止指定服务的容器
docker-compose kill eureka
-
下载服务镜像
docker-compose pull eureka
-
设置指定服务运气容器的个数,以 service=num 形式指定
docker-compose scale user=3 movie=3
-
在一个服务上执行一个命令
docker-compose run web bash
-
docker-compose.yml 属性
- version:指定 docker-compose.yml 文件的写法格式
- services:多个容器集合
- build:配置构建时,Compose 会利用它自动构建镜像,该值可以是一个路径,也可以是一个对象,用于指定 Dockerfile 参数
1
2
3
4
5
6
7build: ./dir
---------------
build:
context: ./dir
dockerfile: Dockerfile
args:
buildno: 1- command:覆盖容器启动后默认执行的命令
1
2
3command: bundle exec thin -p 3000
----------------------------------
command: [bundle,exec,thin,-p,3000]- dns:配置 dns 服务器,可以是一个值或列表
1
2
3
4
5dns: 8.8.8.8
------------
dns:
- 8.8.8.8
- 114.114.114.114-
dns_search:配置 DNS 搜索域,可以是一个值或列表
1
2
3
4
5dns_search: example.com
------------------------
dns_search:
- dc1.example.com
- dc2.example.com -
environment:环境变量配置,可以用数组或字典两种方式
1
2
3
4
5
6
7environment:
RACK_ENV: development
SHOW: 'ture'
-------------------------
environment:
- RACK_ENV=development
- SHOW=ture- env_file:从文件中获取环境变量,可以指定一个文件路径或路径列表,其优先级低于 environment 指定的环境变量
1
2
3
4env_file: .env
---------------
env_file:
- ./common.env- expose:暴露端口,只将端口暴露给连接的服务,而不暴露给主机
1
2
3expose:
- "3000"
- "8000"- image:指定服务所使用的镜像
1
image: java
- network_mode:设置网络模式
1
2
3
4
5network_mode: "bridge"
network_mode: "host"
network_mode: "none"
network_mode: "service:[service name]"
network_mode: "container:[container name/id]"- ports:对外暴露的端口定义,和 expose 对应
1
2
3ports: # 暴露端口信息 - "宿主机端口:容器暴露端口"
- "8763:8763"
- "8763:8763"- links:将指定容器连接到当前连接,可以设置别名,避免ip方式导致的容器重启动态改变的无法连接情况
1
2links: # 指定服务名称:别名
- docker-compose-eureka-server:compose-eureka- volumes:卷挂载路径
1
2
3volumes:
- /lib
- /var- logs:日志输出信息
1
2
3
4--no-color 单色输出,不显示其他颜.
-f, --follow 跟踪日志输出,就是可以实时查看日志
-t, --timestamps 显示时间戳
--tail 从日志的结尾显示,--tail=200
Docker Compose 其它
更新容器
- 当服务的配置发生更改时,可使用 docker-compose up 命令更新配置
- 此时,Compose 会删除旧容器并创建新容器,新容器会以不同的 IP 地址加入网络,名称保持不变,任何指向旧容起的连接都会被关闭,重新找到新容器并连接上去
links
- 服务之间可以使用服务名称相互访问,links 允许定义一个别名,从而使用该别名访问其它服务
1 | version: '2' |
- 这样 Web 服务就可以使用 db 或 database 作为 hostname 访问 db 服务了