Docker命令大全
docker attach #连接到正在运行中的容器 docker build #使用 Dockerfile 创建镜像 docker builder #管理builds docker builder prune #清除build缓存 docker checkpoint #管理checkpoints docker checkpoint create #从正在运行的容器创建检查点 docker checkpoint ls #列出容器的检查点 docker checkpoint rm #删除指定的检查点 docker commit #从容器创建一个新的镜像 docker config #管理Docker配置 docker config create #创建配置文件 docker config inspect #查看配置文件信息 docker config ls #显示docker里已经保存得配置文件 docker config rm #删除配置文件 docker container #管理容器 docker container prune #删除所有已停止的容器 docker context #管理contexts docker context create #创建一个上下文 docker context export #将上下文导出到tar或kubecconfig文件中 docker context import #从tar或zip文件导入上下文 docker context inspect #在一个或多个上下文上显示详细信息 docker context ls #列出上下文 docker context rm #删除一个或多个上下文 docker context update #更新 docker context use #设置当前docker的上下文 docker cp #用于容器与主机之间的数据拷贝 docker create #创建一个新的容器但不启动它 docker diff #检查容器里文件结构的更改 docker events #从服务器获取实时事件 docker exec #在运行的容器中执行命令 docker export #将文件系统作为一个tar归档文件导出到STDOUT docker history #查看指定镜像的创建历史 docker image #管理镜像 docker image inspect #显示一个或多个镜像的元数据 docker image ls #列出本地镜像 docker image prune #删除没有使用的镜像 docker image rm #删除一个或多个镜像 docker images #列出本地镜像 docker import #从归档文件中创建镜像 docker info #显示 Docker 系统信息,包括镜像和容器数 docker inspect #获取容器/镜像的元数据 docker kill #杀掉一个运行中的容器 docker load #导入使用 docker save 命令导出的镜像 docker login #登陆到一个Docker镜像仓库,如果未指定镜像仓库地址,默认为官方仓库 Docker Hub docker logout #登出一个Docker镜像仓库,如果未指定镜像仓库地址,默认为官方仓库 Docker Hub docker logs #获取容器的日志 docker manifest #管理manifest(实验,不应用于生产环境) docker manifest annotate #向本地镜像清单添加附加信息 docker manifest create #创建用于注释和推入注册表的本地清单列表 docker manifest inspect #显示镜像清单或清单列表 docker manifest push #将清单列表推入仓库 docker manifest rm #从本地存储中删除一个或多个清单列表 docker network #管理网络 docker network connect #将容器连接到网络 docker network create #创建一个网络 docker network disconnect #断开容器的网络 docker network inspect #显示一个或多个网络的元数据 docker network ls #列出网络 docker network prune #删除所有没有使用的网络 docker network rm #删除一个或多个网络 docker node #管理集群(swarm)节点 docker node demote #从群集(swarm)管理器中降级一个或多个节点 docker node inspect #显示一个或多个节点的元数据 docker node ls #列出群集(swarm)中的节点 docker node promote #将一个或多个节点推入到群集管理器中 docker node ps #列出在一个或多个节点上运行的任务,默认为当前节点 docker node rm #从群集(swarm)删除一个或多个节点 docker node update #更新一个节点 docker pause #暂停容器中所有的进程 docker plugin #管理插件 docker plugin create #从rootfs和配置创建一个插件。插件数据目录必须包含config.json和rootfs目录。 docker plugin disable #禁用插件 docker plugin enable #启用插件 docker plugin inspect #显示一个或多个插件的元数据 docker plugin install #安装一个插件 docker plugin ls #列出所有插件 docker plugin push #将插件推送到注册表 docker plugin rm #删除一个或多个插件 docker plugin set #更改插件的设置 docker plugin upgrade #升级现有插件 docker port #列出指定的容器的端口映射,或者查找将PRIVATE_PORT NAT到面向公众的端口 docker ps #列出容器 docker pull #从镜像仓库中拉取或者更新指定镜像 docker push #将本地的镜像上传到镜像仓库,要先登陆到镜像仓库 docker rename #重命名容器 docker restart #重启容器 docker rm #删除一个或多个容器 docker rmi #删除一个或多个镜像 docker run #创建一个新的容器并运行一个命令 docker save #将指定镜像保存成 tar 归档文件 docker search #从Docker Hub查找镜像 docker secret #管理Docker secrets docker secret create #从文件或STDIN创建一个秘密作为内容 docker secret inspect #显示有关一个或多个秘密的详细信息 docker secret ls #列出秘密 docker secret rm #删除一个或多个秘密 docker service #管理服务 docker service create #创建一个服务 docker service inspect #查看服务的元数据 docker service logs #获取服务的日志 docker service ls #列出服务 docker service ps #列出一个或多个服务的任务 docker service rm #删除一个或多个服务 docker service rollback #将更改恢复到服务的配置 docker service scale #缩放一个或多个复制服务 docker service update #更新服务 docker stack #管理堆栈 docker stack deploy #部署新的堆栈或更新现有堆栈 docker stack ls #列出现有堆栈 docker stack ps #列出堆栈中的任务 docker stack rm #删除堆栈 docker stack services #列出堆栈中的服务 docker start #启动一个或多个已经被停止的容器 docker stats #显示容器的实时流资源使用统计信息 docker stop #停止一个运行中的容器 docker swarm #管理集群(Swarm) docker swarm ca #查看或旋转当前群集CA证书。此命令必须针对管理器节点 docker swarm init #初始化一个群集(Swarm) docker swarm join #加入群集作为节点和/或管理器 docker swarm join-token #管理加入令牌 docker swarm leave #离开群集(Swarm) docker swarm unlock #解锁群集(Swarm) docker swarm unlock-key #管理解锁钥匙 docker swarm update #更新群集(Swarm) docker system #管理Docker docker system df #显示docker磁盘使用情况 docker system events #从服务器获取实时事件 docker system info #显示系统范围的信息 docker system prune #删除未使用的数据 docker tag #标记本地镜像,将其归入某一仓库 docker top #查看容器中运行的进程信息,支持 ps 命令参数 docker trust #管理Docker镜像的信任 docker trust inspect #返回有关key和签名的低级信息 docker trust key #管理登入Docker镜像的keys docker trust key generate #生成并加载签名密钥对 docker trust key load #加载私钥文件以进行签名 docker trust revoke #删除对镜像的认证 docker trust sign #镜像签名 docker trust signer #管理可以登录Docker镜像的实体 docker trust signer add #新增一个签名者 docker trust signer remove #删除一个签名者 docker unpause #恢复容器中所有的进程 docker update #更新一个或多个容器的配置 docker version #显示 Docker 版本信息 docker volume #管理volumes docker volume create #创建一个卷 docker volume inspect #显示一个或多个卷的元数据 docker volume ls #列出卷 docker volume prune #删除所有未使用的卷 docker volume rm #删除一个或多个卷 docker wait #阻塞运行直到容器停止,然后打印出它的退出代码
(四)、Docker部署软件实践
1.Docker安装Nginx
docker search nginx #搜索 docker pull nginx #拉去 docker images # 查看镜像 # -d后台运行 #--name给容器命名 #-p宿主机端口:容器内部端口 docker run -d --name nginx01 -p 3344:80 nginx # 创建容器并启动 curl localhost:3344 #运行测试
端口暴露的概念
开启安全组3344
利用外网也能访问的到
[root@Jsxs ~]# docker ps #查看正在运行的容器 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES ec573efd8a87 nginx "/docker-entrypoint.…" 23 minutes ago Up 23 minutes 0.0.0.0:3344->80/tcp, :::3344->80/tcp nginx01 [root@Jsxs ~]# docker exec -it nginx01 /bin/bash #以交互式的方式启动名字叫做nginx01的容器 root@ec573efd8a87:/# whereis nginx #查找配置 nginx: /usr/sbin/nginx /usr/lib/nginx /etc/nginx /usr/share/nginx root@ec573efd8a87:/# cd /etc/nginx #进入配置地址 root@ec573efd8a87:/etc/nginx# exit #离开,但是后台还在 exit [root@Jsxs ~]#docker ps #查看正在运行的 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES ec573efd8a87 nginx "/docker-entrypoint.…" 32 minutes ago Up 32 minutes 0.0.0.0:3344->80/tcp, :::3344->80/tcp nginx01 [root@Jsxs ~]# docker stop ec573efd8a87 #停止 ec573efd8a87
考问题:我们每次都需要改动nginx配置,都需要进入容器内部?十分的麻烦,我们要是可以在容器外部提供一个映射路径,达到可以在容器外部修改文件名,容器内部就可以进行自动修改?-数据卷
2.Docker安装Tomcate
# 我们之前的启动器都是后台,停止容器之后,容器还是可以查到。 这种方式一般是 #用完就删除,常常用于测试。 docker run -it --rm tomcat:9.0 [root@Jsxs ~]# docker ps #查找正在运行的 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES [root@Jsxs ~]# docker ps -a #查找历史记录 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES ec573efd8a87 nginx "/docker-entrypoint.…" 44 minutes ago Exited (0) 11 minutes ago nginx01 48fa8f942572 centos "/bin/bash" 14 hours ago Exited (0) 14 hours ago heuristic_cerf ----------------------------------------------------------------- docker pull tomcat:9.0 #拉去指定版本 docker images #查看镜像 docker run -d -p 3355:8080 --name tomcat01 tomcat:9.0 # 后台 端口映射 名字 镜像:tage
配置安全组
外网访问成功!
docker exec -it tomcat01 /bin/bash root@db99d2ee658c:/usr/local/tomcat# ll bash: ll: command not found root@db99d2ee658c:/usr/local/tomcat# ls -al total 172 drwxr-xr-x 1 root root 4096 Dec 22 2021 . drwxr-xr-x 1 root root 4096 Mar 22 01:32 .. -rw-r--r-- 1 root root 18970 Dec 2 2021 BUILDING.txt -rw-r--r-- 1 root root 6210 Dec 2 2021 CONTRIBUTING.md -rw-r--r-- 1 root root 57092 Dec 2 2021 LICENSE -rw-r--r-- 1 root root 2333 Dec 2 2021 NOTICE -rw-r--r-- 1 root root 3378 Dec 2 2021 README.md -rw-r--r-- 1 root root 6898 Dec 2 2021 RELEASE-NOTES -rw-r--r-- 1 root root 16507 Dec 2 2021 RUNNING.txt drwxr-xr-x 2 root root 4096 Dec 22 2021 bin drwxr-xr-x 1 root root 4096 Mar 22 01:31 conf drwxr-xr-x 2 root root 4096 Dec 22 2021 lib drwxrwxrwx 1 root root 4096 Mar 22 01:31 logs drwxr-xr-x 2 root root 4096 Dec 22 2021 native-jni-lib drwxrwxrwx 2 root root 4096 Dec 22 2021 temp drwxr-xr-x 2 root root 4096 Dec 22 2021 webapps drwxr-xr-x 7 root root 4096 Dec 2 2021 webapps.dist drwxrwxrwx 2 root root 4096 Dec 2 2021 work root@db99d2ee658c:/usr/local/tomcat# cd webapps root@db99d2ee658c:/usr/local/tomcat/webapps# ls 报出404错误,说明可以访问,但是tomcat有问题,不完整 # 发现问题: 1.linux命令少 2.没有webapps、阿里云镜像的原因,默认是最小的镜像,所有不必要的都剔除掉 # 保证 ---------------------------------------------------------------------- [root@Jsxs ~]# docker ps #查看正在运行的容器 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES [root@Jsxs ~]# docker ps -a #查看历史且存在的容器 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES db99d2ee658c tomcat:9.0 "catalina.sh run" 2 hours ago Exited (143) 2 hours ago tomcat01 ec573efd8a87 nginx "/docker-entrypoint.…" 3 hours ago Exited (0) 3 hours ago nginx01 48fa8f942572 centos "/bin/bash" 16 hours ago Exited (0) 16 hours ago heuristic_cerf [root@Jsxs ~]# docker start db99d2ee658c #启动容器 db99d2ee658c [root@Jsxs ~]# curl localhost:3355 #测试 <!doctype html><html lang="en"><head><title>HTTP Status 404 – Not Found</title><style type="text/css">body {font-family:Tahoma,Arial,sans-serif;} h1, h2, h3, b {color:white;background-color:#525D76;} h1 {font-size:22px;} h2 {font-size:16px;} h3 {font-size:14px;} p {font-size:12px;} a {color:black;} .line {height:1px;background-color:#525D76;border:none;}</style></head><body><h1>HTTP Status 404 – Not Found</h1><hr class="line" /><p><b>Type</b> Status Report</p><p><b>Description</b> The origin server did not find a current representation for the target resource or is not willing to disclose that one exists.</p><hr class="line" /><h3>Apache Tomcat/9.0.56</h3></body></html>[root@Jsxs ~]# docker exec -it tomcat01 /bin/bash root@db99d2ee658c:/usr/local/tomcat# ^C root@db99d2ee658c:/usr/local/tomcat# whereis tomcat #查看目录 tomcat: /usr/local/tomcat root@db99d2ee658c:/usr/local/tomcat# cd /usr/local/tomcat/webapps root@db99d2ee658c:/usr/local/tomcat/webapps# ls root@db99d2ee658c:/usr/local/tomcat/webapps# cd .. root@db99d2ee658c:/usr/local/tomcat# ls #查看列表 BUILDING.txt CONTRIBUTING.md LICENSE NOTICE README.md RELEASE-NOTES RUNNING.txt bin conf lib logs native-jni-lib temp webapps webapps.dist work root@db99d2ee658c:/usr/local/tomcat# webapps.dist/ bash: webapps.dist/: Is a directory root@db99d2ee658c:/usr/local/tomcat# ls BUILDING.txt CONTRIBUTING.md LICENSE NOTICE README.md RELEASE-NOTES RUNNING.txt bin conf lib logs native-jni-lib temp webapps webapps.dist work root@db99d2ee658c:/usr/local/tomcat# cd webapps.dist root@db99d2ee658c:/usr/local/tomcat/webapps.dist# ls ROOT docs examples host-manager manager root@db99d2ee658c:/usr/local/tomcat/webapps.dist# cd .. # 复制文件webapps.dist目录下的文件 复制得到 webapps root@db99d2ee658c:/usr/local/tomcat# cp -r webapps.dist/* webapps root@db99d2ee658c:/usr/local/tomcat# cd webapps root@db99d2ee658c:/usr/local/tomcat/webapps# ls ROOT docs examples host-manager manager
再次测试:访问成功!!
我们以后要部署项目,如果每次都要进入容器十分麻烦?我要是可以在容器外部提供一个映射路径,webapps,我们在外部放置项目,就自动同步到内部就好了!
从以前的删库跑路 到现在的删容器跑路
3.Docker部署es+kilbana
es 暴漏的端口很多 es 十分的消耗内存 es 的数据一般需要放置到安全目录! 挂载
# es 暴露的端口很多! # es 十分耗内存 # es 的数据一般需要放置到安全目录!挂载 # --net somenetwork ? 网络配置 # 启动elasticsearch [root@iz2zeak7sgj6i7hrb2g862z ~]# docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:7.6.2 安装后会很卡 # 测试一下es是否成功启动 ➜ ~ curl localhost:9200 { "name" : "d73ad2f22dd3", "cluster_name" : "docker-cluster", "cluster_uuid" : "atFKgANxS8CzgIyCB8PGxA", "version" : { "number" : "7.6.2", "build_flavor" : "default", "build_type" : "docker", "build_hash" : "ef48eb35cf30adf4db14086e8aabd07ef6fb113f", "build_date" : "2020-03-26T06:34:37.794943Z", "build_snapshot" : false, "lucene_version" : "8.4.0", "minimum_wire_compatibility_version" : "6.8.0", "minimum_index_compatibility_version" : "6.0.0-beta1" }, "tagline" : "You Know, for Search" } #测试成功就关掉elasticSearch,防止耗内存 [root@iz2zeak7sgj6i7hrb2g862z ~]# docker stats # 查看docker容器使用内存情况 ------------------------------------------------------------------------------------------------------- #测试成功就关掉elasticSearch,可以添加内存的限制,修改配置文件 -e 环境配置修改(看自己的容器号,这个可能也是copy别人的,所以号不一样) ➜ ~ docker rm -f d73ad2f22dd3 # stop命令也行 ➜ ~ docker run -d --name elasticsearch01 -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms64m -Xmx512m" elasticsearch:7.6.2 docker stats CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS 56d4fde935d2 elasticsearch01 0.52% 395.9MiB / 1.795GiB 21.54% 656B / 0B 106MB / 729kB 43 ------------------------------------------------------------ [root@abc ~]# curl localhost:9200 { "name" : "56d4fde935d2", "cluster_name" : "docker-cluster", "cluster_uuid" : "VCzCca-fRmCpeINIBPUoTQ", "version" : { "number" : "7.6.2", "build_flavor" : "default", "build_type" : "docker", "build_hash" : "ef48eb35cf30adf4db14086e8aabd07ef6fb113f", "build_date" : "2020-03-26T06:34:37.794943Z", "build_snapshot" : false, "lucene_version" : "8.4.0", "minimum_wire_compatibility_version" : "6.8.0", "minimum_index_compatibility_version" : "6.0.0-beta1" }, "tagline" : "You Know, for Search" }
执行原理
4.可视化管理工具
- portainer(先用这个,这个不是最佳选择)
- 一个docker图形化管理工具
什么是portainer?
Docker图形管理工具!提供一个后台面板供我们操作。
1.安装
# 下载,安装,测试 docker run -d -p 8088:9000 \ --restart=always -v /var/run/docker.sock:/var/run/docker.sock --privileged=true portainer/portainer # 这时候就可以打开外网地址访问8088接口了
除了外网访问也可以内网访问 curl localhost:8088
选择本地
进去之后...