Docker安装及使用(CentOS7系统)
时间:2019.09.23
环境:CentOS7(Centos7系统要求为64位)
目的:在Centos7系统安装部署docker
说明:本文借鉴官网文档和菜鸟教程及尚硅谷教程,操作大同小异,可自行百度其它教程
从 2017 年 3 月开始 docker 在原来的基础上分为两个分支版本: Docker CE 和 Docker EE。
Docker CE 即社区免费版,Docker EE 即企业版,强调安全,但需付费使用。
本文介绍 Docker CE 的安装使用。
作者:Zhong QQ交流群:121160124 欢迎加入!
安装
Docker 要求 CentOS 系统的内核版本高于 3.10 ,查看本页面的前提条件来验证你的CentOS 版本是否支持 Docker 。
通过 uname -r 命令查看你当前的内核版本
[root@runoob ~]# uname -r
移除旧的版本:
yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-selinux \ docker-engine-selinux \ docker-engine
安装一些必要的系统工具:
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
添加软件源信息:
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
更新 yum 缓存:
yum makecache fast
安装 Docker-ce:
yum -y install docker-ce
启动 Docker 后台服务:
systemctl start docker
测试运行 hello-world:
docker run hello-world
由于本地没有hello-world这个镜像,所以会下载一个hello-world的镜像,并在容器内运行。
到此,Docker 在 CentOS 系统的安装完成。
镜像加速
鉴于国内网络问题,后续拉取 Docker 镜像十分缓慢,我们可以需要配置加速器来解决:
网易的镜像地址:http://hub-mirror.c.163.com。
新版的 Docker 使用 /etc/docker/daemon.json(Linux) 或者 %programdata%\docker\config\daemon.json(Windows) 来配置 Daemon。
请在该配置文件中加入(没有该文件的话,请先建一个):
{ "registry-mirrors": ["http://hub-mirror.c.163.com"] }
配置阿里镜像加速器:
针对Docker客户端版本大于 1.10.0 的用户
您可以通过修改daemon配置文件/etc/docker/daemon.json来使用加速器:
sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": ["https://uihastnx.mirror.aliyuncs.com"] } EOF sudo systemctl daemon-reload sudo systemctl restart docker
使用
Docker 允许你在容器内运行应用程序, 使用 docker run 命令来在容器内运行一个应用程序:
docker run ubuntu:15.10 /bin/echo "Hello world"
各个参数解析:
- docker: Docker 的二进制执行文件。
- run:与前面的 docker 组合来运行一个容器。
- ubuntu:15.10指定要运行的镜像,Docker首先从本地主机上查找镜像是否存在,如果不存在,Docker 就会从镜像仓库 Docker Hub 下载公共镜像。
- /bin/echo "Hello world": 在启动的容器里执行的命令
以上命令完整的意思可以解释为:Docker 以 ubuntu15.10 镜像创建一个新容器,然后在容器里执行 bin/echo "Hello world",然后输出结果。
运行交互式的容器
我们通过docker的两个参数 -i -t,让docker运行的容器实现"对话"的能力:
docker run -i -t ubuntu:15.10 /bin/bash
各个参数解析:
- -t:在新容器内指定一个伪终端或终端。
- -i:允许你对容器内的标准输入 (STDIN) 进行交互。
- -d:让容器在后台运行。
- -P:将容器内部使用的网络端口映射到我们使用的主机上。
-P :是容器内部端口随机映射到主机的高端口。
-p : 是容器内部端口绑定到指定的主机端口 如:-p 5000:5000
此时我们已进入一个 ubuntu15.10系统的容器!我们可以通过运行exit命令或者使用CTRL+D来退出容器。
启动容器(后台模式)
使用以下命令创建一个以进程方式运行的容器:
docker run -d ubuntu:15.10 /bin/sh -c "while true; do echo hello world; sleep 1; done"
确认容器有在运行,可以通过 docker ps 来查看:
docker ps
容器内使用docker logs命令,查看容器内的标准输出
docker logs 容器id
停止容器
docker stop 容器id
删除 (卸载)Docker CE
执行以下命令来删除 Docker CE:
yum remove docker-ce rm -rf /var/lib/docker
其它
查询:
docker ps 查看容器
docker ps -l 查询最后一次创建的容器
docker ps -n 5 查询最后5次创建的容器
docker images 列出本地主机上的镜像
docker images -a 列出本地主机上的所有镜像
docker images -q 列出本地主机上的镜像id
docker search httpd 搜索httpd镜像 docker search st 在docker hub查找某个镜像
pull:
docker pull ubuntu:15.10 下载ubuntu15.10镜像
删除:
删除镜像(镜像名称):
docker rmi hello-world
删除镜像(镜像id):
docker rmi fce289e99eb9
强制删除:
docker rmi -f fce289e99eb9
删除多个:
docker rmi -f fce289e99eb9 镜像:tag 镜像 :tag
删除所有:
docker rmi -f $(docker images qa)
生成容器:
docker run -it --name centos7 centos
查看docker正在运行的容器进程:
docker ps
docker container ls
查看docker所有的容器进程:
docker ps -a
退出:
exit 停止并退出
Ctrl + P + Q 不停止退出
启动容器:
docker start 容器名称或id
重启容器:
docker restart 容器名称或id
停止容器:
docker stop 容器名称或id
强制停止容器:
docker kill 容器名称或id
删除容器:
docker rm 容器名称或id
强制删除容器:
docker rm -f 容器名称或id
删除所有的容器:
docker rm -f $(docker ps -qa)
进入已启动的容器:
docker attach 容器id
不“进入”已启动的容器执行容器命令到前台
docker exec 容器id Command
Commit:
docker commit -a="zhong" -m="new image" 容器id 版本号:tag
example:
docker commit -a="zhong" -m="new image" fce289e99eb9 centos_new/1.2:
复制文件cp:
docker cp 容器id:容器内路径 本地路径或其他目的主机的路径
建立共享目录:
docker run -it v /主机绝对路径:容器内路径 镜像id # 数据同步
docker run -it v /主机绝对路径:容器内路径:ro 镜像id #给容器映射的目录加权限(只 读)
build镜像:
docker build -f /mydocker/dockerfile -t zhong/centos7 . #在当前目录使用dockerfile文件构建镜像
dockerfile demo:
FROM centos
VOLUME ["/dataVolumeContainer1","/dataVolumeContainer2"]
CMD echo "finished,success!"
CMD /bin/bash
DockerFile:
dockerfile是镜像的构建文件!
dockerfile文件的保留字指令(大写):
FROM 基础镜像 基于哪个镜像为基础 scratch为顶级镜像
MAINTAINER 镜像维护者 姓名和邮箱信息
RUN 容器构建时需要运行的命令
EXPOSE 当前容器对外端口号
WORKDIR 容器创建后登陆进来的默认目录 不指定默认为/目录
ENV 设置环境变量
ADD 将主机目录中的文件拷贝到镜像并且ADD命令会自动处理URL和解压tar压缩包
COPY 类似ADD,拷贝文件和目录到镜像中!将从构建上下文目录中<源路径>的文件/目录复制到新的一层的镜像内的<目标路径>位置
VOLUME 容器数据卷 用户数据保存和持久化工作
CMD 指定一个容器启动时运行的命令,可以有多个CMD指令,但只有最后一个生效,CMD会被docker run之后的参数替换
ENTRYPOINT 指定一个容器启动时运行的命令,目的和CMD一样
ONBUILD 当构建一个被继承的Dockfile时运行命令,父镜像在被子镜像继承后父镜像的onbuild被触发
--name 对容器命名
-p 8081:80 将本地 8081 端口映射到容器内部的 80 端口。
-v ~/nginx/logs:/var/log/nginx:将我们自己创建的 logs 挂载到容器的 /var/log/nginx。
--privileged=true
Docker 命令大全
容器生命周期管理
容器操作
容器rootfs命令
镜像仓库
本地镜像管理
info|version
Docker 资源汇总
Docker Hub 网址为: https://hub.docker.com/
Docker官方英文资源
docker官网:http://www.docker.com
Docker Windows 入门:https://docs.docker.com/docker-for-windows/
Docker CE(社区版) Ubuntu:https://docs.docker.com/install/linux/docker-ce/ubuntu/
Docker mac 入门:https://docs.docker.com/docker-for-mac/
Docker 用户指引:https://docs.docker.com/config/daemon/
Docker 官方博客:http://blog.docker.com/
Docker Hub: https://hub.docker.com/
Docker开源: https://www.docker.com/open-source
Docker 国内镜像
阿里云的加速器:https://help.aliyun.com/document_detail/60750.html
网易加速器:http://hub-mirror.c.163.com
官方中国加速器:https://registry.docker-cn.com
ustc的镜像:https://docker.mirrors.ustc.edu.cn
daocloud:https://www.daocloud.io/mirror#accelerator-doc(注册后使用)
关注微信公众号: