启动一个Jenkins docker
1 | docker pull jenkins |
说明
- docker run启动一个container
- -d 后台运行
- -u root 以root权限执行 尤其对于jenkins 权限不足会影响持久化卷的访问
- —rm 容器退出后自动移除 实际上写这个会报与—restart always冲突
- —name myjenkins容器Name命名为myjenkins
- -p 8080:8080 -p 50000:50000 容器端口映射到宿主端口,前者是主机端口,后者是容器端口
- -v volume设置(详见“卷和持久化数据”)
- —restart always重启策略
- jenkins 镜像
参考
docker run命令
Docker提供了3种预置网络配置:桥接、主机、无网络
端口映射适应于桥接网络,是启动容器的默认网络设置,如果是主机网络,则可以直接使用主机上的剩余端口
jenkins升级
在jenkins ui中upgrade 重启后无法访问 查看docker container log发现需要升级JDK版本
由于我们启用jenkins时映射了宿主volume,不用担心丢失工作数据, 可以更新docker image 删除并重建容器
连接到容器
docker attach [containerID]
docker exec -it [containerID] bash或sh
前者是直接进入容器启动命令的终端,不开启新的进程,退出终端意味着容器命令被终结
后者是打开一个新的终端(bash或sh)
在容器终端键入 exit 退出
使用Container ID 停止和重启等
1 | docker ps -a |
Issue:如何得知特定镜像需要的持久化卷配置,即我要创建哪些路径的映射呢?
tomcat docker的卷设置
1 | docker run --name tomcat -p 8080:8080 -v $PWD/test:/usr/local/tomcat/webapps/test -d tomcat |
容器重连
有的封装服务的容器是可以docker run -d 保持后台运行的,很多容器如ubuntu等,断开终端连接往往会结束运行,在docker ps -a中看到状态是Exited。
启动容器并附加到当前进程1
docker start -a -i `docker ps -q -l`
说明:
docker start启动容器(需要名称或ID)
-a附加到容器
-i交互模式
docker ps列表容器
-q列表仅容器ID
-l列表仅最后创建容器
检索自腾讯云问答
另,对于这种容器,可以保持一个“前台”的进程运行,如1
docker run ubuntu /bin/bash -c "while true; do echo docker connected; sleep 5; done" // 每5s 输出一次
docker for mysql 5.7
1 | docker pull mysql:5.7 |
Containers for the linked service will be reachable at a hostname identical to the alias, or the service name if no alias was specified.
使用docker for mysql部署数据库,docker容器运行起后,不需要进入容器修改配置(事实上使用docker -it进入容器终端后,/etc/mysql/下面没有配置文件),在配置外部数据连接时,使用容器名代替localhost或127.0.0.1
参考issue: SQLSTATE[HY000] [2002] Connection refused