Docker的简单使用和命令说明
官网镜像路径:https://hub.docker.com
有OFFICAL IMAGE标签的就是官方的镜像,个人镜像区别就是版本,配置有些不一样
可以在镜像下面的介绍中配置启动参数,可以达到修改参数的目的
核心概念
镜像:容器的静态文件(类似Java中的实体类.java文件)
容器:从镜像运行启动的虚拟容器(类似Java中实例化的对象)
安装:
先卸载旧版的docker
sudo yum remove docker-ce \
docker-ce-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
安装工具:
sudo yum install -y yum-utils \
device-mapper-persistent-data \
lvm2
配置yum仓库地址
sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
sudo yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
一般用下面那个阿里云的
更新yum缓存
sudo yum makecache fast
从远程获取在线文件安装docker
sudo yum install docker-ce docker-ce-cli containerd.io
启动测试:
docker是以服务形式启动的:
sudo systemctl start docker
配置开机启动(服务设置为自动)
sudo systemctl enable docker
需要配置一下docker的镜像加速器
cat <<EOF > /etc/docker/daemon.json
{
"registry-mirrors": [
"https://dockerhub.azk8s.cn",
"https://hub-mirror.c.163.com"
]
}
EOF
配置后记得重启
# 重新加载docker配置
sudo systemctl daemon-reload
#重启docker服务
sudo systemctl restart docker
完成后就可以查看镜像配置了
docker info
镜像操作命令说明:
拉取镜像
从远程镜像仓库拉取centos7,centos是Repository,7是Tag(版本)Tag需要去docker官网查询,里面版本有区别(比如docker系统环境,其他配置,比如带不带RabbitMQ的Management功能),如果Tags不指定的话就是latest
docker pull centos:7
镜像需要一层一层的下载,比如最底层需要用操作系统,然后进行安装,再进行配置,最后可能还有容器的配置
如果执行了运行镜像命令,docker会检查是否存在该镜像,如果不存在会自动从远程仓库下载
查看镜像
#命令1
docker images
#命令2
docker image ls
#命令3:查看镜像配置过程
docker history redis
运行镜像–简单
docker run -it xxxx bash
xxxx - 镜像名, 或 image id 的前几位,足够区分即可
-it 这是两个参数,一个是 -i:交互式操作,一个是 -t 终端。我们这里打算进入 bash 执行一些命令并查看返回结果,因此我们需要交互式终端。
bash 放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是 bash。
删除镜像
docker rmi [image] [image]
docker image rm [image] [image]
这两条都可以,也可以写镜像的id前几位足够区分即可(至少3位)
只要这个镜像启用过,不管现在容器是否在启动状态,都会占用这个镜像,需要加一个-f参数强制删除
镜像导出
docker save mysql:5.7 node:8 | gzip > app.tar.gz
这里是导出2个镜像
镜像从本地导入
docker load < apps.tar.gz
docker load -i xxx.gz
容器操作命令说明
运行镜像–详细
一个镜像可以运行多个容器,这条命令后可以执行一条命令,比如加bash命令,启动命令行
docker run --name redis -p 6379:6379 -dit redis bash
-d:表示后后台运行,后台运行可以不加参数i和t
–name:指定一个镜像名称
-p:指定启动端口,从容器的6379端口,映射到宿主机的6379端口,可以指定多个-p映射端口,例如rabbitmq需要映射15672和5672两个端口(windows访问该容器需要在VMware的Linux防火墙中打开端口)
docker run \
-it \
--name centos7 \
centos:7 \
bash
可以通过反斜杠使得命令更简单易读
执行命令后自动进入容器,执行命令即在容器内执行
-it参数必须要加,不然容器启动后,没有执行命令,应用结束,容器也就结束了(当执行exit之后容器也会结束)
加bash后直接进入容器,不加bash还在宿主机命令行,如果是docker运行环境是Linux的话,可以不加bash启动(可以参照history看有没有默认设置),保险起见,还是需要加的
退出的话执行exit即可
log日志输出
docker container logs xxx
查看容器
docker container ls -a
# 一般写下面那个
docker ps -a
中止/重启容器
docker container stop 802
docker container restart 802
进入容器bash
这里可以用启动时候指定的容器名字启动,也可以用id
docker exec -it 802 bash
删除容器
在出现运行中的重名的容器的时候,则需要删除一个容器
docker container rm 802
如果容器正在运行,需要加-f参数强制删除容器
清理所有终止状态容易
docker container prune
一些问题
WARNING: IPv4 forwarding
一般是宿主机的网络环境出现变化,比如修改ip地址,重启虚拟机,或者开关防火墙等
通过systemctl重启docker的服务即可解决
sudo systemctl restart docker