docker学习

docker安装

大佬地址: https://baijiahao.baidu.com/s?id=1626633654476933953&wfr=spider&for=pc

1、安装依赖
docker依赖于系统的一些必要的工具,可以提前安装。
yum install -y yum-utils device-mapper-persistent-data lvm2

2、添加软件源
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

3、安装docker-ce
yum clean all
yum makecache fast
yum -y install docker-ce

4、启动服务
通过systemctl启动服务
systemctl start docker

5、查看安装版本
这样子就安装成功了,启动服务以后可以使用docker version查看一下当前的版本。

docker version

镜像

镜像创建

docker build -t [name 镜像名称] -f [路径 | 默认PATH/Dockerfile] . # 创建本地镜像
docker images # 查看当前本地镜像
docker ps [-a] # 查看运行容器的状况
docker cp ./ 0190adf8cc5c:/usr/local/src/ # 将宿主机上的文件复制到容器中
docker rmi  # 删除镜像

dockerfile
每一行产生一个新层 只读,层只读可用于容器间共用
容器是明细层会产生个可读写的层

镜像保存与下载

 docker save -o 目标文件名 仓库名:tag名  # 保存镜像到目标文件
 docker load -i 镜像保存文件    # 导入镜像到本地

本地镜像删除

docker rmi 镜像id

volumn

独立于容器之外的持久化存储
比如 数据库容器 数据应该持久化
docker run -d -v /usr/share/nginx/html nginx

容器

容器启动、进入 | 各参数

docker 容器启动命令
docker run 
docker stop 容器id   停止容器
docker run -it -d -p 80:80  镜像名字:镜像标签  /bin/bash  # 映射80端口后台运行镜像
docker run -it -d -p 80:80 -v 宿主机路径:容器路径 镜像名字:镜像标签  /bin/bash  # -v 宿主机:容器 路径映射
docker cp ./php-fpm 7a487d6003b4:/usr/local/php-fpm  # 宿主机与镜像间复制文件
docker exec -it 容器id  /bin/bash # 退出exit

利用linux命令strace追踪进程执行是系统调用及所接收信号,如 strace ls -l。若出现错误“ptrace(PTRACE_TRACEME, …): Operation not permitted”,可以用容器启动命令 docker run -ti --cap-add=SYS_PTRACE centos:7来启用PTRACE功能(最后的参数需要根据安装的系统名而调整)。详情可参见文章。

容器持久化

docker commit  mine:v1   new
docker commit 容器id   新的镜像名字   # 提交容器的修改持久化,保存更改为新镜像

容器删除

docker rm 容器id #删除一个终止状态的容器 ,需要加-f参数。

容器与网卡的关联

docker 网卡与容器关联关系

ifconfig
veth128dbcb: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        ether d2:63:d3:1c:0e:dc  txqueuelen 0  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

ethtool -S veth128dbcb
NIC statistics:
     peer_ifindex: 94
ip link show
...
95: veth128dbcb@if94: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master docker0 state UP mode DEFAULT 
    link/ether d2:63:d3:1c:0e:dc brd ff:ff:ff:ff:ff:ff link-netnsid 0

docker 默认的存储路径在 /var/lib/docker下面
docker info 可查看docker根目录

原文:https://www.cnblogs.com/huanxiyun/articles/5618697.html
Docker 的配置文件可以设置大部分的后台进程参数,在各个操作系统中的存放位置不一致
在 ubuntu 中的位置是:/etc/default/docker
在 centos 中的位置是:/etc/sysconfig/docker

私有仓库创建

大佬地址:https://www.cnblogs.com/linjiqin/p/8619667.html
https://blog.csdn.net/yejinxiong001/article/details/81946520
配置局域网私有仓库可以加快下载镜像速度,公网仓库可以免去多台服务器一一设置的麻烦

  1. docker search registry

  2. docker pull registry

  3. docker images # 查看下载下来的镜像

  4. 制作证书,生成证书
    我这里使用的这个域名,下面会用到
    在ROOT下执行,把证书保存在/root/certs目录下

    openssl req -newkey rsa:2048 -nodes -sha256 -keyout /root/certs/domain.key -x509 -days 365 -out /root/certs/domain.crt
    

    在这里插入图片描述

  5. 拷贝证书到访问路径

    mkdir -p certs.d/sylalak:5000/
    cp cert/domain.crt /etc/docker/certs.d/sylalak\:5000/ca.crt
    
  6. 让服务器信任自身证书

    cat domain.crt >>/etc/pki/tls/certs/ca-bundle.crt
    update-ca-trust # 更新证书配置
    
  7. 运行registry ,查看到5000端口被监听

    # 私有仓库
    docker run -d -p 5000:5000 -v /root/docker/registry:/tmp/registry registry
    netstat -anp|grep 5000 # 查看是否监听了5000端口
    
    # 公网ip建立仓库
    docker run -d -p 5000:5000 --privileged=true -v /opt/registry:/tmp/registry -v ~/certs/:/root/certs -e REGISTRY_HTTP_TLS_CERTIFICATE=/root/certs/domain.crt -e REGISTRY_HTTP_TLS_KEY=/root/certs/domain.key registry
    
    # 将镜像id为90a93df7436d 的镜像重命名
    docker tag 90a93df7436d 192.168.1.160:5000/centos 
    # 将本地镜像上传至仓库
    docker push 192.168.1.160:5000/centos
    # 
    
  8. 绑定host

    vi  /etc/hosts 
    
  9. 此时在本地下载个镜像,再上传 或者 自己本地创建镜像

    docker pull centos
    docker images # 查看到centos镜像id为9f38484d220f
    docker tag 9f38484d220f  dockerpro.com:5000/test # 镜像重命名  pull此镜像时会请求39.105.143.144:5000端口
    docker push 39.105.143.144:5000/test
    
  10. 在另一台机器上docker pull dockerpro.com:5000/test
    报错:
    Error response from daemon: Get https://dockerpro.com:5000/v2/: x509: certificate signed by unknown authority
    解决方法:
    将仓库ca证书下载下来放在请求服务器的/etc/pki/ca-trust/source/anchors/openshift.crt文件中

    vi /etc/pki/ca-trust/source/anchors/openshift.crt
    update-ca-trust extract
    systemctl restart docker
    
    vi  /etc/hosts   # 39.105.143.144 dockerpro.com
    echo '{ "insecure-registries":["dockerpro.com:5000"] }'>/etc/docker/daemon.json  # 指定镜像仓库
    

问题:
重启docker报错Job for docker.service failed because the control process exited with error code. See “systemctl status docker.service” and “journalctl -xe” for details.
解决 :
大佬地址:https://www.cnblogs.com/dalianmao890710/p/9241752.html
rm -rf /var/lib/docker/
添加如下内容 #
vim /etc/docker/daemon.json
{ “graph”: “/mnt/docker-data”, “storage-driver”: “overlay” }
然后systemctl start docker 重启正常

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值