一、拉取镜像并启动容器
1.编写一个docker-compose.yml文件,内容如下:
version: '3'
services:
postgres:
image: postgres
healthcheck:
test: psql postgres --command "select 1" -U postgres
ports:
- "5432:5432"
environment:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: password
POSTGRES_DB: postgres
pact-broker:
image: dius/pact-broker
depends_on:
- postgres
environment:
PACT_BROKER_DATABASE_USERNAME: postgres
PACT_BROKER_DATABASE_PASSWORD: password
PACT_BROKER_DATABASE_HOST: postgres
PACT_BROKER_DATABASE_NAME: postgres
PACT_BROKER_WEBHOOK_SCHEME_WHITELIST: http https
PACT_BROKER_WEBHOOK_HOST_WHITELIST: jenkins
PACT_BROKER_LOG_LEVEL: INFO
PACT_BROKER_PORT: "80"
TZ: "Asia/Shanghai"
# If you remove nginx, enable the following
ports:
- "80:80"
jenkins:
image: jenkins
environment:
TZ: "Asia/Shanghai"
ports:
- "8080:8080"
- "50000:50000"
2. 通过git bash进入该目录下, 执行命令docker-compose up -d
$ docker-compose up -d
Pulling pact-broker (dius/pact-broker:)...
latest: Pulling from dius/pact-broker
Digest: sha256:c353628693e1c48ad010b1666a2074e78b609839e3b6f20a5e94ac05d66c5d03
Status: Downloaded newer image for dius/pact-broker:latest
Pulling jenkins (jenkins:)...
latest: Pulling from library/jenkins
latest: Pulling from library/jenkins
Digest: sha256:eeb4850eb65f2d92500e421b430ed1ec58a7ac909e91f518926e02473904f668
Status: Downloaded newer image for jenkins:latest
Creating dockerforwin10_postgres_1 ... done
Creating dockerforwin10_jenkins_1 ... done
Creating dockerforwin10_pact-broker_1 ... done
3. 通过docker ps命令查看
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
08daeee1b020 dius/pact-broker "/sbin/my_init" About a minute ago Up 59 seconds 0.0.0.0:80->80/tcp, 443/tcp dockerforwin10_pact-broker_1
72f7e7f1cdeb postgres "docker-entrypoint.s…" About a minute ago Up About a minute (healthy) 0.0.0.0:5432->5432/tcp dockerforwin10_postgres_1
2d38e9e68ded jenkins "/bin/tini -- /usr/l…" About a minute ago Up About a minute 0.0.0.0:8080->8080/tcp, 0.0.0.0:50000->50000/tcp dockerforwin10_jenkins_1
4. 进入容器并执行相关操作
上述容器成功运行之后,分别在浏览器中打开
http://localhost:8080/ 访问Jenkins
登录Jenkins需要输入初始化密码,这个时候需要进入Jenkins容器中查看初始密码
$ docker exec -i 2d38e9e68ded bash
cd /var/jenkins_home
二、问题:
重启电脑之后再次启动容器时候,一直出现下面错误
$ docker-compose up -d
Starting dockerforwin10_postgres_1 ... error
ERROR: for dockerforwin10_postgres_1 Cannot start service postgres: Ports are not available: listen tcp 0.0.0.0:5432: bind: An attempt was made to access a socket in a way forbidden by its access permissions.
ERROR: for postgres Cannot start service postgres: Ports are not available: listen tcp 0.0.0.0:5432: bind: An attempt was made to access a socket in a way forbidden by its access permissions.
Encountered errors while bringing up the project.
初步判断以为是端口被占用,查询端口结果并没有
$ netstat -aon|findstr 5432
网上搜索是因为windows系统排除了这些端口范围,排除的端口范围查询如下:
$ netsh interface ipv4 show excludedportrange protocol=tcp
于是修改为上述范围之外的端口再启动就OK了。