简书简述

Docker 实战笔记(有图有代码哟!)


Docker的安装与配置

CentOS


前提条件

目前,CentOS 仅在发行的版本中的内核支持Docker
Docker 运行在CentOS 7 上要求系统为64位,系统内核版本在3.10以上。本次测试运行使用的是 centOS 7.2 64位的系统版本。
使用代码 uname -r即可查看系统内核版本

Docker 实战笔记(有图有代码哟!)

Docker软件已经包括在默认的CentOS-Extras软件源中。因此想要安装Docker,只需要运行下面的yum命令:

yum install docker-io -y 

直接yum安装,查看版本来看docker是否安装完成

docker -v 

启动docker服务

service docker start 

设置开机自启动

chkconfig docker on 

由于国内访问 Docker Hub 比较慢,可以使用腾讯云提供的国内镜像源,加速访问 Docker Hub 。依次执行以下命令:

echo "OPTIONS='--registry-mirror=https://mirror.ccs.tencentyun.com'" >> /etc/sysconfig/docker 

systemctl daemon-reload 

service docker 

Ubuntu


Docker 要求Ubuntu 系统的内核版本高于3.10,通过uname -r命令查看当前的内核版本
本次测试使用的Ubuntu 系统为Ubuntu Server 16.04.1 LTS 64位

Docker 实战笔记(有图有代码哟!)

curl -sSL http://acs-public-mirror.oss-cn-hangzhou.aliyuncs.com/docker-engine/internet | sh - 

验证一下Docker 有没有安装成功

docker -v 
Docker 实战笔记(有图有代码哟!)

安装成功,因为要使用docker hub 的原因,在这里我们需要添加一个国内的镜像,这里我们使用阿里云的。修改daemon配置文件/etc/docker/daemon.json来使用加速器

1.  sudo mkdir -p /etc/docker 2.  sudo tee /etc/docker/daemon.json <<-'EOF' 3.  { 4.          "registry-mirrors": ["https://dmmxhzvq.mirror.aliyuncs.com"] 5.  } 6.  EOF 7.  sudo systemctl daemon-reload 8.  sudo systemctl restart docker 

Windows


Docker在Windows中需要使用虚拟机才能够运行,目前支持的版本是Windows 10以及Windows server 2016。在Windows 7中进行安装测试,无法安装。截图如下。

Docker 实战笔记(有图有代码哟!)

docker 的基本操作命令

删除


杀死所有正在运行的容器

docker kill $(docker ps -a -q) 

删除所有已经停止的容器

docker rm $(docker ps -a -q) 

删除所有未打dangling 标签的镜像

docker rmi $(docker images -q -f dangling=true) 

通过镜像的id来删除指定镜像

docker rmi <image id> 

删除所有镜像

docker rmi $(docker images -q) 

查看

查看正在运行的容器

docker ps 

查看所有的容器

docker ps -a 

查看本地的所有镜像

docker images -a 

查看本地镜像中REPOSITORY为centos的镜像

docker images centos 

配置镜像

下载镜像

docker pull [image name]:[tag] 

登录到仓库(默认为docker hub)

docker login -u [用户名] -p [密码] 

登出仓库

docker logout 

将本地镜像上传到镜像仓库(需要先登录到仓库)

docker push [image name]:[tag] 

容器

强制删除容器db01,db02(-f:通过SIGKLL信号强制删除一个运行中的容器)

dokcer rm -f db01、db02 

删除容器db01 ,并删除容器挂载的数据卷(-v:删除与容器关联的卷)

dokcer rm -v db01 

实践中遇到的错误

1.镜像无法删除


docker rmi $(docker images -q) 

理论上应该可以删除全部镜像,但是实际操作中却出现了问题。于是只能单独进行删除

docker rmi <image id> 

如果有image id相同,会出现以下错误

Error response from daemon: conflict: unable to delete d231ef002eba (must be forced) – image is referenced in one or more repositories

那么可以使用name:tag进行删除.

docker rmi <image name>:<tag> 

问题即可解决

2.job for docker.service failed because the control process exited with error code. See “systemctl status docker.service” and “journalctl -xe” for details.和Cannot connect to the Docker daemon. Is the docker daemon running on this host?的问题解决

起因:腾讯云服务器我给他重启了之后,发现docker 命令就一直报 Cannot的错误。

Docker 实战笔记(有图有代码哟!)

这可能有两个原因:
1.docker服务没有启动;
2.docker没有相关的权限;
原因2呢,用sudo取得权限就行。
但是这次的问题是原因1,那么就启动呗

start docker service 

但是就得到了下列这样的问题

Docker 实战笔记(有图有代码哟!)

那怎么解决呢,首先看一下/etc/docker/daemon.json这个文件存不存在,如果存在那就看看里面的内容出了什么问题。

cd /etc/docker vim daemon.json 

然后你把下面的代码放进去,就可以啦

{ "storage-driver": "devicemapper" } 

如果daemon.json文件包含格式不正确的JSON,Docker将无法启动。

然后重启一下docker

service docker start 
Docker 实战笔记(有图有代码哟!)

ok!运行没得问题咯。

实例1:wordpress+mysql

安装相关镜像

从镜像库(默认是Docker hub )中查询是否有镜像文件

docker search mysql 
Docker 实战笔记(有图有代码哟!)

将所需镜像文件下载到本地

docker pull mysql 

查询是否成功

docker images 
Docker 实战笔记(有图有代码哟!)

好的本地库中有了mysql镜像,再下载一个wordpress镜像

Docker 实战笔记(有图有代码哟!)

先启动mysql

docker run --name lir_mysql -e MYSQL_ROOT_PASSWORD=lir123 -d mysql 

–name lir_mysql 给容器命名为lir_mysql
-e 设置环境变量
-d 后台运行容器,并返回容器ID

先检查一下有没有运行成功

docker ps 
Docker 实战笔记(有图有代码哟!)

好的,运行成功了!再启动wordpress和mysql链接一下

docker run --name lir_wordpress --link lir_mysql:mysql -p 8080:80 -d wordpress 

–link添加链接到另一个容器
-p默认将容器的80端口映射到主机的随机端口
-p 8080:80将容器的80端口映射到主机的8080端口

好的,检查一下

docker ps 
Docker 实战笔记(有图有代码哟!)

容器没问题!

打开网站看一下

Docker 实战笔记(有图有代码哟!)

配置一下wordpress信息,ok!8080端口

Docker 实战笔记(有图有代码哟!)

当然我们还可以使用fig来对wordpress配置。但是在这里不作演示说明

安装 aspnet和iis

在docker hub 官方镜像库中,微软有自己的官方发布的iis和asp.net,以及asp.net core镜像。
在腾讯云的镜像加速下,centos 服务器进行pull这些镜像。

Docker 实战笔记(有图有代码哟!)

无法成功!可能是国内的镜像库并没有这些镜像,所以拉取docker hub,但是docker hub在国内没有镜像服务,加之国情如此。。。

换Ubuntu系统,使用docker hub mirror 进行加速服务,首先要先注册账号,然后使用命令,将自有的主机注册到docker hub mirror中

curl -sSL https://get.daocloud.io/daomonit/install.sh | sh -s xxx 

xxx为注册账号的id

配置成功后的信息

Docker 实战笔记(有图有代码哟!)

相关的docker容器可视化服务有很多,但是大部分都是收费的。企业用必须自己搭建自己的镜像服务器和相关管理系统

在Ubuntu服务器中pull iis和aspnet的官方镜像。发现如下问题

Docker 实战笔记(有图有代码哟!)

没错,linux系统中的docker无法跑起官方的aspnet和iis镜像,错误信息提示,windows镜像无法跑起来。

安装vm虚拟机,准备在win7中跑一个win10 64和一个windows server 2016,然而出现了下面的情况

Docker 实战笔记(有图有代码哟!)

这个问题解决需要在本机BIOS中进行相关设置。


ps:2017年9月18日将会持续更新,等我的固态到了之后,我将在windows10中来继续研究docker,并且探寻docker 在实战中的运行。如果你有关于docker 运行asp.net程序的经验,请留下您的联系方式,我迫切需要和您请教一下这个问题。