Centos7 官方网址
https://docs.docker.com/engine/install/centos/
有的话先卸载
yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine
安装软件包
yum install -y yum-utils
添加镜像源
yum-config-manager \ --add-repo \ https://download.docker.com/linux/centos/docker-ce.repo #默认是外国官网的 #更换为阿里云的 yum-config-manager \ --add-repo \ https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
小插曲
安装错误的源
https://mirrors.ustc.edu.cn/docker-ce/linux/centos/docker-ce/repodata/repomd.xml: [Errno 14] HTTPS Error 404 - Not Found
解决办法:
cd /etc/yum.repos.d
ls
CentOS-Base.repo CentOS-fasttrack.repo CentOS-Vault.repo
CentOS-CR.repo CentOS-Media.repo docker-ce.repo
CentOS-Debuginfo.repo CentOS-Sources.repo mirrors.ustc.edu.cn_docker-ce_linux_centos_docker-ce.repo国内无法连接docker默认的境外地址,删除docker相关的repo文件即可
rm -rf docker-ce.repo
rm -rf mirrors.ustc.edu.cn_docker-ce_linux_centos_docker-ce.repo
如果想安装docker-ce可以使用国内yum源
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
安装最新版的docker引擎 ce是社区版本
更新yum
yum makecache fast
安装docker 默认最新的
yum install docker-ce docker-ce-cli containerd.io
#更换版本的 yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io
选择y一路安装
启动docker
systemctl start docker
查看版本
docker version
运行hello world
docker run hello-world
发现不存在就是拉取 pull
查看下载的镜像
docker images [root@iZwz99z6ggy4qg0wakux9nZ /]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE hello-world latest bf756fb1ae65 6 months ago 13.3kB
卸载docker
yum remove docker-ce docker-ce-cli containerd.io #卸载依赖
rm -rf /var/lib/docker #删除资源 docker的默认工作路径
阿里云镜像加速
登录阿里云,找容器服务
找到镜像加速位置
寻找centos配置使用
1.sudo mkdir -p /etc/docker 2. sudo tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": ["https://tx6sz1tl.mirror.aliyuncs.com"] } EOF 3.sudo systemctl daemon-reload 4.sudo systemctl restart docker #重启
截图如下 [root@iZwz99z6ggy4qg0wakux9nZ /]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE hello-world latest bf756fb1ae65 6 months ago 13.3kB [root@iZwz99z6ggy4qg0wakux9nZ /]# sudo mkdir -p /etc/docker [root@iZwz99z6ggy4qg0wakux9nZ /]# sudo tee /etc/docker/daemon.json <<-'EOF' > { > "registry-mirrors": ["https://tx6sz1tl.mirror.aliyuncs.com"] > } > EOF { "registry-mirrors": ["https://tx6sz1tl.mirror.aliyuncs.com"] } [root@iZwz99z6ggy4qg0wakux9nZ /]# sudo systemctl daemon-reload [root@iZwz99z6ggy4qg0wakux9nZ /]# sudo systemctl restart docker
回顾helloworld流程
开始run ->在本机寻找判断是否有镜像
底层原理
Docker的常用命令
帮助命令
docker version #版本 docker info #基本信息 docker --help #帮助文档
帮助文档的地址[https://docs.docker.com/reference/]
镜像的命令
docker images #查看所有的镜像 https://docs.docker.com/engine/reference/commandline/images/ docker images --help [root@iZwz99z6ggy4qg0wakux9nZ /]# docker images --help Usage: docker images [OPTIONS] [REPOSITORY[:TAG]] List images Options: -a, --all Show all images (default hides intermediate images) --digests Show digests -f, --filter filter Filter output based on conditions provided --format string Pretty-print images using a Go template --no-trunc Don't truncate output -q, --quiet Only show numeric IDs # 只显示id
docker search 搜索镜像
docker search mysql [root@iZwz99z6ggy4qg0wakux9nZ /]# docker search mysql NAME DESCRIPTION STARS OFFICIAL AUTOMATED mysql MySQL is a widely used, open-source relation… 9735 [OK] mariadb MariaDB is a community-developed fork of MyS… 3552 [OK] mysql/mysql-server Optimized MySQL Server Docker images. Create… 713 [OK] percona Percona Server is a fork of the MySQL relati… 496 [OK] centos/mysql-57-centos7 MySQL 5.7 SQL database server 77 mysql/mysql-cluster Experimental MySQL Cluster Docker images. Cr… 73
通过收藏来过滤
docker search --filter =STARS=3000 #收藏数不少于3000的
下载镜像 默认最新 镜像名[:tag]
docker pull mysql 指定版本 docker pull mysql:5.7 仓库中要有 #mysql:
下载镜像的原理是分层下载可以重复利用,占用空间小
删除镜像 docker rmi 使用docker images 查看根据 IMAGE ID来删除
docker rmi -f d05c76dbbfcf docker rmi -f $(docker images -aq) #递归删除 删除所有的镜像
容器命令
有镜像才有容器,下载一个centos镜像来学习
docker pull centos
新建容器的启动
docker run [可选参数] image --name="Name" #命名的方式来区分容器 -d -it # 交互模式运行 -p # 指定容器端口 -p # ip:主机端口:容器端口 -P # 随机指定端口
启动并进入容器
[root@iZwz99z6ggy4qg0wakux9nZ ~]# docker run -it centos /bin/bash [root@5d5357892508 /]#
exit退出来 (容器停止退出 ) ctrl+p+q(容器退出来不停止)
[root@5d5357892508 /]# exit exit [root@iZwz99z6ggy4qg0wakux9nZ ~]#
查看容器
docker ps # 列出当前正在运行的容器 docker ps -a # 当前运行的+历史运行的 显示最后被创建的 n 个容器 docker ps -n 3 docker ps -n ? # 最近创建的容器
删除容器
docker rm 容器id #容器id 前强制删除正在运行的 -f docker rm -f $(docker ps -aq) #删除所有的容器
启动和停止容器的操作
docker start 容器id #启动 docker restart 容器id #重启容器 docker stop 容器id #停止当前容器 docker kill 容器id #强制停止当前容器
常用的其他命令
后台启动命令
docker run -d centos # 问题docker ps 发现centos停止了 # 常见的坑,docker容器使用后台运行,就必须要有一个进程,docker发现没有应用就会自动停止 # 例如 nginx 容器启动后,发现自己 没有提供服务,就会立刻停止,就是没有程序了
查看日志命令
docker logs -tf docker logs -tf --tails 10 #显示最近10条日志
查看容器中的进程信息
docker top 容器id
查看镜像的元数据
docker inspect 容器id
进入当前正在运行的镜像
#通常容器是是使用后台 需要进入容器,修改一些配置 方式一 docker exec -it 容器id /bin/bash #进入容器开启一个新的终端 方式二 docker attach 容器id #进入正在执行的终端,执行代码的终端,不会启动新进程
将容器内文件拷贝到主机上
docker cp 容器id:容器内的路径 目的主机的路径 #执行效果 [root@ad54c64d03ab home]# touch test.java [root@ad54c64d03ab home]# ls test.java [root@ad54c64d03ab home]# cd / [root@ad54c64d03ab /]# exit exit [root@iZwz99z6ggy4qg0wakux9nZ ~]# docker cp ad54c64d03ab:/home/test.java /home [root@iZwz99z6ggy4qg0wakux9nZ ~]# cd / [root@iZwz99z6ggy4qg0wakux9nZ /]# cd home [root@iZwz99z6ggy4qg0wakux9nZ home]# ls test.java