1、docker帮助命令:
docker version --显示版本的信息
docker info --显示系统及容器的信息
docker --help --帮助命令
2、镜像命令:
docker images --查看本机所有的镜像命令
可选项:
--filter=STARS=3000 --过滤STARS大于3000的镜像
docker images --filter=stars=3000
docker search 镜像名 --从仓库中搜索镜像名
docker pull 镜像名:版本 --从仓库中下载指定的镜像版本
docker rmi -f 镜像名:版本或镜像ID --删除镜像
docker rmi -f $(docker images -aq) --删除所有的镜像
docker images -qa --将所有的镜像ID显示出来
docker ps -qa --将所有的容器ID显示出来
3、容器命令:【先有镜像,才有创建容器】
docker run [option]IMAGE[COMMAND][ARG...]
说明:option,设置项;COMMAND 以什么命令形式启动,镜像一般都有,所以不用特殊指定。
--option
--name="name" 拟定一个容器名字
-d 后台运行,如果不加这个参数,docker容器启动后不能退出[这里的退出指定的是:docker run 镜像名的界面不能退出],否则就会终止;
-it 使用交互方式运行,进入容器查看内容
-p 指定容器端口 主机端口:容器端口(常用)
-P 随机端口
--restart=always 开机自启,如果不加这个参数,系统重启后,运行的容器都会停止。
例子:启动并执行一个镜像
docker run --name="容器名" -it 镜像名或镜像ID /bin/bash
[docker run -it 容器名 /bin/bash:该命令的-it是交互方式进行的,也就是能够在宿主机跟容器中来回切换。如果不加,容器一运行就停止;
/bin/bash:该命令是执行进入容器中。如果不可加这个,进入容器需要执行:docker exec/attach 容器名或容器ID才能进入容器
/bin/bash ----是运行命令 如果不加这个,不能进入容器中]
docker update 容器名/ID --restart=always 更新容器开机自启
[update不能更新端口映射,容器启动的时候是在Linux的内网中,如果外网/公网需要访问容器的服务,需要将公网的端口映射内网的容器端口中]
注意:
进入当前正在运行的容器【通常容器都是使用后台方式运行的,有时需要进入容器,修改一些配置】
docker exec -it 容器名或容器ID /bin/bash
docker attach 容器名或容器ID
查看运行的容器命令:
docker ps 查看所有正在运行的容器
docker ps -a 查看所有历史运行的容器
docker ps -n=? 显示最近运行过的几个命令
docker ps -qa 显示容器所有的ID
退出容器命令:
exit:直接退出并停止
ctrl+P+Q:退出容器不停止
删除容器:
docker rm 容器ID或容器名 【不能删除正在启动的容器,如果要强制一个删除一个容器,如果加-f】
docker rm -f $(docker ps -aq) 递归删除容器
docker ps -aq | xargs docker rm 递归删除容器
停止容器:
docker stop 容器名或容器ID 停止正在运行的容器
docker kill 容器名或容器ID 杀死正在镜像的容器进行
docker start 容器名或容器ID 启动一个容器
查看容器内部的元素信息命令:
docker inspect
例子:
docker inspect 9252bd718b306d
4、查看docker日志命令:
docker logs 容器名
docker logs --help
docker logs -t -f --tail n 容器名或容器ID 显示容器多少条日志,注意加了tail参数,必须要指定条数
5、查看容器内部的进程命令:
docker top 容器名或容器ID
6、commit[将正在运行的容器提交成一个新的镜像]
语法:
docker commit [options] CONTAINER [REPOSITY[:TAG]]
docker commit 容器ID 提交一个容器作为新的镜像
例子:
docker commit -a="FengYu" -m="add webapps app" 容器ID 镜像名:版本
参数说明:
-a 是作者;-m是描述
7、卷挂载【本机目录与容器内的目录同步】
docker run -it -p 8081:8081 -p 8082:8082 -v /usr/local/tomcat/bin1:/usr/local/tomcat11/bin
-v /usr/local/tomcat/webapps1:/usr/local/tomcat11/webapps/sguap-server
-v /usr/local/tomcat/bin2:/usr/local/tomcat22/bin
-v /usr/local/tomcat/webapps2:/usr/local/tomcat22/webapps:ro
mytomcat-cx:1.0 /bin/bash
ro:表示容器内的目录只能读;rw:表示容器内的目录可以读写。
注意:卷挂载强调的是目录与目录的同步。不需要指定到目录下的某一个文件,当然可以指定到某一个文件。卷挂载的容器不能作为镜像提交。
容器数据卷:容器跟容器同步
--volumes-from
子容器 --volumes-from 父容器
docker run -it --name cs01 镜像名:版本/镜像ID
docker run -it --name cs02 --volumes-from cs01 镜像名:版本/镜像ID
cs01跟cs02是容器
8、CMD跟ENTRYPOINT的区别:
CMD指定容器启动时要运行的命令,只有最后一个有效,可被代替,指的是在追加命令的情况下
ENTRYPOINT指定这个容器启动的时候要进行运行的命令,可以追加。
CMD ["ls","-a"]
指令篇:
1、删除镜像:
docker rmi 镜像名 :版本号
docker search 镜像名
下载镜像
docker pull 镜像名
发布镜像
docker push 镜像名
---下载及发布镜像是针对镜像仓库而言的
2、删除容器
docker rm 容器ID
docker rm -f 容器ID [强制删除正在运行的容器]
3、运行容器
docker run [option] 镜像名:版本号(容器ID)/bin/bash
option:
--name:给容器取个名字
-a:作者
-d:后台运行
-p:暴露外网端口
-P:随机端口
-v:挂载卷
4、给镜像打标记
docker tag 作者/镜像名:版本
5、进入容器
docker exec --会启动一个新的容器
docker attach --不会启动一个新的容器
CP拷贝命令:
-----------
docker cp 容器内的文件 宿主机指定目录下;
docker cp 宿主机指定目录下 容器内的文件;
如:docker /home/nginx.conf 58355eab288e:/etc/nginx/nginx.conf
docker cp 容器ID:容器文件 宿主机目录下
cp是从容器内将文件拷贝到宿主机指定的目录下;从宿主机将容器拷贝到容器内用卷命令。
例子:
将容器(ID58355eab288e)中一个test文件拷贝到宿主机上home目录下
docker cp 58355eab288e:/home/test /home
6、指定端口访问地址
docker run -d -it --name tomcat -p 9000:8080 tomcat-jdk-images
docker stats 查看内存使用情况
docker run -e 系统简称名_JAVA_OPTS=“-Xms64m -Xms512m”镜像名
【-e 参数是设置环境变量的】
7、用完就删的镜像指令
docker run -it --rm tomcat 【该命令一般用于测试】
8、将自己制作的镜像打包
docker save -o 镜像名.tar 镜像名:标签
9、将自己的镜像导入系统中
docker load -i 镜像名.tar
10、swarm
1、集群的管理和编号。docker可以初始化一个swarm,其他节点加入(工作者、管理者);
2、Node就是一个docker节点,多个节点就组成可一个网络集群。(管理、工作者)
3、service任务,可以在管理节点或者工作节点来运行。核心!用户访问!
4、task 容器内的命令,细节。
------------
docker swarm --help
docker swarm init --初始化一个集群节点(主节点,后面的worker跟manager节点都是在其之下)
docker swarm init --help 查看初始命令
-----------------------------------------
docker swarm init --advertise-add ip --初始化一个集群并添加IP(IP有公网跟私网,私网是对内的,不需要前,公网是对外的,需要钱)。通过改命令,可以获取令牌,选择需要添加的是worker还是manager节点。
docker swarm join-token worker --向集群中添加一个工作节点(敲入该指令可以生成需要添加到集群的工作节点命令)
docker swarm join-token manager --向集群中添加一个管理节点(敲入该指令可以生成需要添加到集群的管理节点命令)
-------------------------------------------
docker swarm leave --将管理节点或工作节点脱离集群
docker swarm update --更新一个集群
-------------------------------------------
docker node ls --查看节点信息
11、Raft协议
双主双从节点:manager and worker
Raft协议:保证大多数节点存活才可以用。普通的manager至少>1台,集群至少3台。
12、systemctl stop docker 停止docker容器
13、docker service --help
create --创建一个新的服务
docker service create --help --查看帮助
docker service create -p 8080:80 --name my-nginx nginx --这里的nginx是镜像
inspect --展示服务的详细信息
docker service inspect my-nginx
logs --查看服务或副本的日志
docker logs 容器名/容器ID [查看容器运行错误日志]
ls --展示服务列表
docker service ls --查看服务列表
ps --展示一个或多个服务的副本状态
docker service ps my-nginx --查看副本列表
rm --移除一个或多个服务
rollback --取消服务配置,还原初始设置
scale --扩缩一个或多个副本服务
docker service scale --help --查看帮助
docker service scale my-nginx=5 动态扩展5个副本
update --更新一个服务
docker service update --help --查看帮助
docker service update --replicas 3 my-nginx
调整service以什么方式运行:
--mode replicated
docker service create --mode replicated --name mytom tomcat:7 -- 默认的,在副本节点运行
--mode global
docker service create --mode global--name mytom tomcat:7 --全局的,在任何节点都可以运行
14、灰度发布:平滑升级项目,不用中断项目,停止服务。
docker run 容器启动!不具有扩缩容器
docker service 服务!具有扩缩容器,滚动更新!
命令->管理->api->调度->工作节点 (创建task容器、维护创建!)
kubectl service api
--wordpress 博客
15、docker stack --集群启动
docker compose --单机启动
----
docker secret --安全
docker config --配置
16、Linux 、docker、k8s(适合10台以上的服务器)
Go语言(由B语言、C语言、unix跟谷歌V8引擎组合而成)
---------
Docker、K8S、Etcd(存储)是Go开发的。