主要是总结日常开发中常用的docker的命令
Docker介绍
-
Docker 是一个开源的应用容器引擎。
-
Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的Linux 机器上,也可以实现虚拟化。
-
容器是完全使用沙箱机制(类似iPhone的app),更重要的是容器性能开销极低.
-
容器共享机器的操作系统内核,因此每个应用程序不需要操作系统,从而提高服务器效率并降低服务器和许可成本, 提供业界最强的默认隔离能力.
Docker组织架构图
Docker的安装
mac版本安装
- 通过官网 www.docker.com/get-started选择对应的版本进行安装
Linux环境安装
- 安装yum-utils
yum install -y yum-utils device-mapper-persistent-data lvm2
复制代码
- 为yum源添加docker仓库位置
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
复制代码
- 安装docker服务
yum install docker-ce
复制代码
- 启动docker服务
systemctl start docker
复制代码
Docker镜像常用命令
搜索镜像 docker search
➜ dockerImages docker search nginx
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
nginx Official build of Nginx. 14999 [OK]
jwilder/nginx-proxy Automated Nginx reverse proxy for docker con… 2033 [OK]
richarvey/nginx-php-fpm Container running Nginx + PHP-FPM capable of… 814 [OK]
复制代码
下载镜像 docker pull
查看镜像的历史版本 hub.docker.com/
docker search命令只能查找出是否有该镜像,不能找到该镜像支持的版本.需要进入docker官网进行查看(hub.docker.com/)
查看镜像的历史版本
进行镜像的下载操作
docker pull mysql:8.0.25
复制代码
列出镜像 docker images
➜ dockerImages docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
redis 5 59fbd83692ee 4 weeks ago 98.4MB
mysql 5.7 2c9028880e58 4 weeks ago 447MB
mongo 4.2.5 fddee5bccba3 14 months ago 388MB
logstash 7.6.2 fa5b3b1e9757 14 months ago 813MB
kibana 7.6.2 f70986bc5191 14 months ago 1.01GB
elasticsearch 7.6.2 f29a1ee41030 14 months ago 791MB
复制代码
删除镜像 docker rmi
- 指定名称删除镜像
docker rmi mysql:5.7
复制代码
- 指定名称删除镜像(强制)
docker rmi -f mysql:5.7
复制代码
- 删除所有没有引用的镜像
docker rmi `docker images | grep none | awk '{print $3}'`
复制代码
- 强制删除所有镜像
docker rmi -f $(docker images)
复制代码
打包镜像 docker build -t
# -t 表示指定镜像仓库名称/镜像名称:镜像标签 .表示使用当前目录下的Dockerfile文件
docker build -t mall/mall:1.1.0-SNAPSHOT .
复制代码
推送镜像
# 登录Docker Hub
docker login
# 给本地镜像打标签为远程仓库名称
docker tag mall/mall:1.1.0-SNAPSHOT fy/mall:1.1.0-SNAPSHOT
# 推送到远程仓库
docker push fy/mall:1.1.0-SNAPSHOT
复制代码
Docker容器常用命令
新建并启动容器
docker run -p 80:80 --name nginx \
-e TZ="Asia/Shanghai" \
-v /mydata/nginx/html:/usr/share/nginx/html \
-d nginx:1.10
复制代码
- -p: 将宿主机和容器端口进行映射,格式为:宿主机端口:容器端口;
- –name: 指定容器名称,之后可以通过容器名称来操作容器
- -e: 设置容器的环境变量,这里设置的是时区;
- -v: 将宿主机上的文件挂载容器上,格式为:宿主机文件目录:容器文件目录
- -d: 表示容器以后台方式运行
列出容器
展示运行中的容器 docker ps
➜ dockerImages docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e8be56dcb1f7 logstash:7.6.2 "/usr/local/bin/dock…" 2 hours ago Up 2 hours 5044/tcp, 0.0.0.0:4560-4563->4560-4563/tcp, :::4560-4563->4560-4563/tcp, 9600/tcp logstash
72123ac57300 kibana:7.6.2 "/usr/local/bin/dumb…" 2 hours ago Up 2 hours 0.0.0.0:5601->5601/tcp, :::5601->5601/tcp kibana
375c89abf1ee elasticsearch:7.6.2 "/usr/local/bin/dock…" 2 hours ago Up 2 hours 0.0.0.0:9200->9200/tcp, :::9200->9200/tcp, 0.0.0.0:9300->9300/tcp, :::9300->9300/tcp elasticsearch
2b73a2694943 mysql:5.7 "docker-entrypoint.s…" 20 hours ago Up 6 hours 0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp mysql
复制代码
展示所有的容器 docker ps -a
➜ dockerImages docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e8be56dcb1f7 logstash:7.6.2 "/usr/local/bin/dock…" 2 hours ago Up 2 hours 5044/tcp, 0.0.0.0:4560-4563->4560-4563/tcp, :::4560-4563->4560-4563/tcp, 9600/tcp logstash
72123ac57300 kibana:7.6.2 "/usr/local/bin/dumb…" 2 hours ago Up 2 hours 0.0.0.0:5601->5601/tcp, :::5601->5601/tcp kibana
375c89abf1ee elasticsearch:7.6.2 "/usr/local/bin/dock…" 2 hours ago Up 2 hours 0.0.0.0:9200->9200/tcp, :::9200->9200/tcp, 0.0.0.0:9300->9300/tcp, :::9300->9300/tcp elasticsearch
029b5496bb2b nginx:1.10 "nginx -g 'daemon of…" 5 hours ago Created 80/tcp, 443/tcp nginx
2b73a2694943 mysql:5.7 "docker-entrypoint.s…" 20 hours ago Up 6 hours 0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp mysql
复制代码
停止容器 docker stop
## 容器名称
docker stop mysql
#或者容器id
docker stop 2b73a2694943
复制代码
强制停止容器 docker kill
## 容器名称
docker kill mysql
复制代码
启动容器 docker start
## 容器名称
docker start mysql
复制代码
进入容器 docker exec -it $ContainerName /bin/bash
docker exec -it mysql /bin/bash
复制代码
删除容器 docker rm
- 删除指定容器:
docker rm $ContainerName
复制代码
- 强制删除所有容器;
docker rm -f $(docker ps -a -q)
复制代码
查看容器的日志
- 查看容器产生的全部日志
docker rm $ContainerName
➜ dockerImages docker logs elasticsearch
OpenJDK 64-Bit Server VM warning: Option UseConcMarkSweepGC was deprecated in version 9.0 and will likely be removed in a future release.
{"type": "server", "timestamp": "2021-06-12T15:15:29,435+08:00", "level": "INFO", "component": "o.e.e.NodeEnvironment", "cluster.name": "elasticsearch", "node.name": "375c89abf1ee", "message": "using [1] data paths, mounts [[/usr/share/elasticsearch/data (grpcfuse)]], net usable_space [373.2gb], net total_space [465.6gb], types [fuse.grpcfuse]" }
{"type": "server", "timestamp": "2021-06-12T15:15:29,438+08:00", "level": "INFO", "component": "o.e.e.NodeEnvironment", "cluster.name": "elasticsearch", "node.name": "375c89abf1ee", "message": "heap size [494.9mb], compressed ordinary object pointers [true]" }
复制代码
- 动态查看容器产生的日志
docker logs -f $ContainerName
复制代码
同步宿主机时间到容器
docker cp /etc/localtime $ContainerName:/etc/
复制代码
指定容器时区
docker run -p 80:80 --name nginx \
-e TZ="Asia/Shanghai" \
-d nginx:1.10
复制代码
查看容器资源占用情况 docker status
- 查看指定容器资源占用状况,比如cpu、内存、网络、io状态
docker stats $ContainerName
➜ dockerImages docker stats elasticsearch
CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
375c89abf1ee elasticsearch 1.21% 939.5MiB / 9.732GiB 9.43% 19.1MB / 7.4MB 45.1kB / 246kB 95
复制代码
- 查看所有容器资源占用情况
docker stats -a
➜ dockerImages docker stats -a
CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
e8be56dcb1f7 logstash 4.85% 852.9MiB / 9.732GiB 8.56% 856kB / 7.24MB 12.3kB / 418kB 93
72123ac57300 kibana 0.48% 409.3MiB / 9.732GiB 4.11% 7.17MB / 12.3MB 58.4MB / 4.1kB 12
375c89abf1ee elasticsearch 1.55% 939.6MiB / 9.732GiB 9.43% 19.3MB / 7.44MB 45.1kB / 246kB 95
029b5496bb2b nginx 0.00% 0B / 0B 0.00% 0B / 0B 0B / 0B 0
2b73a2694943 mysql 0.21% 201MiB / 9.732GiB 2.02% 19.1kB / 0B 31.9MB / 8.19kB 27
2bb6eacfc945 redis 0.00% 0B / 0B 0.00% 0B / 0B 0B / 0B 0
复制代码
查看容器磁盘使用情况 docker system df
➜ dockerImages docker system df
TYPE TOTAL ACTIVE SIZE RECLAIMABLE
Images 11 6 4.431GB 1.84GB (41%)
Containers 6 4 137.3MB 11B (0%)
Local Volumes 6 0 175.4MB 175.4MB (100%)
Build Cache 0 0 0B 0B
复制代码
指定账号进入容器内部
# 使用root账号进入容器内部
docker exec -it --user root $ContainerName /bin/bash
复制代码
Docker容器清理
删除所有关闭的容器
# 使用root账号进入容器内部
docker ps -a | grep Exit | cut -d ' ' -f 1 | xargs docker rm
复制代码
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END