Docker概述

Docker是一个轻量级容器技术,类似于虚拟机技术。docker是直接运行在当前操作系统(linux)之上,而不是虚拟机中,但是也实现了虚拟机技术的资源隔离,性能远远高于虚拟机技术。

Docker支持将一个软件编译成一个镜像(image),在这个镜像里做好对软件的各种配置,然后发布这个镜像,使用者可以运行这个镜像,运行中的镜像称之为容器(container),容器的启动时非常快的,一般都是以秒为单位。目前主流的软件以及非主流的软件都有人将其封装成docker镜像,我们只需下载docker镜像,然后运行这个镜像就可以快速的获得已做好配置可运行的软件。我们常用的redis,mongo,mysql,rabbitmq,使用docker后我们将不再手动下载配置这些软件。

windows环境下安装

因为docker的运行原理是基于Linux的,所以docker只能运行在Linux上。windows和mac系统安装docker时需要启动一个VirtualBox的虚拟机,在虚拟机里运行docker。

Boot2Docker 下载地址:https://github.com/boot2docker/windows-installer/releases,选择相应版本的docker-install.exe进行下载

完整版安装,所有选项全部选择,点击下一步知道安装完成,自动重启电脑后,桌面上会出现两个快捷方式:Boot2Docker Start和Oracle VM VirtualBox

选择dockerStart 启动docker,docker -v 验证版本

注意:有时候会出现 docker@localhost`s password:


不知道密码是是什么,参照其他博客或论坛有人提示输入以下命令可以解决,但是实在不晓得,这些命令从哪输入。。。

boot2docker stop  
boot2docker download  
boot2docker start

解决方案:

进入安装目录:C:\Program Files\Boot2Docker for Windows

先执行delete.sh脚本,然后执行start.sh脚本,经过等待docker启动了

命令行输入:boot2docker ssh 

运行hello-world镜像:docker run hello-world,不存在会自动下载,下载完成再运行该命令


OK,安装完成

下载镜像并运行容器

docker pull image-name(例如 docker pull redis:2.1.18)

下载完的镜像有:

docker@boot2docker:~$ docker images

REPOSITORY(镜像名)TAG(软件版本)IMAGE ID (当前镜像的唯一标识)CREATED(当前镜像创建时间)VIRTUAL SIZE(当前镜像大小)
hello-worldlatestf054dc87ed765 days ago1.84 kB
rabbitmqlatestc48da0152cd011 days ago177.1 MB
mongolatest9c790b19f6943 weeks ago359.9 MB
mysqllatest3d13bedcbf9d5 weeks ago407.3 MB
redis2.8.211a721decd79222 months ago109 MB

运行镜像为容器的命令:

docker run -d -p 6379:6379 --name rediscontainer1 redis:2.8.21(一个镜像可以运行多个容器)

docker run --name first-mysql -p 3306:3306 -e MYSQL\_ROOT\_PASSWORD=123456 -d mysql

docker容器中运行的软件所使用的端口,在本机和本机的局域网是不能访问的,所以我们需要将docker容器中的端口映射到当前主机的端口上,这样我们就在本机和本机所在的局域网就可以访问该软件了。

目前windows下运行的docker其实是运行在VirtualBox虚拟机中的,即我们当前的本机并不是我们当前的开发机而是虚拟机,所以我们还需要做一次端口映射,将虚拟机的端口映射到当前的开发机。



常用命令

查看容器列表:

docker@boot2docker:~$ docker ps

CONTAINER ID(启动时生成的id)IMAGE(该容器的镜像)COMMAND(容器启动时调用的命令)CREATED(容器创建时间)STATUS(当前容器的状态)PORTS(系统所用端口号)NAMES(给容器定义的名称)
79d5a24b508credis:2.8.21"/entrypoint.sh redi12 minutes agoUp 12 minutes0.0.0.0:6379->6379/tcpredis
d01b42766a0dmysql"docker-entrypoint.s22 minutes agoUp 22 minutes0.0.0.0:3306->3306/tcpfirst-mysql

删除容器:

单个:docker rm containerId

全部:docker rm $(docker ps -a -q)

容器stop后才可以删除

stop:docker stop containerId/containerName


删除镜像:

单个:docker rmi image-id

全部:docker rmi $(docker images -q)


查看日志:

docker logs container-name/container-id


Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐