day106 docker compase
day106 docker compase
docker-compose
- 对比于docker命令和docker-compose写的ymal文件
纯命令模式
docker run \
--name docker-jenkins \
--restart=always \
-p 8080:8080 \
-p 50000:50000 \
--privileged=true \
--user root \
-v /usr/bin/docker:/usr/bin/docker \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /linux0224_data/jenkins/:/var/jenkins_home \
-d jenkins/jenkins
云原生时代,基于容器化的部署,以后都是yaml的语法
描述及应用,描述及服务
云原生运维,都是yaml的工程师
version: '3' # yaml语法版本,版本越高,支持字段就越高
services: # 定义服务
myjenkins: # 起个名字这个改 叫做myjenkins
image: 'jenkins/jenkins:latest' # 镜像名
container_name: myjenkins # 运行的容器名字 =--name
restart: always # 容器的重启策略
privileged: true #特权化的执行容器
user: root # 定义一个容器的执行用户
ports: # 写一个 - 代表的是写一个列表
- '8080:8080'
- '50000:50000'
volumes:
- '/data/jenkins:/var/jenkins_home'
- '/var/run/docker.sock:/var/run/docker.sock'
- '/usr/bin/docker:/usr/bin/docker'
- '/root/.ssh:/root/.ssh'
回顾yaml和json的关系
说yaml写json
yaml的第一大的数据类型,字典类型{"name":"linuxyzk666"}
json 转yaml
json----->
{"name":"linuxyzk666"}
ymal----->
name: "linuxyzk"
# 特殊类型--列表类型
["yzk","xiaoming","hello"]
- "yzk"
- "xiaoming"
- "hello"
嵌套
{
"name":[
"yzk",
"hello",
"jjbong"
]
}
json --> ymal
name:
- yzk
- hello
- jjbong
容器信息的yaml。json
{
"nginx-contaioner": {
"ports": ["80","81"],
"volumes": ["/var/log/nginx/","/opt/"]
}
}
# 转成yaml
nginx-contaioner:
ports:
- '80'
- '81'
volumes:
- /var/log/nginx/
- /opt/
练习json,手写yaml
yaml的空格数量必须是严格的
json不关心空格,根据元素,根据逗号,去理解json的变量的关系
{
"NetworkMode": "default",
"PortBindings": {
"50000/tcp": [
{
"HostIp": "",
"HostPort": "50000"
}
],
"8080/tcp": [
{
"HostIp": "",
"HostPort": "8080"
}
]
},
"RestartPolicy": {
"Name": "no",
"MaximumRetryCount": 0
}
}
NetworkMode: default
PortBindings:
50000/tcp:
- HostIp: ""
HostPort: "50000"
8080/tcp:
- HostIp: ""
HostPort: "8080"
RestartPolicy:
Name: "no"
MaximumRetryCount: 0
jenkins-compose的语法
# yaml根据官网提供的一些字段,等于docker run 命令的参数
# --user =
# --restart =
# privileged =
-p 80:80
-p 5000:5000
-v
-v 这里映射容器的目录地址
version: '3' # yaml语法版本,版本越高,支持字段就越多,得看官网文档,有有哪些字段语法
services: #定义服务,名字
myjenkins: # myenkins服务
image: 'jenkins/jenkins:latest' # 镜像名
container_name: myjenkins # 你运行容器的名字
restart: always # 容器重启策略
privileged: true # 特权化运行容器
user: root # 制定容器进程执行用户
ports:
- '8080:8080'
- '50000:50000'
volumes:
- '/linux0224_data/jenkins:/var/jenkins_home'
- '/var/run/docker.sock:/var/run/docker.sock'
- '/usr/bin/docker:/usr/bin/docker'
- '/root/.ssh:/root/.ssh'
docker-comepose 以前的版本,python写的工具,读取yaml文件执行yaml
1.先安装
2. 写docker-compose.yaml
3.运行docker-compose.yaml 的文件
1. 按装docker-comepose
yum install docker-compose
[root@docker-100 ~]# cat /usr/bin/docker-compose
#!/usr/bin/python3.6
# EASY-INSTALL-ENTRY-SCRIPT: 'docker-compose==1.18.0','console_scripts','docker-compose'
__requires__ = 'docker-compose==1.18.0'
import re
import sys
from pkg_resources import load_entry_point
if __name__ == '__main__':
sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0])
sys.exit(
load_entry_point('docker-compose==1.18.0', 'console_scripts', 'docker-compose')()
)
# 发现是一个旧版本的python脚本的docker-compose
我们也来写一个命令
[root@docker-100 ~]# vim /usr/bin/ji
[root@docker-100 ~]#
[root@docker-100 ~]#
[root@docker-100 ~]#
[root@docker-100 ~]# chmod +x /usr/bin/ji
[root@docker-100 ~]#
[root@docker-100 ~]#
[root@docker-100 ~]# ji
下午打起精神,开始学习,加油!!!
写一个ymal的docker容器
vim docker-compose.yml
# 2. 写docker-compose.yml
[root@docker-200 ~]#vim docker-compose.yml
先检查yml的语法是否对,没东西输出,表示正确
# 直接对当前目录下的 yaml进行语法校验
[root@docker-200 ~]#docker-compose config -q
# 3.运行该docker-compose.yml
[root@docker-200 ~]#docker-compose up -d
# 容器内也获取宿主机的 ssh公私钥
# 容器内想免密 ssh操作xx机器
浙公网安备 33010602011771号