镜像管理
基础镜像拉取
docker search centos ---------搜索镜像centos
docker pull centos:6.9 --------拉取镜像centos:6.9
镜像基本查看
docker image ls--------------查看所有镜像
docker image ls -q ----------只查看镜像id
标识镜像唯一性的方法:
- REPOSITORY:TAG
centos:7.5.1804 - IMAGE ID (sha256:64位的号码,默认只截取12位)
82f3b5f3c58
[root@docker /]# docker image ls --no-trunc ---------------查看sha256全长
镜像详细信息查看
[root@docker /]# docker image inspect ubuntu:latest
镜像的导入和导出
[root@docker ~]# docker image save 3556258649b2 >/tmp/ubu.tar
[root@docker ~]# docker image rm 3556258649b2
[root@docker ~]# docker image load -i /tmp/ubu.tar
镜像的删除
[root@docker ~]# docker image rm -f 3556258649b2
[root@docker ~]# docker image rm -f $(docker image ls -q)----------删除所有镜像
容器的管理
交互式运行的容器
交互式的容器: 工具类: 开发,测试,临时性的任务()
[root@docker /]# docker container run -it --name=“oldguo_cent76” --rm 9f38484d220f
-i:交互式
-t:前端,终端
–name:指定容器名字
–rm:退出容器立刻删除该容器
9f38484d220f:镜像id
守护式容器
守护式容器: 网络服务
[root@docker /]# docker run -d -p 8080:80 --name=“oldguo_nginx” nginx:1.14
-d:后台运行
-p:把容器的80端口映射到宿主机的80端口
容器的启动\关闭\连接
交互式的容器的关闭和启动
[root@docker /]# docker container stop nervous_allen
[root@docker /]# docker container start -i nervous_allen
守护式容器的关闭和启动
[root@docker /]# docker container stop oldguo_nginx_80
[root@docker /]# docker container start oldguo_nginx_80
容器的连接方法:
子进程的方式登录(在已有工作容器中生成子进程,做登录.可以用于进行容器的调试,退出时也不会影响到当前容器)
[root@docker ~]# docker container exec -it nervous_allen /bin/bash
docker容器的网络访问
指定映射(docker 会自动添加一条iptables规则来实现端口映射)
-p hostPort:containerPort
-p ip:hostPort:containerPort
-p ip::containerPort(随机端口:32768-60999)
-p hostPort:containerPort/udp
-p 81:80 –p 443:443
随机映射
docker run -P 80(随机端口)
容器的其他管理
[root@docker ~]# docker container top ba9143bcaf74-----------显示运行中的容器的进程号
查看日志:
docker logs [-t][-f] container id or name
1.镜像类:
docker image
search
pull
ls
inspect
rm
save
load
2.容器类
docker container
run
start
stop
restart
kill
attach
exec
ls
top
logs
inspect
Docker的数据卷实现持久化存储
Volume实现宿主机和容器的数据共享
[root@docker opt]# mkdir -p /opt/html
[root@docker ~]# docker run -d --name=“nginx_3” -p 83:80 -v /opt/html:/usr/share/nginx/html nginx
把容器的/usr/share/nginx/html 映射给宿主机的/opt/html
数据卷容器:
(1)宿主机模拟数据目录
mkdir -p /opt/Volume/a
mkdir -p /opt/Volume/b
touch /opt/Volume/a/a.txt
touch /opt/Volume/b/b.txt
(2)启动数据卷容器
docker run -it --name “nginx_volumes” -v /opt/Volume/a:/opt/a -v /opt/Volume/b:/opt/b centos:6.9 /bin/bash
ctrl +p +q让容器在后台运行
(3)使用数据卷容器
docker run -d -p 8085:80 --volumes-from nginx_volumes --name “n8085” nginx
docker run -d -p 8086:80 --volumes-from nginx_volumes --name “n8086” nginx
作用: 在集中管理集群中,大批量的容器都需要挂载相同的多个数据卷时,可以采用数卷容器进行统一管理
Docker构建私有registry
启动registry
docker run -d -p 5000:5000 --restart=always --name registry -v /opt/registry:/var/lib/registry registry
修改配置文件
{
“registry-mirrors”: [“https://68rmyzg7.mirror.aliyuncs.com”],
“insecure-registries”: [“10.0.0.100:5000”]
}
[root@docker docker]# systemctl restart docker
制作本地镜像并push到
[root@docker ~]# docker tag nginx 10.0.0.100:5000/oldguo/nginx:v1
[root@docker ~]# docker images
[root@docker ~]# docker push 10.0.0.100:5000/oldguo/nginx:v1
异地进行pull镜像
[root@docker ~]# docker pull 10.0.0.100:5000/oldguo/nginx:v1
本地仓库加安全认证
生成密码:
yum install httpd-tools -y
mkdir /opt/registry-auth/ -p
htpasswd -Bbn oldguo 123 > /opt/registry-auth/htpasswd
重新启动带有秘钥功能的registry容器
docker rm -f $(docker ps -aq)
docker run -d -p 5000:5000 -v /opt/registry-auth/:/auth/ -v /opt/registry:/var/lib/registry --name register-auth -e “REGISTRY_AUTH=htpasswd” -e “REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm” -e “REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd” registry
push镜像,需要进行login
[root@oldboy ~]# docker login 10.0.0.100:5000
Username: oldguo
Password:
重启docker服务,容器全部退出的解决办法
方法一:docker run --restart=always
方法二:“live-restore”: true
docker server配置文件/etc/docker/daemon.json
{
…
…
“live-restore”: true
}