Docker

Docker

简介

Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。
Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。
Docker 从 17.03 版本之后分为 CE(Community Edition: 社区版) 和 EE(Enterprise Edition: 企业版),我们用社区版就可以了。

Docker的应用场景
Web 应用的自动化打包和发布。
自动化测试和持续集成、发布。
在服务型环境中部署和调整数据库或其他的后台应用。
从头编译或者扩展现有的 OpenShift 或 Cloud Foundry 平台来搭建自己的 PaaS 环境。

Docker 命令大全

容器生命周期管理
run
start/stop/restart
kill
rm
pause/unpause
create
exec
容器操作
ps
inspect
top
attach
events
logs
wait
export
port
容器rootfs命令
commit
cp
diff
镜像仓库
login
pull
push
search
本地镜像管理
images
rmi
tag
build
history
save
load
import
info|version
info
version
参数
-i: 交互式操作。
-t: 终端。
-d :让容器在后台运行。
-P:将容器内部使用的网络端口映射到我们使用的主机上。

Docker 资源汇总

Docker 资源
Docker 官方主页: https://www.docker.com
Docker 官方博客: https://blog.docker.com/
Docker 官方文档: https://docs.docker.com/
Docker Store: https://store.docker.com
Docker Cloud: https://cloud.docker.com
Docker Hub: https://hub.docker.com
Docker 的源代码仓库: https://github.com/moby/moby
Docker 发布版本历史: https://docs.docker.com/release-notes/
Docker 常见问题: https://docs.docker.com/engine/faq/
Docker 远端应用 API: https://docs.docker.com/develop/sdk/
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

安装Docker(Centos7)

换源
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
yum makecache
升级内核
导入秘钥
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
添加库
rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm
更新内核
yum --enablerepo=elrepo-kernel install kernel-ml
grub2-set-default 0
reboot
进入5.4.0
在这里插入图片描述安装必要的一些系统工具
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
添加软件源信息
sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
更新并安装Docker-CE
sudo yum makecache fast
sudo yum -y install docker-ce
开启Docker服务
sudo service docker start
注意:

官方软件源默认启用了最新的软件,您可以通过编辑软件源的方式获取各个版本的软件包。例如官方并没有将测试版本的软件源置为可用,您可以通过以下方式开启。同理可以开启各种测试版本等。
vim /etc/yum.repos.d/docker-ee.repo
将[docker-ce-test]下方的enabled=0修改为enabled=1
安装指定版本的Docker-CE: # Step 1: 查找Docker-CE的版本:
yum list docker-ce.x86_64 --showduplicates | sort -r
Loading mirror speeds from cached hostfile
Loaded plugins: branch, fastestmirror, langpacks # docker-ce.x86_64 17.03.1.ce-1.el7.centos docker-ce-stable
docker-ce.x86_64 17.03.1.ce-1.el7.centos @docker-ce-stable
docker-ce.x86_64 17.03.0.ce-1.el7.centos docker-ce-stable
Available Packages
Step2: 安装指定版本的Docker-CE: (VERSION例如上面的17.03.0.ce.1-1.el7.centos)
sudo yum -y install docker-ce-[VERSION]

Docker安装Centos

查看可用的 CentOS 版本
https://hub.daocloud.io/repos/bf207788-d7de-4044-bdeb-521a998f748b
拉取 CentOS 镜像,这里我们安装(centos7):
docker pull daocloud.io/centos:7
在这里插入图片描述
持续构建
标签daocloud.io/centos:latest总是指向了最新的可用版本。
docker pull daocloud.io/centos:6
docker pull daocloud.io/centos:7
小版本标签
请注意,这些小版本的镜像一旦推出就不会更新了。
如果您选择这些镜像,强烈推荐您在 Dockerfile 里包括RUN yum -y update && yum clean all, 否则有可能会有安全隐患。 这些镜像的使用方式如下:
docker pull daocloud.io/centos:5.11
包管理
默认情况下,为了减小镜像的尺寸,在构建 CentOS 镜像时用了yum的nodocs选项。
如果您安装一个包后发现文件缺失,请在/etc/yum.conf中注释掉tsflogs=nodocs并重新安装您的包。

查看本地镜像
docker images
在这里插入图片描述运行容器,并且可以通过 exec 命令进入 CentOS 容器。
docker run -it doacloud.io/centos:7 /bin/bash
在docker容器安装httpd服务,并把宿主机的80端口映射给httpd的80端口
docker run -d -p 80:80 httpd

Docker安装Nginix

查看可用的 Nginx版本
https://hub.daocloud.io/repos/2b7310fb-1a50-48f2-9586-44622a2d1771
下载nginx
docker pull nginx
运行
docker run -p 8080:80 -d docker.io/nginx
注意
当docker运行nginx时,外界访问还是docker所在的那个IP地址,就相当于nginx在那台机器上运行一样。
但对于docker所在的那台机器来说,nginx就是附属于docker的一个镜像。
若操作nginx还是由docker登录nginx容器,进行操作。
登录的nginx容器就是一个linux系统,只不过只有nginx而已,nginx按照linux默认路径安装。
比如 root@c0462d5e1878:/usr/share/nginx/html# ls 这个路径就是默认的静态页面存放路径 50x.html index.html bash命令都一样,但是vi在我机器上是不能用的,但可以使用cp、mv 等命令,因为nginx都是配置好的,不能乱改。
可以通过在还未登录nignx容器前,把需要的文件写好,然后复制到指定目录下:
[root@localhost my.Shells]# docker cp hello.html c0462d5e1878://usr/share/nginx/html
[root@localhost my.Shells]# docker exec -it c0462d5e1878 bash root@c0462d5e1878:/usr/share/nginx/html# ls
50x.html hello.html index.html

通过主机目录映射到容器
docker run -p 80:80 -d -v $PWD/html:usr/share/nginx/html docker.io/nginx
-v $PWD/html:usr/share/nginx/html 表示把当前路径下html目录映射为usr/share/nginx/html

也就是说主机下的html就是容器下的usr/share/nginx/html
html内的文件修改和添加就等同于容器usr/share/nginx/html文件操作
外网访问就可以访问得到,就不用再登录容器操作文件了
停止服务
在这里插入图片描述
在这里插入图片描述
重启服务

在这里插入图片描述开启相同服务
在这里插入图片描述卸载服务
注意运作着的进程是无法rm的,要先stop
在这里插入图片描述删除容器
docker rm -f e5298b04538b
清理掉所有处于终止状态的容器
docker container prune
导出和导入容器
导出容器
docker export 355eecf7156b > Centos7.tar
导入容器快照
可以使用 docker import 从容器快照文件中再导入为镜像,以下实例将快照文件 centos.tar 导入到镜像
cat /Centos7.tar docker import - Centos/nginx:V1
在这里插入图片描述Docker私有镜像

安装运行docker-registry
docker pull daocloud.io/registry
启动
docker run --name registry -d -p 5000:5000 --restart=always -v /opt/data/registry:/var/lib/registry daocloud.io/registry
查看
在这里插入图片描述标记docker tag
docker tag nginx 127.0.0.1:5000/nginx
使用docker tag将nginx这个镜像标记为127.0.0.1:5000/nginx格式
使用docker push上传标记镜像
docker push 127.0.0.1:5000/nginx
docker push 192.168.8.186:5000/nginx
遇到下面问题
The push refers to repository [192.168.8.186:5000/nginx]
Get https://192.168.8.186:5000/v2/: http: server gave HTTP response to HTTPS client
添加文件vim /etc/docker/daemon.json
{“insecure-registries”:[“192.168.8.186:5000”]}
重启Docker
systemctl restart docker

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值