docker安装与使用记录(debian9)
win10 通过Xshell连接linux机子
安装
https://www.runoob.com/docker/debian-docker-install.html
安装基本参照这个网址,没遇到什么坑
$ sudo apt-get remove docker docker-engine docker.io containerd runc
$ sudo apt-get update
$ sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
gnupg2 \
software-properties-common
$ curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -
$ sudo apt-key fingerprint 0EBFCD88
$ sudo apt-get install docker-ce docker-ce-cli containerd.io
验证
$ sudo docker run hello-world
使用
1.使用国内加速器
https://www.runoob.com/docker/docker-mirror-acceleration.html
基本按照这个网址进行设置,但是也遇到坑了,折腾好久
- 首先新建文件daemon.json文件,因为docker安装默认是没有daemon.json文件。
ls -a
在/etc/docker路径下,查看文件,确实没有daemon.json文件
新建文件:touch daemon.json
- 编辑daemon.json文件
这里踩了个坑vi daemon.json,一直弹出一个警告Found a swap file by the name ".daemon.json.swp"
对Linux不熟,查了半天才知道.swp文件是vi编辑器非正常关闭下生成的缓存文件,有这个存在的时候会弹出这个警告,使用命令进行删除即可rm .daemon.json.swp
,再次vi daemon.json
编辑即可 - 在文件中输入以下内容,并保存
{
"registry-mirrors": [
"https://hub-mirror.c.163.com/"
]
}
- 重启服务
sudo systemctl daemon-reload
sudo systemctl restart docker
2.下载jenkins
https://hub.docker.com/
在这里搜索Jenkins(注:需要注册登录)
https://hub.docker.com/_/jenkins?tab=tags 最后在这里复制想要的版本pull命令
(更换为国内镜像docker pull jenkinszh/jenkins-zh
,不然插件死都下不了 https://blog.csdn.net/loveLifeLoveCoding/article/details/105774844?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase
jenkins中文社区 https://jenkins-zh.cn/ )
回到xshell,把命令粘贴,等待下载结束
3.查看已安装的镜像 docker images
第1列repository: 镜像目录名称
第2列tag: 版本号
第3列IMAGE ID: 镜像的id
第4列CREATED: 镜像安装的时间
第5列SIZE:镜像的大小
4.运行jenkins docker run -d --name myjenkins -p 8081:8080 jenkinszh/jenkins-zh
-d : 后台运行
--name :指定别名
-p :端口映射,把宿主机的8081端口映射到容器的8080端口
-e :指定环境变量
5.查看正在运行的镜像 docker ps
6.查看日志 docker logs -f myjenkins
日志里有一行
Please use the following password to proceed to installation:
下面写的就是Jenkins的登陆密码
7.打开Jenkins
- 1.win10打开浏览器输入Linux的ip地址加端口号8081(刚做端口映射的那个端口)
如 http://192.168.2.4:8081 - 2.输入Jenkins的密码(在第6点看到的那个)
- 3.登陆成功Jenkins
- 4.直接选择 install suggested plugins ,选择推荐的方式安装
-
- 创建账户或使用admin直接登陆。我这里直接使用admin
- 创建账户或使用admin直接登陆。我这里直接使用admin
-
- 一路保存,最后
- 一路保存,最后
8.保存容器中的数据
把宿主机上的某个目录挂载在容器中的目录上,容器运行过程需要的数据均保存在宿主机上,如此,即使容器被误删数据依然可以在宿主机上找到
docker run --name myjenkins -itd --network host -v /home/test/jenkins_data:/var/jenkins_home --env JAVA_OPTS="-Xmx8192m" jenkinszh/jenkins-zh
-v : 把宿主机的/home/test/jenkins_data挂载到容器的/var/jenkins_home
9.关闭运行的jenkins,并删除
docker stop myjenkins
docker rm myjenkins
10.删除镜像
docker rmi [image]
docker命令整理
- 运行Jenkins。
docker run --name myjenkins -itd --network host -p 8081:8080 -v /home/test/jenkins_data:/var/jenkins_home --env JAVA_OPTS="-Xmx8192m" jenkinszh/jenkins-zh
参数:
--name : 指定容器名
-i : 以交互模式运行容器,通常与 -t 同时使用
-t : 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
-d : 以后台的方式运行容器,并返回容器id
--network :指定容器的网络连接类型 支持 bridge/host/none/container: 四种类型
-p :端口映射,把宿主机的8081端口映射到容器的8080端口
-v :文件挂载,把宿主机的/home/test/jenkins_data挂载到容器的/var/jenkins_home
--env或 -e : 设置环境变量
- 运行mariadb。
docker run --name mymariadb \
-e ALLOW_EMPTY_PASSWORD=yes \
-e MARIADB_USER=my_user \
-e MARIADB_PASSWORD=my_password \
-e MARIADB_DATABASE=my_database \
-v /home/test/mariadb_data:/bitnami/mariadb\
-p 3306:3306\
bitnami/mariadb:latest
参数:
-e ALLOW_EMPTY_PASSWORD=yes 设置环境变量,允许数据库密码为空
-e MARIADB_USER=my_user 设置环境变量,数据库用户名为my_user
-e MARIADB_PASSWORD=my_password 设置环境变量,数据库密码为my_password
-e MARIADB_DATABASE=bitnami_testlink #初始化数据库时的实例的名字
- 容器交互命令,在容器里面执行一条命令,如果执行的命令时bash,相当于在容器中打开了bash窗口与db交互
docker exec -it mariadb bash
- 运行testlink
docker run -d --name testlink -p 8099:80 -p 444:443 -e ALLOW_EMPTY_PASSWORD=yes -e
TESTLINK_DATABASE_USER=bn_testlink -e TESTLINK_DATABASE_NAME=bitnami_testlink --link mariadb
bitnami/testlink:latest
参数:
--link mariadb 把mariadb注入testlink(把容器mariadb的网络信息以环境变量的形式注入容器testlink
踩坑记录:
- 挂载文件后,执行docker logs -f myjenkins报错
cannot touch '/var/jenkins_home/copy_reference_file.log': Permission denied
解决方法:
https://segmentfault.com/a/1190000008618462
简单来说,就是权限不够,-v /home/test/jenkins_data:/var/jenkins_home 把/var/jenkins_home映射到了宿主机的目录文件/home/test/jenkins_data上,但是宿主机的这个目录权限是给root的。需要改为容器里的jenkins。
chown -R 1002:1002 /home/test/jenkins_data
其中1002为当前用户的uid。通过cat /ect/passwd
查看,找到当前登陆用户,即可获得uid
再次执行
docker run --name myjenkins -d -p 8081:8080 -v /home/test/jenkins_data:/var/jenkins_home jenkinszh/jenkins-zh
docker logs -f myjenkins
没有报错。