# 使用场景:
搭建环境(开发 测试等)
微服务架构(k8s)---基于容器
# docker与传统的vm对比
# 启动速度
vm 一般几十秒 或者几分钟
docker 几秒 或者几十毫秒
# 大小
vm 几个G 几十G
docker mb
# docker组成
镜像:相当于python里面类的概念,是静态的,不能直接使用
仓库:存放镜像的地方
容器:是通过镜像创建的,相当于实例的概念,是动态的,可以访问的
较旧的 Docker 版本称为 docker 或 docker-engine 。如果已安装这些程序,请卸载它们以及相关的依赖项。
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
使用 Docker 仓库进行安装
在新主机上首次安装 Docker Engine-Community 之前,需要设置 Docker 仓库。之后,您可以从仓库安装和更新 Docker。
sudo yum install -y yum-utils \
device-mapper-persistent-data \
lvm2
阿里云
sudo yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
安装最新版本的 Docker Engine-Community 和 containerd,或者转到下一步安装特定版本:
sudo yum install docker-ce docker-ce-cli containerd.io -y
sudo systemctl start docker
docker -v
docker --help
docker version
# 方式一
systemctl start docker
# 方式2
service docker start
# 方式一
systemctl stop docker
# 方式二
service docker start
# 方式一
systemctl restart docker
# 方式二
service docker restart
systemctl status docker
# 查看镜像---本地的
docker images
# 搜索镜像--首先本地 --默认的地址
docker search 镜像名称
# 找到所有的镜像--拉取 pull
docker pull tomcat #最新版本
docker pull tomcat:7 # 指定版本
# 镜像重命名
docker images # 查看镜像ID
docker rmi IMAGEID:TAG # 使用IMAGE ID删除镜像
docker rmi PEPOSITORY # 使用镜像名称删除
docker ps # 查看在运行的容器
docker ps -a # 查看所有的容器
docker rename 容器旧名称 容器新名称
docker create --name=容器名称 镜像名称 # 只是创建,没有运行
docker start 容器名称 # start 后面可以跟 容器的id(前2-3位) 或者 name
docker stop 容器名称 # start 后面可以跟 容器的id(前2-3位) 或者 name
docker rm 容器id或者名字
docker rm -f 容器id或者名字
docker stop $(docker ps -a -q)
docker rm $(docker ps -a -q)
--name 指定容器名称
-i # 运行容器
-t # 容器启动后,进入命令行
-d # 守护进程-后台运行
-e # 设置环境变量
-p 宿主机的端口:容器的端口 # 端口映射
--link 容器名称 # 启动时关联其他容器
-v 宿主机目录:容器目录 # 目录映射--挂载
我们将硬盘上的一个目录挂载到这个位置,方便后续更新镜像后继续使用原来的工作目录
-v /etc/localtime:/etc/localtime 让容器使用和服务器同样的时间设置
后续用到继续补充
# 进入命令行
docker run -it --name=容器名称 镜像名称 /bin/bash # -t 指定shell类型
# 不进入命令行
docker run -di --name=容器名称 镜像名称
docker exec -it myTomcat2 /bin/bash
exit # 退出容器
touch xt.txt
# 把该文件复制到容器里去
docker cp xt.txt myTomcat2:/
# 进入根目标
cd /
# 查看
ls
touch abc.txt
#2- 退出容器
exit
#3-
docker cp myTomcat2:/abc.txt /root
docker logs [options] 容器获取容器的日志。
命令格式:
$ docker logs [OPTIONS] CONTAINER
Options:
--details 显示更多的信息
-f, --follow 跟踪实时日志
--since string 显示自某个timestamp之后的日志,或相对时间,如42m(即42分钟)
--tail string 从日志末尾显示多少行日志, 默认是all
-t, --timestamps 显示时间戳
--until string 显示自某个timestamp之前的日志,或相对时间,如42m(即42分钟)
例子:
例如打印容器某应用后10行的内容
docker logs -f --tail 10 容器名称或容器ID
查看指定时间后的日志,只显示最后100行:
docker logs -f -t --since="2022-03-27" --tail=100 CONTAINER_ID
查看最近30分钟的日志:
docker logs --since 30m CONTAINER_ID
查看某时间之后的日志:
docker logs -t --since="2022-03-27T10:20:37" CONTAINER_ID
查看某时间段日志:
docker logs -t --since="2022-03-27T10:20:37" --until "2022-03-27T10:20:37" CONTAINER_ID
默认情况下,docker下载镜像是从官网下载,下载速度特别特别的慢。使用阿里云加速器可以提升获取Docker官方镜像的速度。
# 打开daemon.json文件,添加或修改如下内容
vi /etc/docker/daemon.json
{
"registry-mirrors": ["https://3q6v6v0z.mirror.aliyuncs.com"]
}
# 重启
systemctl restart docker
注意:此网址是从阿里云控制台复制过来的,每个登录用户都不一样。当然用上面的这个地址也可以。
docker save -o name.tar 容器名称
docker load -i name.tar
宿主机linux查看时间
date
Sun Mar 27 12:01:36 CST 2022
yum install ntp #安装ntp服务
# 同步阿里时间
docker cp /etc/localtime CONTAINER_ID:/etc/localtime
# 可能存在问题
# 抛异常
Error response from daemon: Error processing tar file(exit status 1): invalid symlink "/usr/share/zoneinfo/UCT" -> "../usr/share/zoneinfo/Asia/Shanghai”
# 解决办法
docker cp /usr/share/zoneinfo/Asia/Shanghai 容器id:/etc/localtime
#重启容器
docker restart 容器id
ntpdate ntp1.aliyun.com
1.查看portainer镜像
docker search portainer
2.选择喜欢的portainer风格镜像,下载
docker pull portainer/portainer
3.启动dockerui容器
docker run -d --name portainerUI -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock portainer/portainer
4、浏览器访问 http://你虚拟机的ip:9000, 设置一个密码即可,点击创建用户 密码要8位以上
5、进入页面直接选择Local ,点击连接
# 查看防火墙状态
systemctl status firewalld
service iptables status
1:查看防火状态
systemctl status firewalld
service iptables status
2:暂时关闭防火墙(重启后失效)
systemctl stop firewalld
service iptables stop
3:永久关闭防火墙
systemctl disable firewalld
chkconfig iptables off
4:重启防火墙
systemctl enable firewalld
service iptables restart