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镜像

  1. 对系统进行压缩

    查看系统目录,最好提前清除不需要的内容,否则产生的镜像很大,可能导致容器起不来

    $ 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这几个目录都是系统启动时自动生成的,虽然也属于文件系统一部分,但是他们每次开机都会有变化,所以打包的时候就应该忽略它们 。

  2. 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
    

    系统之间,可能有差异,根据自己使用的系统进行打包。

  3. 导入docekr

    $ docker import /tmp/system.tar Ubuntu:v1
    //Ubuntu:v1  是自定义的镜像和tag名称
    

    提示: 制作的镜像文件太大,会导致启动容器时候失败: Getting the final child’s pid from pipe caused “EOF”

三、docker的基本使用

  1. 登录镜像仓库

    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
    
  2. 拉取镜像

    sudo docker pull 镜像名称
    eg:
    sudo docker pull Ubuntu
    docker images 查看拉取的镜像
    
  3. 使用镜像

    docker run -it 镜像名:tag/镜像id
    选项
    -i  交互式操作
    -t  终端
    -d  后台运行  
    
    

    进入容器后,就可以在容器内部进行操作,可以对改动后的容器打包上传到仓库。

  4. 从容器创建一个新的镜像

    在容器里做了一些配置后,可以将创建一个新的镜像

    docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
    OPTIONS说明:
    -a :提交的镜像作者;
    -c :使用Dockerfile指令来创建镜像;
    -m :提交时的说明文字;
    -p :在commit时,将容器暂停。
    
  5. 对镜像进行打包

    a、sudo docker images   查看镜像信息
    b、sudo docker tag 镜像名/镜像ID www.xxx.com/test/镜像名称:tag (域名/镜像仓库名/镜像名)目的要知道镜像上传到哪,tag可以指定版本
    
  6. 上传镜像

    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
    
  7. 查看镜像信息

    1、使用images命令列出本地镜像      docker images
    2、使用inspect命令查看镜像详细信息  dockers inspect 镜像名
    
  8. 进入容器

    容器在后台运行,可以通过以下方式进入容器,输入exit退出容器时,容器不会关闭。

    docker exec -it 容器id cmd
    eg:
    docker exec -it 容器id /bin/bash
    
  9. 删除镜像

    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包的名字改为全小写即可
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值