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.youkuaiyun.com/yejinxiong001/article/details/81946520
配置局域网私有仓库可以加快下载镜像速度,公网仓库可以免去多台服务器一一设置的麻烦
-
docker search registry
-
docker pull registry
-
docker images # 查看下载下来的镜像
-
制作证书,生成证书
我这里使用的这个域名,下面会用到
在ROOT下执行,把证书保存在/root/certs目录下openssl req -newkey rsa:2048 -nodes -sha256 -keyout /root/certs/domain.key -x509 -days 365 -out /root/certs/domain.crt
-
拷贝证书到访问路径
mkdir -p certs.d/sylalak:5000/ cp cert/domain.crt /etc/docker/certs.d/sylalak\:5000/ca.crt
-
让服务器信任自身证书
cat domain.crt >>/etc/pki/tls/certs/ca-bundle.crt update-ca-trust # 更新证书配置
-
运行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 #
-
绑定host
vi /etc/hosts
-
此时在本地下载个镜像,再上传 或者 自己本地创建镜像
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
-
在另一台机器上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 重启正常