1 查看系统镜像
docker images
2 docker启动csvn
每次run都会生成一个新的实例,所以,应该删除无用的实例,之后start启动实例。
docker run -d -p 3343:3343 -p 18080:18080 ip:5000/docker-csvn /bin/bash
/bin/bash:告诉docker要在容器里面执行此命令。(如果无法启动,就不要添加 /bin/bash)
-d: 后台运行容器,并返回容器ID
-p 端口映射
-v 目录映射 docker run -d -v /masterDir:/opt ....... 其中/masterDir为宿主机的目录,/opt为容器的目录,且容器中目录必须存在
如果外部端口3343被占用,修改外部端口为其他端口3343->13343
docker run -d -p 13343:3343 -p 18080:18080 ip:5000/docker-csvn /bin/bash
3 查看
docker ps 查看当前运行的容器
docker ps -a 查看所有容器的状态
4 停止
docker stop 1411ebce2808
1411ebce2808 为csvn中docker的image运行的镜像
5 删除容器
docker rm id/name
6 删除镜像
docker rmi id/name 删除某个镜像
7 启动容器
docker start id/name 启动/停止某个容器
8 docker exec -it id 启动一个伪终端以交互式的方式进入某个容器(使用exit退出后容器不停止运行)
docker exec -it id /bin/bash
-i :即使没有附加也保持STDIN 打开
-t :分配一个伪终端
9 联网
wget http://ip:3343/csvn
10 采用grails生成war并部署
.gitlab-ci.yml
stages:
- build
- csvnbuild
job_build:
image: tophatdave/grails-2.4.4
stage: build
script:
- cd svnedge
- cd console
- grails -version
- cd csvndocker
- cd conf
- ls -l
- cd ../../
- grails war
- find . -name svnedge-5.2.0.war -type f | xargs -i mv {} ./csvndocker/conf/csvn.war
- cd csvndocker
- cd conf
- ls -l
only:
- master
tags:
- docker
cache:
paths:
- svnedge/console/csvndocker
artifacts:
paths:
- svnedge/console/csvndocker
job_build_csvn:
stage: csvnbuild
script:
- ls -l
- cd svnedge
- cd console
- cd csvndocker
- pwd
- ls -l
- docker build --no-cache -t "xx.xx.xx.xx:5000/docker-csvn" .
- docker push "xx.xx.xx.xx:5000/docker-csvn"
only:
- master
tags:
- dockerbuild
11 问题
1 docker生成镜像文件,中间一直采用老的dockerfile文件,原因为cache共享的路径为为大的空间,应该只共享一个war包即可。
从:
cache:
paths:
- svnedge/console/csvndocker
修改为:
cache:
paths:
- svnedge/console/csvndocker/conf/csvn.war
2 docker volume
Volume就是目录或者文件,它可以绕过默认的联合文件系统,而以正常的文件或者目录的形式存在于宿主机上。
docker inspect
命令找到Volume在主机上的存储位置
docker inspect
id
"Mounts": [
{
"Type": "volume",
"Name": "cdaff81111fb6baa1c043f75f5f7e62bebf03d4634c4",
"Source": "/var/lib/docker/volum/_data", //是主机上的目录
"Destination": "/opt/tc/csvn/data", //是容器中的路径
"Driver": "local",
"Mode": "",
"RW": true,
"Propagation": ""
}
],
3 docker镜像push到服务器
docker本地镜像tophatdave/grails-2.4.4,push到服务器。
docker tag tophatdave/grails-2.4.4 11.2.2.2:5000/mygrails2.4.4
docker push 11.2.2.2:5000/mygrails2.4.4
4 Rancher学习
rancher是一个开源的企业级全栈化容器部署及管理平台。在rancher添加服务后,此即为容器内的服务,可通过后台的xshell中,docker ps中,可以查看所起的容器应用。 rancher也是docker的一个镜像服务。
5 Dockerfile用户切换及添加
要求:
(1)增加一个新用户,名为mynewuser
(2)让这个用户有root权限
(3)设置其密码为mynewpassword
(4)container启动后以mynewuser登录,并且直接到mynewuser的home目录下
将下面代码片段放到Dockerfile里面。
RUN useradd --create-home --no-log-init --shell /bin/bash mynewuser
RUN adduser mynewuser sudoRUN echo 'mynewuser:mynewpassword' | chpasswd
USER mynewuser //用户切换
WORKDIR /home/mynewuser
6 空间的清理
docker system df 查看cici磁盘的使用情况。
docker system prune,可以用于清理dangling镜像和容器,以及失效的数据卷和网络。