Docker安装
Docker的基本组成
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cyGdTAER-1624438787913)(Docker学习笔记.assets/image-20210602155109081.png)]
镜像(image):
Docker镜像就好比时一个模板,可以通过这个模板来厂家容器服务,tomcat镜像==>run==> tomcat1容器(提供服务器),通过这个镜像可以创建多个容器(最终服务运行或者项目运行,就是在容器中的)
容器(container):
Docker利用容器技术,独立运行一个或者一组应用,通过镜像来创建的。
启动、停止、删除,基本命令!
目前可以把容器理解为一个简易的Linux系统
仓库(repository):
仓库时存放镜像的地方
仓库分为公有仓库和私有仓库
公有仓库有 Docker Hub(默认是国外)
安装Docker
环境准备
- 需要Linux的基础
- CentOS 7
- 我们使用Xshell连接远程服务器进行操作
环境查看
#系统内核
[root@web ~]# uname -r
3.10.0-862.el7.x86_64
#系统版本
[root@web ~]# cat /etc/os-release
NAME="CentOS Linux"
VERSION="7 (Core)"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="7"
PRETTY_NAME="CentOS Linux 7 (Core)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:centos:centos:7"
HOME_URL="https://www.centos.org/"
BUG_REPORT_URL="https://bugs.centos.org/"
CENTOS_MANTISBT_PROJECT="CentOS-7"
CENTOS_MANTISBT_PROJECT_VERSION="7"
REDHAT_SUPPORT_PRODUCT="centos"
REDHAT_SUPPORT_PRODUCT_VERSION="7"
安装
帮助文档:
# 1、卸载旧版本
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
# 2、需要安装包
sudo yum install -y yum-utils
# 3、设置镜像仓库
sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo(默认国外)
sudo yum-config-manager \
--add-repo \
https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo(阿里云)
# 4、更新
yum makecache fast
# 5、安装Docker相关 docker-ce 社区 ee企业版
yum install docker-ce docker-ce-cli containerd.io
# 6、启动Docker
systemctl start docker 启动docker
systemctl enable docker 允许docker跟随系统启动
# 7、查看
docker version
# 8、查看镜像
docker images
卸载Docker
# 1、卸载依赖
yum remove docker-ce docker-ce-cli containerd.io
# 2、删除资源
rm -rf /var/lib/docker
# /var/lib/docker docker 的默认工作目录
Docker的常用命令
帮助命令
docker version #显示docket的版本信息
docker info #显示docker的系统信息,包括镜像和容器的数量
docker 命令--help #帮助命令
帮助文档的地址:https://docs.docker.com/reference/
镜像命令
Docker images 查看所有主机镜像
#解释
REPOSITORY 镜像仓库源
IMAGE ID 镜像的ID
CREATED 镜像的创建时间
SIZE 镜像大小
#可选项
-a, --all #列出所有镜像
-q, --quiet #只显示镜像ID
docker search 搜索镜像
[root@web ~]# docker search mysql
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
mysql MySQL is a widely used, open-source relation… 10944 [OK]
mariadb MariaDB Server is a high performing open sou… 4137 [OK]
mysql/mysql-server Optimized MySQL Server Docker images. Create… 812 [OK]
#可选项,通过搜索过滤
--filter == STARS =3000 搜索出来的镜像STARS 大于3000
docker pull 下载镜像
#下载镜像docker pull 镜像名[:tag]
[root@web ~]#docker pull mysql
#如果不写tag 默认latest
docker rmi 删除镜像
[root@web ~]#docker rmi -f 镜像id #删除指定镜像[root@web ~]#docker rmi -f 镜像id 镜像id 镜像id #删除多个镜像[root@web ~]#docker rmi -f $(docker images -aq) #删除全部镜像
容器命令
说明:有了镜像才可以创建容器
新建容器并启用
docker run [可选参数] image#参数说明--name="Name" 容器名字 用来区分容器-d 后台允许-i -t 使用交互方式允许,进入容器查看内容-P 指定容器端口 -p 8080:8080 -p 主机端口:容器端口(常用) -p 容器端口 -p ip:主机端口:容器端口-p 随机指定端口#测试、启动并进入[root@web ~]# docker run -it centos /bin/bash[root@9ababc950840 /]# #查看容器内部的系统 内部centos命令不完善[root@9ababc950840 /]# lsbin dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var#从容器中退出到主机[root@9ababc950840 /]# exit
列出所有运行的容器
#docker ps 命令 -a 列出历史运行过的容器 n=? 列出最近创造的容器 -q 列出容器id[root@web ~]# docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES[root@web ~]# docker ps -aCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES9ababc950840 centos "/bin/bash" 17 minutes ago Exited (130) 16 seconds ago festive_wozniak[root@web ~]#
退出容器
exit #退出容器并停止容器ctrl+p+q #退出容器不停止容器
删除容器
docker rm 容器ID #删除指定容器,不能强制删除正在运行的容器docker rm -f $(docker ps -aq) #删除所有容器docker ps -a -q |xargs docker rm #删除所有容器
启动和停止容器
docker start 容器ID #启动容器docker restart 容器ID #重启容器docker stop 容器ID #停止当前正在运行容器docker kill 容器ID #强制停止当前容器
常用其他命令
#命令docker run -d 镜像名[root@web ~]# docker run -d centos#容器docker ps 发现容器停止#常见问题:docker容器使用后台运行,就必须要有一个前台进程,docker发现没有应用,自动停止。#nginx容器启动后,发现自己没有提供服务,就会立刻停止就是没有程序了。
查看日志
docker logs -f -t --tail 日志条数 容器ID[root@web ~]# docker logs --helpUsage: docker logs [OPTIONS] CONTAINERFetch the logs of a containerOptions: --details Show extra details provided to logs -f, --follow Follow log output --since string Show logs since timestamp (e.g. 2013-01-02T13:23:37Z) or relative (e.g. 42m for 42 minutes) -n, --tail string Number of lines to show from the end of the logs (default "all") -t, --timestamps Show timestamps --until string Show logs before a timestamp (e.g. 2013-01-02T13:23:37Z) or relative (e.g. 42m for 42 minutes)#自己编写一段shell脚本[root@web ~]# docker run -d centos /bin/sh -c "while true;do echo kuangshen;sleep 1;done"[root@web ~]# docker ps#显示日志-tf #显示格式、时间戳--tail number #显示日志条数
查看容器中进程信息
#命令 docker top 容器ID[root@web ~]# docker top ad4b98dd559cUID PID PPID C STIME TTY TIME CMDroot 19739 19718 0 14:46 pts/0 00:00:00 /bin/bash
查看镜像元数据
# 命令docker inspect 容器ID[root@web ~]# docker inspect ad4b98dd559c[ { "Id": "ad4b98dd559c94eb78d6f41315590eaedf2c846f01ef54837af1690daa4cfcc1", #容器ID "Created": "2021-06-03T06:46:48.941920427Z", "Path": "/bin/bash", "Args": [], "State": { "Status": "running", "Running": true, "Paused": false, "Restarting": false, "OOMKilled": false, "Dead": false, "Pid": 19739, "ExitCode": 0, "Error": "", "StartedAt": "2021-06-03T06:46:49.485244184Z", "FinishedAt": "0001-01-01T00:00:00Z" }, "Image": "sha256:300e315adb2f96afe5f0b2780b87f28ae95231fe3bdd1e16b9ba606307728f55", "ResolvConfPath": "/var/lib/docker/containers/ad4b98dd559c94eb78d6f41315590eaedf2c846f01ef54837af1690daa4cfcc1/resolv.conf", "HostnamePath": "/var/lib/docker/containers/ad4b98dd559c94eb78d6f41315590eaedf2c846f01ef54837af1690daa4cfcc1/hostname", "HostsPath": "/var/lib/docker/containers/ad4b98dd559c94eb78d6f41315590eaedf2c846f01ef54837af1690daa4cfcc1/hosts", "LogPath": "/var/lib/docker/containers/ad4b98dd559c94eb78d6f41315590eaedf2c846f01ef54837af1690daa4cfcc1/ad4b98dd559c94eb78d6f41315590eaedf2c846f01ef54837af1690daa4cfcc1-json.log", "Name": "/serene_wescoff", "RestartCount": 0, "Driver": "overlay2", "Platform": "linux", "MountLabel": "", "ProcessLabel": "", "AppArmorProfile": "", "ExecIDs": null, "HostConfig": { "Binds": null, "ContainerIDFile": "", "LogConfig": { "Type": "json-file", "Config": {} }, "NetworkMode": "default", "PortBindings": {}, "RestartPolicy": { "Name": "no", "MaximumRetryCount": 0 }, "AutoRemove": false, "VolumeDriver": "", "VolumesFrom": null, "CapAdd": null, "CapDrop": null, "CgroupnsMode": "host", "Dns": [], "DnsOptions": [], "DnsSearch": [], "ExtraHosts": null, "GroupAdd": null, "IpcMode": "private", "Cgroup": "", "Links": null, "OomScoreAdj": 0, "PidMode": "", "Privileged": false, "PublishAllPorts": false, "ReadonlyRootfs": false, "SecurityOpt": null, "UTSMode"