Docker常用指令
Docker常用指令
ELIX下载Docker
Install Docker Engine on CentOS | Docker Documentation
基本操作
启动dockersystemctl start docker
显示docker的版本信息docker version
显示docker的系统信息,包括镜像和容器的数量docker info
帮助命令docker 命令 --help
查看所有本地主机上的镜像docker images
搜索镜像docker search
下载镜像docker pull
删除镜像docker rmi -f 镜像id
新建容器并启动docker run 镜像id
列出所有运行的容器docker ps
容器id 删除指定容器docker rm
删除指定的容器(这里示范删除全部容器)docker rm -f $(docker ps -aq)
启动容器docker start 容器id
重启容器docker restart容器id
停止当前正在运行的容器docker stop 容器id
强制停止当前容docker kill 容器id
查看容器中的进程信息docker top 容器id
进入容器终端docker exec -it 容器id
进入当前容器后开启一个新的终端,可以在里面操作docker exec
进入容器正在执行的终端docker attach
从容器内拷贝到主机上docker cp 容器id:容器内路径 主机目的路径
创建容器
1 | BASH |
查看docker内存使用情况docker stats
测试容器curl ip地址:端口
可视化工具portainerdocker run -d -p 8080:9000 \--restart=always -v /var/run/docker.sock:/var/run/docker.sock --privileged=true portainer/portainer
UnionFs (联合文件系统)
docker的镜像实际上由一层一层的文件系统组成,这种层级的文件系统UnionFS。
boots(boot file system)主要包含 bootloader和 Kernel, bootloader主要是引导加 kernel,
Linux刚启动时会加bootfs文件系统,在 Docker镜像的最底层是 boots。这一层与我们典型的
Linux/Unix系统是一样的,包含boot加載器和内核。当boot加载完成之后整个内核就都在内存中了,此时
内存的使用权已由 bootfs转交给内核,此时系统也会卸载bootfs。
rootfs(root file system),在 bootfs之上。包含的就是典型 Linux系统中
的/dev,/proc,/bin,/etc等标准目录和文件。 rootfs就是各种不同的操作系统发行版,比如 Ubuntu,
Centos等等。
提交镜像文件
1 | BASH |
数据卷(可理解为宿主机与容器的双向文件同步绑定)
1 | BASH |
三种挂载: 匿名挂载、具名挂载、指定路径挂载
匿名挂载 -v 容器内路径 docker run -d -P --name nginx01 -v /etc/nginx nginx
具名挂载 -v 卷名:容器内路径 docker run -d -P --name nginx02 -v juming-nginx:/etc/nginx nginx
指定路径挂载 -v /宿主机路径:容器内路径
权限
1 | docker run -d -P --name nginx05 -v juming:/etc/nginx:ro nginx |
ro #readonly 只读
rw #readwrite 可读可写
ro 只要看到ro就说明这个路径只能通过宿主机来操作,容器内部是无法操作!
DockerFile常用指令
1 | BASH |
构建镜像 docker build -f mydockerfile-centos -t mycentos:0.1 .
1 | docker build -f 文件路径 -t 镜像名:[tag] . |
实操—构建镜像
1.准备镜像文件
2.编写dockerfile
1 | BASH |
3.构建镜像
1 | docker build -t mytomcat:0.1 . |
4.启动镜像
1 | BASH |
发布docker
登录:docker login
构建:docker build -t username/mytomcat:0.1 .
执行docker tag 容器id chengcoder/mytomcat:1.0
1 | docker push mytomcat |
docker运行流程
docker网络
Linux 虚拟网络设备 veth-pair 详解,看这一篇就够了 - bakari - 博客园 (cnblogs.com)
在容器中安装网络工具:
ifconfig: yum -y install net-tools
ip addr: yum -y installiproute
创建网络:docker network create --driver bridge --subnet 192.168.0.0/16 --gateway 192.168.0.1 mynet
查看网络:docker network inspect mynet
用自建网络启动容器:docker run -d -P --name my-web01 --net mynet mytomcat
网络连通:docker network connect mynet mytomcat
不同网段的容器联通,就是将 tomcat01加到 mynet网络 。一个容器两个ip
实战:部署redis cluster集群
创建网络docker network create redis --subnet 172.38.0.0/16
脚本创建六个redis单机配置
1 | BASH |
启动六个redis服务
1 | BASH |
进入一个redisdocker exec -it redis-1 /bin/sh
创建集群redis-cli --cluster create 172.38.0.11:6379 172.38.0.12:6379 172.38.0.13:6379 172.38.0.14:6379 172.38.0.15:6379 172.38.0.16:6379 --cluster-replicas 1
查看集群状态cluster info
cluster nodes
springboot打包成镜像
编写dockerfile
1 | DOCKERFILE |
构建镜像docker build -t --name imagename .
运行容器
或者:
1 | DOCKERFILE |
docker swarm
需要在同一内网(不同需要认证)
在要配置的机器上执行:
docker swarm join-token manager
或
1 | docker swarm join-token worker |
获取token令牌(是一个命令)
然后在主节点上执行即可