Docker的常用命令
帮助命令
docker version # 显示docker的版本信息
docker info # 显示docker的系统信息,包括镜像和容器数量
docker 命令 --help # 帮助命令
帮助文档的地址:https://docs.docker.com/engine/reference/commandline/attach/
镜像命令
docker images 查看所有本地的主机上的镜像
REPOSITORY: 镜像的仓库源
TAG: 镜像的标签
IMAGE ID: 镜像的id
CREATED: 镜像的创建时间
SIZE: 镜像的大小
可选项:
-a, --all # 列出所有镜像
-q, --quiet #只显示镜像的id
docker search 搜索镜像
可选项:
--filter=starts=3000 # 搜索出来的镜像starts大于3000的
docker pull 下载镜像
下载镜像 docker pull 镜像名[:tag]
[root@server docker]# docker pull mysql
Using default tag: latest如果不写tag,默认就是 latest
latest: Pulling from library/mysql
d121f8d1c412: Pull complete 分层下载,docker image的核心 联合文件系统
f3cebc0b4691: Pull complete
1862755a0b37: Pull complete
489b44f3dbb4: Pull complete
690874f836db: Pull complete
baa8be383ffb: Pull complete
55356608b4ac: Pull complete
dd35ceccb6eb: Pull complete
429b35712b19: Pull complete
162d8291095c: Pull complete
5e500ef7181b: Pull complete
af7528e958b6: Pull complete
Digest: sha256:e1bfe11693ed2052cb3b4e5fa356c65381129e87e38551c6cd6ec532ebe0e808签名
Status: Downloaded newer image for mysql:latest
docker.io/library/mysql:latest真实地址
等价于它
docker pull musql
docker pull docker.io/library/mysql:latest
指定版本下载
docker rmi 删除镜像
docker rmi –f 镜像id #删除指定镜像
docker rmi –f 镜像id 镜像id 镜像id #删除多个镜像
docker rmi –f $(docker images –qa) #删除全部镜像
容器命令
说明:我们有了镜像才可以创建容器,linux,下载一个centos镜像来测试学习
docker pull centos
新建容器并启动
docker run [可选参数] image
参数说明
--name=”name”容器名字 tomcat01 tomcat02,用来区分容器
-d 后台方式运行
-it 使用交互方式运行,进入容器查看内容
-p 指定容器的端口 –p 8080:8080
主机端口:容器端口
主机端口:容器端口 (常用)
容器端口
容器端口
-P 随机指定端口
测试,启动并进入容器
[root@server ~]# docker run -it centos /bin/bash
[root@6b36923f6790 /]# ls查看容器内的centos,基础版本,很多命令是不完善的
bin dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var
从容器退回到主机
[root@b7e0ef8ddf0e /]# exit
exit
[root@server /]# ls
bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
列出所有的运行容器
docker ps 命令
列出当前正在运行的容器
-a # 列出当前正在运行的容器+带上历史运行过的容器
-n=? # 显示最近创建的容器
-q # 只显示容器的编号
-l # 显示最近创建的容器
退出容器
exit # 直接停止容器并退出
Ctrl +P + Q # 容器不停止退出
删除容器
docker rm 容器id # 删除指定的容器,不能删除正在运行的容器,如果要强制删除 rm -f
docker rm –f $(docker ps -qa) # 删除所有容器
docker ps –qa | xargs docker rm #删除所有容器
启动和停止容器的操作
docker start 容器id # 启动容器
docker restart 容器id # 重启容器
docker stop 容器id # 停止当前正在运行的容器
docker kill 容器id # 强制停止当前正在运行的容器
常用其他命令
后台启动容器
命令–d 镜像名
问题docker ps ,发现 centos 停止了
常见的坑,docker 容器使用后台运行,就必须有个前台进程,docker发现没有前台应用,就会自动停止。
nginx,容器启动后,发现自己没有提供服务,就会立刻停止,就是没有程序了。
查看日志
docker logs –t –f –tail 容器id,没有日志
自己编写一个shell脚本
显示日志
-t –f #显示日志
--tail number #显示日志的条目数
docker logs -f -t --tail 3 fa752bf22263
查看容器中进程信息ps
命令 docker top 容器id
查看镜像的源数据
命令 docker inspect 容器id
进入当前正在运行的容器
我们通常容器都是使用后台方式运行的,需要进入容器,修改一些配置
命令 docker exec -it 容器id bashshell
测试:
方式2
docker attach 容器id
测试:
[root@server ~]# docker attach fa752bf22263
正在执行当前的代码
docker exec # 进入容器后开启一个新的终端,可以在里面操作(常用)
docker attach # 进入容器正在执行的终端,不会启动新的进程
从容器内拷贝文件到主机
命令 docker cp 容器id:容器内路径 目的主机路径
拷贝是一个手动过程,未来我们使用-v 卷的技术,可以实现
小结
docker命令是十分多的,上面我们学习的那些都是最常用的容器和镜像命令,之后还会学习更多的命令!
作业练习
Docker 安装Nginx
- 搜索镜像 search 建议去docker 搜索,可以看到帮助文档
- 下载镜像
- 运行测试-d # 后台运行
--name # 给容器命名
-p # 宿主机端口,容器内部端口 - 进入容器
端口暴露的概念
思考问题:我们每次改动nginx配置文件,都需要进入容器内部,十分的麻烦,要是可以在容器外部提供一个映射路径,在容器外修改文件,容器内部就可以自动修改。需要 –v 数据卷。
docker来装一个tomcat
官方使用
docker run -it --rm tomcat:9.0
#我们之前的启动都是后台,停止容器后,容器还是可以查到 docker run -it --rm 一般用来测试,用完就删除
- 下载tomcat:9.0docker pull tomcat:9.0
- 启动运行docker run -d -p 3355:8080 --name=tomcat01 tomcat:9.0
- 测试访问没有问题
- 进入容器
docker exec -it tomcat01 /bin/bash
发现问题:
- linux命令少了
- webapps目录下没有内容,阿里云镜像的原因,默认是最小的镜像,所有不必要的都剔除掉
- 将webapps.dist目录下内容拷贝到webapps下可以访问
cp -r webapps.dist/* webapps/
保证最小可运行环境!
思考问题:我们每次改动nginx配置文件,都需要进入容器内部,十分的麻烦,要是可以在容器外部提供一个映射路径,webapps,我们在外部放置项目,就自动同步到内部就好了
现在docker容器包含tomcat+网站 ,现在将容器删除就相当于删库跑路,以后docker安装mysql,mysql数据本来是放在mysql数据库里面的,原来删除mysql是删库跑路,现在将容器删除就相当于删库跑路了。这个问题就不科学
部署es(elasticsearch)+kibana
# es暴露的端口很多
# es十分的耗内存
# es的数据一般需要放置到安全目录!挂载
# --net somenetwork ? 网络配置
# 启动 elasticsearch
#docker run -d --name elasticsearch --net somenetwork -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:tag(官网查询的)
还没有学习到--net somenetwork 这里不要这个参数
docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:7.6.2
启动Linux就卡住了, docker stats 查看cpu状态
测试一下es是否成功
增加内存的限制
docker stats
增加内存的限制,修改配置文件–e 环境配置修改
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
作业:使用kibana连接es? 思考网络如何才能连接过去
可视化
portainer(先用这个)
docker run -d -p 8088:9000 --restart=always -v /var/run/docker.sock:/var/run/docker.sock --privileged=true portainer/portainercker.sock:/var/run/docker.sock --privileged=true portaine
Rancher(CI/CD再用)
什么是portainer?
Docker图形化界面管理工具,提供一个后台面板供我们操作
docker run -d -p 8088:9000 --restart=always -v /var/run/docker.sock:/var/run/docker.sock --privileged=true portainer/portainercker.sock:/var/run/docker.sock --privileged=true portaine
访问测试:http://ip.8000/
通过它来访问
选择本地的
进入之后的面板
可视化面板平时不会使用,测试玩玩就可以。