1.docker官方源安装
第一种:
CentOS
如果是centos,上面的安装命令会在系统上添加yum源:/etc/yum.repos.d/docker-ce.repo
# wget https://download.docker.com/linux/centos/docker-ce.repo
# mv docker-ce.repo /etc/yum.repos.d
# yum install -y docker-ce
第二种:直接rpm安装
wget https://download.docker.com/linux/centos/7/x86_64/stable/Packages/docker-ce-17.09.0.ce-1.el7.centos.x86_64.rpm
yum localinstall docker-ce-17.09.0.ce-1.el7.centos.x86_64.rpm
2.国内源安装新版本docker
2.1 删除已经安装的docker
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-selinux \
docker-engine-selinux \
docker-engine
2.2 配置阿里云Docker Yum源
#下载一些工具
[root@docker ~]# yum install -y yum-utils device-mapper-persistent-data lvm2 git
#docker源
[root@docker ~]# yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
#查看Doker版本
[root@docker ~]# yum list docker-ce --showduplicates
安装较旧版本(比如Docker 17.03.2) :
需要指定完整的rpm包的包名,并且加上--setopt=obsoletes=0 参数:
# yum install -y --setopt=obsoletes=0 \
docker-ce-17.03.2.ce-1.el7.centos.x86_64 \
docker-ce-selinux-17.03.2.ce-1.el7.centos.noarch
安装Docker新版本(比如Docker 18.03.0):
加上rpm包名的版本号部分或不加都可以:
# yum install docker-ce-18.03.0.ce -y
或者
# yum install docker-ce -y
启动Docker服务:
#systemctl enable docker
#systemctl start docker
查看docker版本状态:
# docker -v
查看docker运行状态:
# docker info
如果有以下报错信息:
报错1:
docker info的时候报如下错误
bridge-nf-call-iptables is disabled
解决1:
追加如下配置,然后重启系统
# vim /etc/sysctl.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-arptables = 1
问题2:
虚拟机ping百度也能ping通,但是需要等好几秒才出结果,关键是下载镜像一直报错如下
# docker pull daocloud.io/library/nginx
Using default tag: latest
Error response from daemon: Get https://daocloud.io/v2/: dial tcp: lookup daocloud.io on 192.168.1.2:53: read udp 192.168.1.189:41335->192.168.1.2:53: i/o timeout
解决2:
我的虚拟机用的网关和dns都是虚拟机自己的.1或者.2,把DNS改成8.8.8.8问题就解决了,ping百度也秒出结果
# vim /etc/resolv.conf
nameserver 8.8.8.8
3.生产环境docker的环境配置
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://pilvpemn.mirror.aliyuncs.com"],
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m"
},
"storage-driver": "overlay2"
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
#注意:一定注意编码问题,出现错误---查看命令:journalctl -amu docker 即可发现错误
3.1国内镜像源
去查看如何使用aliyun的docker镜像库
去查看如何使用网易蜂巢的docker镜像库
Docker 加速器
使用 Docker 的时候,需要经常从官方获取镜像,但是由于显而易见的网络原因,拉取镜像的过程非常耗时,严重影响使用 Docker 的体验。因此 DaoCloud 推出了加速器工具解决这个难题,通过智能路由和缓存机制,极大提升了国内网络访问 Docker Hub 的速度,目前已经拥有了广泛的用户群体,并得到了 Docker 官方的大力推荐。
如果您是在国内的网络环境使用 Docker,那么 Docker 加速器一定能帮助到您。
Docker 加速器对 Docker 的版本有要求吗?
需要 Docker 1.8 或更高版本才能使用,如果您没有安装 Docker 或者版本较旧,请安装或升级。
Docker 加速器支持什么系统?
Linux, MacOS 以及 Windows 平台。
Docker 加速器是否收费?
DaoCloud 为了降低国内用户使用 Docker 的门槛,提供永久免费的加速器服务,请放心使用。
国内比较好的镜像源:网易蜂巢、aliyun和daocloud,下面是daocloud配置方式:
Docker Hub并没有在国内部署服务器或者使用国内的CDN服务,因此在国内特殊的网络环境下,镜像下载十分耗时。
为了克服跨洋网络延迟,能够快速高效地下载Docker镜像,可以采用DaoCloud提供的服务Docker Hub Mirror,速度
快很多
1.注册网站账号
2.然后进入你自己的""制台",选择"加速器",点"立即开始",接入你自有的主机,就看到如下的内容了
curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://f1361XXX.m.daocloud.io
该脚本可以将 --registry-mirror 加入到你的 Docker 配置文件 /etc/docker/daemon.json 中。适用于 Ubuntu14.04、Debian、CentOS6 、CentOS7、Fedora、Arch Linux、openSUSE Leap 42.1,其他版本可能有细微不同。更多详情请访问文档。
3.配置完成后从Docker Hub Mirror下载镜像,命令:
#dao pull ubuntu
注1:第一次使用daocloud是配置了加速器的,可以直接使用dao pull centos拉取经过加速之后的镜像,但是后来发现,不使用加速器也可以直接在daocloud官网上找到想要拉取的镜像地址进行拉取,比如:#docker pull
daocloud.io/library/tomcat:6.0-jre7
注2:上面配置加速器的方法,官网会更新,最新方法你应该根据官网提示去操作。
===========以下为tigerfive亲测================
使用国内镜像:
进入网站:https://hub.daocloud.io/
注册帐号:tigerfive
进入镜像市场:填写搜索的镜像名称
选择第一个
点击右边快速部署:
写入名称,选择我的主机,按提示继续在主机上进行所有操作
# mkdir /docker
# cd /docker
# curl -L -o /tmp/daomonit.x86_64.rpm https://get.daocloud.io/daomonit/daomonit.x86_64.rpm
# rpm -Uvh /tmp/daomonit.x86_64.rpm
# daomonit -token=36e3dedaa2e6b352f47b26a3fa9b67ffd54f5077 save-config
# service daomonit start
出现如下界面:说明自有主机接入完成(注意:这里我用的主机是我自己笔记本上的一台虚拟机)
接下来我们在镜像市场找到一个centos的镜像:点击右面的拉取按钮,会出现拉取命令如下:
我们按命令执行:
# docker pull daocloud.io/library/centos:7
出现如下提示:说明拉取成功
Trying to pull repository daocloud.io/library/centos ...
latest: Pulling from daocloud.io/library/centos
08d48e6f1cff: Pull complete
Digest: sha256:934ff980b04db1b7484595bac0c8e6f838e1917ad3a38f904ece64f70bbca040
Status: Downloaded newer image for daocloud.io/library/centos:latest
3.2 测试拉取镜像源和镜像管理基本操作
[root@docker ~]# docker pull daocloud.io/library/centos:7
7: Pulling from library/centos
75f829a71a1c: Pull complete
Digest: sha256:fe2347002c630d5d61bf2f28f21246ad1c21cc6fd343e70b4cf1e5102f8711a9
Status: Downloaded newer image for daocloud.io/library/centos:7
daocloud.io/library/centos:7
##查看镜像
[root@docker ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
daocloud.io/library/centos 7 7e6257c9f8d8 3 years ago 203MB
#查看本地镜像 -q 只显示id
[root@docker ~]# docker images list
# 搜索镜像 -f 指定star数量
docker search iname [-f stars=100]
# 查看镜像的详细信息
docker image inspect iname
#删除镜像
docker rmi iname
## 删除所有镜像 -f 强制删除,但是实际镜像不会删除
docker rmi -f $(docker images -q)
# 查看镜像的制作过程
docker history iname
3.3 容器管理基本操作
容器管理
# 创建容器 -i 标准的输入输出 -t 分配一个虚拟终端 -d 后台运行 --name 指定容器的名字 -p 指定端口映射 -e 指定环境变量
docker run -itd iname # 运行会启动容器
docker create -it iname # 创建容器,但是不启动
# 查看运行中容器,-a 可以查看所有状态
docker ps
# 删除容器 -f 强制删除
docker rm [-f] cname
# 查看容器的详细信息
docker inspect cname
# 启动
docker start
# 关闭
docker stop
# 重启
docker restart
# 挂起
docker pause
# 恢复
docker unpause
# 强制关闭
docker kill
# 进入容器
docker attach cname # 通过命令进入容器 COMMAND,不常用
docker exec -it cname command # 进入容器,在退出时无需执行ctrl+p+q,不会影响容器运行
# 复制
docker cp cname:path hostpath
# 查看容器内的进程
docker top cname
# 容器使用宿主机资源情况
docker stats [cname]
# 查看容器日志
docker logs cname
# 等待容器关闭返回值
docker wait
# docker 服务日志
docker events
# 展示已经映射的端口
docker port cname
# 查看容器内部的变化
docker diff
4.docker容易管理基本操作实验
#查看镜像
[root@docker ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
daocloud.io/library/centos 7 7e6257c9f8d8 3 years ago 203MB
#使用镜像运行容器(-d为放在后台运行)
[root@docker ~]# docker run -itd daocloud.io/library/centos:7
0260782af99a9013ec1e1607cb5bf3887d0b98fe023dd96c31a468a82a76e0d1
#查看正在运行的容器 (docker ps -a 查看所有容器,不管是否在运行)
[root@docker ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
0260782af99a daocloud.io/library/centos:7 "/bin/bash" 5 minutes ago Up 5 minutes silly_sinoussi
#使用id删除容器
[root@docker ~]# docker rm -f 0260782af99a
0260782af99a
#删除之后查看容器
[root@docker ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
[root@docker ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
!可以看到删除已经删除了
#查看容器详细信息,可以使用id
[root@docker ~]# docker inspect daocloud.io/library/centos:7
#进入容器俩种方式
[root@docker ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
daocloud.io/library/centos 7 7e6257c9f8d8 3 years ago 203MB
第一种: 不常用
[root@docker ~]# docker attach 74234eda223c
[root@74234eda223c /]#
第二种: 常用
[root@docker ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS
PORTS NAMES
01e3e19f97dc daocloud.io/library/centos:7 "/bin/bash" 16 seconds ago Up 15
seconds goofy_robinson
[root@docker ~]# docker exec -it 01 /bin/bash
[root@01e3e19f97dc /]#
***使用exec进入时,不管是ctrl+d,还是exit退出容器,都不会关掉容器.
#容器改名
docker rename oldname newname
5.镜像和容器打包及恢复
#导出redis容器,也就是说备份
[root@docker ~]# docker export redis > redis.tar
#将打包好的容器恢复为镜像
[root@docker ~]# docker import redis.tar myredis
#打包镜像
[root@docker ~]# docker save nginx > nginx.tar
#恢复镜像
[root@docker ~]# docker load < nginx.tar
#以上就是docker的基本操作!