#云原生征文# docker安装,卸载及常用命令总结(入门) 原创 精华
Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。
Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。
Docker 从 17.03 版本之后分为 CE(Community Edition: 社区版) 和 EE(Enterprise Edition: 企业版),我们用社区版就可以了。
这篇文章是对自己学习的docker知识进行的总结。
一. docker的安装
首先进入doceker的官方文档进行查看,这里我以centos7的安装为例。
所需物品:一个centos的系统(云服务器或者是虚拟机都行),看得懂中文字的眼睛
https://docs.docker.com/get-docker/
首先我们先卸载旧版本的
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
设置下载源
这里我们不用官方文档的默认下载源,我们更改为阿里云源
# 先下载所需的工具包
sudo yum install -y yum-utils
sudo yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
这一步完成之后我没就可以开始安装docker了
sudo yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin
当然这样安装的话是安装默认的最新版本。也可以通过以下命令查看版本,并选择版本安装。
yum list docker-ce --showduplicates | sort -r
sudo yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io docker-compose-plugin
然后稍等片刻就会安装完毕,这时我们可以输入一个命令:sudo systemctl start docker
,启动docker服务。再输入docker version
,如果出现版本信息即说明安装成功。
这时我们可以运行官方给我们的一个镜像进行验证是否docker已经能用了。
sudo docker run hello-world
这时我们可以用docker images
来查看本机的所有镜像。
这里可以看到镜像的详细信息。
镜像加速
- 科大镜像:https://docker.mirrors.ustc.edu.cn/
- 网易:https://hub-mirror.c.163.com/
- 阿里云:https://<你的ID>.mirror.aliyuncs.com
- 七牛云加速器:https://reg-mirror.qiniu.com
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{ "registry-mirrors": ["https://docker.mirrors.ustc.edu.cn/"] }
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
二. docker的卸载
卸载依赖
sudo yum remove docker-ce docker-ce-cli containerd.io
删除资源
sudo rm -rf /var/lib/docker # docker默认工作路径
sudo rm -rf /var/lib/containerd
切记不是这个噢 ⬇
三. 常用命令
对于docker的命令,我也是推荐大家去官网上进行学习,这是官方地址,当然在命令行上直接 --help 也是可以的。
镜像命令
1. docker images (查找本机镜像)
docker images 查询出本机上的所有镜像
我们通过–help 来查看这个命令的帮助
可以发现这里有几个参数可以选择
- -a 可以很明显看出是查看全部的意思 (常用)
- -f 是过滤一般不怎么需要使用,这个就看情况了
- -digests 是格式化也不常用
- -q 是只显示id(常用)
我们通常会对这个两个常用的命令进行使用
例如: docker images -aq
2. docker search (搜索镜像)
这个命令是一个搜索镜像的命令,但是我个人觉得还是直接去官网进行搜索比较好因为有图形化界面。
官网在这
命令行效果:
也可以通过 --help来查看其他的参数
加入过滤参数就可以筛选出所需的数据。
3. docker pull (下载镜像)
docker pull 下载命令。我们可以通过docker pull 来下载所需的镜像,但是这样下载的为默认的最新版本,所以我们可以进行添加参数来选定版本
docker pull 镜像名 [:tag]
例如我这下载MySQL:5.7
docker pull mysql:5.7
如果不带tag的话那么就会下载默认的最新版本。这里还得注意一点,版本必须在镜像仓库中存在才能进行下载,否则会找不到该文件。所以推荐去官网查看。
这时我们再用docker images
查看
已经有两个镜像了。
4. docker rmi (删除镜像)
首先docker images
先列出存在的镜像
可以通过REPOSITORY,也可以通过IMAGE ID进行删除,但是一般通过id删除。
命令:docker rmi -f + id
删除多个镜像的话就加多几个id 并用空格进行隔开。
这样我就把hello-world这个镜像给删除了。
如果你想把全部镜像给删除也可以使用
docker rmi -f $(docker images -aq)
命令很简单不懂可以结合上下文看看
容器命令
有了镜像才可以创建容器,这里我们先下载一个centos的镜像,来创建容器,
docker pull centos
来下载一个centos镜像
1. docker run [参数] image
这里可以看到用docker安装的镜像都是非常精简的,体积都很小。
我们可以先用docker run --help
来查看一下
可以发现参数相当的多,这里就提几个相对常用的参数。
--name="容器名"
容器名字 centos1 centos2 用来区分
-d
后台运行
-it
使用交互方式运行,进入容器查看内容
-p
指定容器的端口 👇
-p ip:主机端口:容器端口
-p 主机端口:容器端口(常用)
-p 容器端口
-P 随机指定端口
我们来运行这个centos镜像试试docker run -it centos /bin/bash
这时就说明我们进来了,退出也很简单,输入
exit
就可以退出。
但是exit
是退出并停止,
所以我们需要用Ctrl+P+Q
退出容器但不停止。
2. docker ps (查看docker运行的容器)
这里由于我已经用exit
退出了所以当我使用docker ps
查看时是没有进程的
所以我们可以用docker ps -a
命令来查看正在运行+全部运行过的进程
同时我们也可以用
docker ps -a -n=?
来筛选出你想看到几个数据,
用docker ps -a -n=? -q
来只显示id
3. docker rm (容器id)
docker rm 容器id
删除指定容器,不能删除正在运行的容器强制用rm -f
docker rm -f $(docker ps -aq)
删除所有容器
docker ps -a -q | xargs docker rm
删除所有容器
删除单个容器就用第一种方法但是不能删除正在运行的,如果要强制删除就需要加rm -f
,我们也可以用docker rm -f $(docker ps -aq)
删除全部容器并且是强制删除。
docker start 容器id
启动容器
docker restart 容器id
重启容器
docker stop 容器id
停止当前正在运行的容器
docker kill 容器id
杀掉容器,强制停止运行也可用
这些命令都大差不差的就不一一演示了大家自己多敲敲有助于记忆!
常用其他命令
1. 后台启动容器
docker run -d 镜像名
这里有个坑,docker 容器使用后台运行,就必须要有一个前台进程,docker发现没有应用启动服务,没有前台进程,就会自动停止。
2. 查看日志
docker logs -tf -n 容器id
n为显示条数
docker logs -t -f --tail + num +容器id
num为显示条数
可以自己编写一段脚本进行检验👇:
docker run -d centos /bin/sh -c "while true; do echo hello world; sleep 2;done "
docker logs --help
查看日志命令帮助
3. 查看docker容器内的进程信息
docker top + 容器id
4. 查看详细数据
docker inspect + 容器id
里面有许多关于该容器的信息。大家可以自己摸索摸索。
5. 进入当前正在运行的容器
docker exec -it 容器id bashShell
进入容器后开启一个新的终端(常用),可以在里面操作
docker attach 容器id
直接进入当前正在执行的终端,不会启动新的进程
6. 从容器内拷贝文件到主机上
docker cp 容器id:容器内路径 目的的主机路径
我们先在容器内创建一个helloDocker.py文件,可以看到当我用exec
方式进入再退出该容器依旧存在,当我用attach
进入再退出时该容器就停止了!这也对应了上一个命令的解释。
docker cp
命令是不管你容器停止还是运行都可以进行复制拷贝的只要你不把该容器删除就可以进行拷贝。
如图,已经将文件拷贝过来了!
7. 查看docker状态
docker stats
查看状态时是会每秒刷新的!
四. 测试Elasticsearch
我们测试elasticsearch就不傻乎乎的直接安装官方文档给的命令执行,因为我的服务器是学习机,而elasticsearch又是非常的占内存的,如果直接按照官方文档进行安装我的服务器很卡爆所以我们需要对安装命令进行修改,当然如果你的服务器或虚拟机的内存比较大或者你就是想尝试一下也可以直接安装,到时
stop
掉它就行。
官方命令:docker run -d --name elasticsearch --net somenetwork -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:tag
这里-- net
网络配置也可以先不配后续再来,然后使用-e
来配置最小和最大的占用内存
修改为:docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms64m -Xmx512m" elasticsearch:8.2.0
可以看到已经运行成功了,
可以看到已经限制了大小了并且操作起来也不会卡了。
五. 测试nginx
首先如果你需要选择版本的话推荐官网搜索,不然的话也可以直接命令搜索。
下载nginx
上图中的容器名应该为镜像名才对 (打错字懒得改了)
然后在网页访问当前服务器的域名加主机端口号测试一下,成功
同时我们也可以用
docker run -it --rm + 镜像名:tag
来进行测试。这种情况就是用完立即删除容器,一般做测试使用。
提交一个镜像(commit)
接下来我就带大家提交一个镜像,命令:
docker commit -a="作者名" -m="提交说明" 容器id 容器名(自定义):tag
首先我先从本机拷贝过去一份,当然也可以用数据卷,但是这放到下一篇说我们先用一些比较简单的方式操作。
docker cp 本机路径 容器id:容器路径
这里我用nginx演示
当我没加自定义的html时
进行拷贝
结果
可以看到我自己的html已经拷贝成功了,这时我们要想保存这个容器持续使用就可以用提交命令进行提交生成一个新的镜像,后续还可以push到仓库就像我们常常提交代码到github一样把镜像提交到dockerHub这样就可以直接下载你的镜像进行使用。
这样就生成了一个新的镜像了。这个应该很好理解。
然后我们也可以直接试试这个镜像啊,先停止之前运行的那个nginx容器,再来试。
这时再去网页试试,欧克已经成功了。网页链接在这,大家也可以去玩玩。
看完的同学多去实践手敲,就基本算是入门了!
【本文正在参加云原生有奖征文活动】,活动链接:https://ost.51cto.com/posts/12598
感谢楼主用心分享,这也太详细了
哈哈哈博客本来就既是分享也是对自己学习的一个总结
精彩分享很详细,点赞支持。