harbor+docker的基本使用_above the clouds*的博客-爱代码爱编程
Harbor+docker的基本使用
一、其他服务器登录harbor
非本地服务器登录harbor,需要进行以下相关设置
1、修改docker.service配置文件
vi /lib/systemd/system//docker.service 加入域名
--insecure-registry www.harbor.com
保存退出后,执行下面命令:
a、systemctl daemon-reload
b、systemctl restart docker
2、修改hosts文件
vi /etc/hosts 加入ip + 域名 如192.16.138.139 www.harbor.com
3、浏览器输入https://+ip或者域名,可以进入harbor登录界面,首次登录,需注册账号。
二、将当前Linux工作环境制作成docker镜像
-
对系统进行压缩
查看系统目录,最好提前清除不需要的内容,否则产生的镜像很大,可能导致容器起不来
$ cd / $ ls bin boot data dev etc home lib lost+found media mnt opt proc root run sbin srv sys tmp usr var
/proc
、/sys
、/run
、/dev
这几个目录都是系统启动时自动生成的,虽然也属于文件系统一部分,但是他们每次开机都会有变化,所以打包的时候就应该忽略它们 。 -
tar 完成系统压缩包
- 可以选择
/
根目录,然后--exclude
排除不需要的目录 - 也可以直接选择需要压缩的目录
tar -cvpf /tmp/system.tar --directory=/ --exclude=proc --exclude=sys --exclude=dev --exclude=run --exclude=boot . or tar -cvpf /tmp/system.tar bin data dev etc home lib lib64 lost+found media mnt opt root sbin srv tmp usr var
系统之间,可能有差异,根据自己使用的系统进行打包。
- 可以选择
-
导入docekr
$ docker import /tmp/system.tar Ubuntu:v1 //Ubuntu:v1 是自定义的镜像和tag名称
提示: 制作的镜像文件太大,会导致启动容器时候失败: Getting the final child’s pid from pipe caused “EOF”
三、docker的基本使用
-
登录镜像仓库
sudo docker login -u 用户名 -p 登录密码 ip:端口/域名 eg: sudo docker login -u admin -p 12345 www.harbor.com WARNING! Using --password via the CLI is insecure. Use --password-stdin. WARNING! Your password will be stored unencrypted in /root/.docker/config.json. Configure a credential helper to remove this warning. See https://docs.docker.com/engine/reference/commandline/login/#credentials-store Login Succeeded
-
拉取镜像
sudo docker pull 镜像名称 eg: sudo docker pull Ubuntu docker images 查看拉取的镜像
-
使用镜像
docker run -it 镜像名:tag/镜像id 选项 -i 交互式操作 -t 终端 -d 后台运行
进入容器后,就可以在容器内部进行操作,可以对改动后的容器打包上传到仓库。
-
从容器创建一个新的镜像
在容器里做了一些配置后,可以将创建一个新的镜像
docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]] OPTIONS说明: -a :提交的镜像作者; -c :使用Dockerfile指令来创建镜像; -m :提交时的说明文字; -p :在commit时,将容器暂停。
-
对镜像进行打包
a、sudo docker images 查看镜像信息 b、sudo docker tag 镜像名/镜像ID www.xxx.com/test/镜像名称:tag (域名/镜像仓库名/镜像名)目的要知道镜像上传到哪,tag可以指定版本
-
上传镜像
sudo docker push www.xxx.com/test/镜像名称 The push refers to repository [www.xxx.com/test/镜像名称] 5be351ff00ca: Pushed ceaf9e1ebef5: Pushed 9b9b7f3d56a0: Pushed f1b5933fe4b5: Pushed v1: digest: sha256:4871feb25d52cd4275d97b63a85556043a3efee74349e008807383e1d7e9132f size: 1159
-
查看镜像信息
1、使用images命令列出本地镜像 docker images 2、使用inspect命令查看镜像详细信息 dockers inspect 镜像名
-
进入容器
容器在后台运行,可以通过以下方式进入容器,输入exit退出容器时,容器不会关闭。
docker exec -it 容器id cmd eg: docker exec -it 容器id /bin/bash
-
删除镜像
1、docker stop $(docker ps -a -q) 2、docker rm $(docker ps -a -q) 删除所有镜像 3、docker rmi <image id> 删除指定镜像,可用docker images 查看镜像id 4、docker rmi $(docker images | grep "^<none>" | awk "{print $3}") 删除untagged images,也就是那些id为<None>的image 5、docker rmi -f $(docker images -q) 强制删除所有镜像
错误集合
1、docker在服务器上登录时提示Error saving credentials: error storing credentials
或者 error saving credentials :exit status 1 out:“the connection is closed”
原因:无法存储信用凭证
解决办法: apt install gnupg2 pass
GnuPG是GNU Privacy Guard的缩写,它是一个完全开源自由的OpenPGP标准(由RFC4880定义)实现。pass 是 Linux上的一个简单的命令行密码管理器,它将密码存储在一个gpg加密后的文件里。这些加密后的文件很好地组织按目录结构存放。
2、admin用户登录,显示账号或密码错误,报401错误,unauthorized: authentication required,权限问题,其他管理员账号可以登录
原因:提示是没有权限,但真正的问题可能并不是,毕竟人家是系统用户
解决办法:删除所有harbor相关镜像,包括产生的数据什么什么的,就是恢复到harbor安装之前的状态,重新安装harbor,就没问题了。
3、Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.24/images/json: dial unix /var/run/docker.sock: connect: permission denied
原因:权限问题
解决办法:使用root权限
4、docker ps -a 查看未启动容器,docker start 容器ID,容器起不来,状态未exit
原因:有些镜像启动,需要交互方式启动
解决办法:docker run -it 镜像名
5、 在导入镜像的时候出现问题 ”invalid reference format: repository name must be lowercase”
原因:命名不能出现大写字母
解决办法:把tar包的名字改为全小写即可