
https://kubernetes.io/
http://docs.kubernetes.org.cn/ !!!!!
默认拉取位置 hub.docker.com
配置加速
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json << EOF
{
"registry-mirrors": ["https://fcafe5rl.mirror.aliyuncs.com"], #镜像加速
"data-root": "/data" #指定容器挂载卷的路径
}
EOF
sudo systemctl daemon-reload;sudo systemctl restart docker
命令
man -k docker
总结:在docker中有很多种资源,比如network、container、image、volume,我们可以用的语法为
docker 类型 inspect 容器名
镜像命令
dockerd --help
• 镜像的命名方式 • docker pull 镜像
• docker tag 镜像 • docker rmi 镜像
• docker save 镜像名 > filename.tar 导出全部镜像用空格分隔
• docker load -i filename.tar 导入镜像
• 把容器导出为镜像 docker export 容器名 > filename.tar
• 导入 cat filename.tar | docker import - 镜像名
–no-trunc 可以显示完整的内容
• docker history 192.168.26.100/nginx:v1 --no-trunc |head -2 显示详细的信息 不截断
• docker volume list 查看容器卷列表
• docker volume create v1 然后创建容器的时候冒号左边用 v1:/user/share
• docker volume inspect v1
• docker cp 容器名:文件路径 想要放的路径
导出所有镜像
[root@vms101 ~]# cat save_all_images.sh
#! /bin/bash
imagename=$(docker images|grep -v TAG|awk '{print $1":"$2}'|tr '\n' ' ')
docker save $imagename > all.tar
容器命令
• docker run -ti -d --restart=always --name=c1 -p 8088:80 -e 变量设置 -v /web:/use/share/nginx/config/ centos sleep 10000
--restart=always
-ti
-d detach he attach 正好相反,不加d默认attach进入容器
-e
-p 指定端口 -p 80 代表宿主机随机端口到容器80端口 -p 8088:80 代表宿主机8088端口到容器80端口 -P
-v 默认/web:/use/share/:wr 读写 冒号左边是宿主机 默认 :容器目录
--name=c1
• docker exec -it 容器 bash #也是进入容器
• pdocker attach 容器 #进入正在运行的容器 进入看起来卡住说明里面没有运行/bin/bash 用docker exec -it 容器 bash 进入
• docker logs 容器名 #查看容器运行日志
• docker inspect 容器名 #查看容器详细信息
• docker run -dit --name=db --restart=always -e MYSQL_ROOT_PASSWORD=123456 -e MYSQL_USER=bianmc -e MYSQL_PASSWORD=123456 -e MYSQL_DATABASE=aaa hub.c.163.com/library/mysql
[root@vms101 ~]# docker top c1
UID PID PPID C STIME TTY TIME CMD
root 22753 22734 3 16:02 pts/0 00:00:00 /usr/bin/coreutils --coreutils-prog-shebang=sleep /usr/bin/sleep 10000
应用程序常用的目录
mysql —/var/lib/mysql
apache —/var/www/html
nginx —/usr/share/nginx/html
网络
模式 bridge
docker network create --driver=bridge --subnet=10.0.0.0/16 bianmc
docker network list
docker inspect c1|grep -i ipadd
docker network rm bianmc
模式 host
docker run -it --rm --network=host busybox
模式 none 一般用于测试
docker run -it --name=c3 --link=c1:xxx --restart=always busybox
–link=c1:xxx 给c1这个容器起一个别名xxx,在c3里可以通过xxx这个名字直接来访问c1,相当于修改host c1的ip指定到xxx
WORDPRESS
docker run -dit --restart always --name mysql -v /db:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -e MYSQL_DATABASE=wordpress -e MYSQL_USER=wordpress -e MYSQL_PASSWORD=wordpress hub.c.163.com/library/mysql
docker run -dit --name blog --restart always --link mysql -v /blog:/var/www/html -p 80:80 -e WORDPRESS_DB_USER=wordpress -e WORDPRESS_DB_PASSWORD=wordpress -e WORDPRESS_DB_NAME=wordpress hub.c.163.com/library/wordpress
WORDPRESS_DB_HOST=mysql 可以删除,因为--link到了同一个网络
创建镜像
方式一:
• docker commit -a "aa" -m "bb" 6a785f2adc9d test:v2
• -a 作者信息, -m 提交信息 , id 是容器id , 最后是到处镜像名 docker history xxxx
方式二: Dockerfile
FROM centos:latest
MAINTAINER bianmc # 作者
RUN yum install nginx -y && \ #换行格式
useradd tom
ENV aa xxx # 设置变量
ADD adas.tar.gz /usr/share/nginx/html #ADD和COPY的区别就是ADD会自动解压压缩文件
ADD index.html /usr/share/nginx/html
VOLUME ["/data1"] #创建目录卷
USER tom #进入容器时的选择用户 docker命令进入时可以--u root指定 root用户进入
EXPOSE 80 #备注端口号
CMD ["nginx","-g","daemon off;"]
docker build --tag centos:v1 . #构建镜像
构建ssh镜像
FROM hub.c.163.com/library/centos:latest
MAINTAINER bianmc
RUN echo haha001 |passwd --stdin root
RUN yum install openssh-clients openssh-server -y && \
rm -rf /var/cache/yum/x86_64/* && \
yum clean all && \
ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key && \
ssh-keygen -t rsa -f /etc/ssh/ssh_host_ecdsa_key && \
ssh-keygen -t ed25519 -f /etc/ssh/ssh_host_ed25519_key && \
sed -i '/UseDNS/cUseDNS no' /etc/ssh/sshd_config
EXPOSE 22
CMD ["/usr/sbin/sshd","-D"]
私有仓库 registry
启动仓库容器
docker run -dit --name myrey --restart always -p 5000:5000 -v /myreg:/var/lib/registry hub.c.163.com/library/registry
修改docker拉取和推送配置 每个都要修改
方法一:
vim /etc/docker/daemon.json
{
"registry-mirrors": ["https://fcafe5rl.mirror.aliyuncs.com"],
"data-root": "/data",
"insecure-registries": ["192.168.26.101:5000"]
}
systemctl daemon-reload ; systemctl restart docker
方法二:
systemctl status docker 查询启动脚本
Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled)
修改为 vim /usr/lib/systemd/system/docker.service
ExecStart=/usr/bin/dockerd --insecure-registry 192.168.26.101:5000 -H fd:// --containerd=/run/containerd/containerd.sock
--insecure-registry 192.168.26.101:5000
systemctl daemon-reload ; systemctl restart docker
修改镜像名 和内部仓库一致
docker tag 需要名的容器 192.168.26.101:5000/容器名
#docker push 192.168.26.101:5000/容器名
带验证 !!删除本地镜像
systemctl stop docker.socket
rm -rf /var/lib/docker/*
systemctl start docker
脚本查看有多少镜像
yum install -y jq
vim images_check.sh
#!/bin/bash
file=$(mktemp)
curl -s $1:5000/v2/_catalog | jq | egrep -v '\{|\}|\[|]' | awk -F\" '{print $2}' > $file
while read aa ; do
tag=($(curl -s $1:5000/v2/$aa/tags/list | jq | egrep -v '\{|\}|\[|]|name' | awk -F\" '{print $2}'))
for i in ${tag[*]} ; do
echo $1:5000/${aa}:$i
done
done < $file
rm -rf $file
chmod +x images_check.sh
./images_check.sh 192.168.26.101
脚本删除本地仓库镜像
分享名称:delete_docker_registry_image
分享链接:https://www.bianminchang.com/#s/75e_-4uA
下载文件包并解压
分享名称:harbor-offline-installer-v2.3.5.tgz
分享链接:https://www.bianminchang.com/#s/75fKdJTA
访问密码:dSYZq
加载镜像
docker load -i harbor.v2.3.5.tar.gz
修改配置文件并使其生效
cp harbor.yml.tmpl harbor.yml
vim harbor.yml
hostname: 192.168.26.101
# https的内容全注释
# 设置密码
harbor_admin_password: Harbor12345
生效
./prepare
安装
./install.sh
访问192.168.26.101 账号admin密码Harbor12345
push 需要先登入
docker login 192.168.26.101 -ubianmc -pAa123456
Login Succeeded
docker push 192.168.26.101/cka/centos #需要特定的名称
pull 直接去页面复制就行
报错 如果发现密码正确也无法登入的情况,进入harbor安装目录运行
docker-compose stop
docker-compose up -d