Docker 概述
Docker 是一个开源的应用容器引擎,Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口,更重要的是容器性能开销极低。
Docker 基本概念
- 镜像(Image):Docker 镜像(Image),就相当于是一个 root 文件系统。比如官方镜像 ubuntu:16.04 就包含了完整的一套 Ubuntu16.04 最小系统的 root 文件系统。
- 容器(Container):镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。
- 仓库(Repository):仓库可看成一个代码控制中心,用来保存镜像。
Docker 安装
在平时学习过程中,接触到docker,开发也介绍,docker比虚拟机好用很多,所以自己就开始捣鼓捣鼓。docker与虚拟机相比,确实轻便许多。刚开始是在windows环境下搭建,但系统是专业版,使用网上的方法搭建,就是没有成功。所以就用了如下这种方法。好了,那我们就开始搭建docker环境吧。
Windows Docker 安装
1. 下载docker toolbox
下载地址:docker toolbox ,选择docker toolbox.exe下载
2. 安装docker toolbox
双击下载的安装包,一路 next 即可。安装后成功后,电脑桌面会出现如下图标:
3. docker初始化
双击如上步骤中的图标,会初始化docke,最后出现如下截图,初始化完毕进入docker命令模式。
Ubuntu Docker 安装
在windows环境学习过程中,环境时不时就出了问题,然后自己也要用到linux系统,赶上阿里云服务器的活动,索性就整了台服务器,学习那就更方便了。linux系统搭建docker很简单,我们来看。
1. apt-get update
使用命令 apt-get update 更新源
2. apt-get install docker
使用命令 apt-get install docker 安装即可,安装后用命令 docker run hello-world 验证是否安装成功,打印出以下信息则安装成功。
root@iZuf6hobanx6hbvtsep8ykZ:/# docker run hello-world
Unable to find image 'hello-world:latest' locally
latest:Pulling from library/hello-world
0e03bdcc26d7:Pull complete
Digest: sha256:7f0a9f93b4aa3022c3a4c147a449bf11e0941a1fd0bf4a8e6c9408b2600777c5
Status: Downloaded newer image for hello-world:latest
Hello from Docker! This message shows that your installation appears to be working correctly.
To generate this message, Docker took the following steps:
1. The Docker client contacted the Docker daemon.
2. The Docker daemon pulled the "hello-world" image from the Docker Hub. (amd64)
3. The Docker daemon created a new container from that image which runs the executable that produces the output you are currently reading.
4. The Docker daemon streamed that output to the Docker client, which sent it to your terminal.To try something more ambitious, you can run an Ubuntu container with: $ docker run -it ubuntu bash
Share images, automate workflows, and more with a free Docker ID: https://hub.docker.com/
For more examples and ideas, visit: https://docs.docker.com/get-started/
Docker 基本命令
docker使用,肯定离不开命令的操作,接下来就列举下,我近期在学习过程中用到的基本命令。
docker run 命令
创建一个新的容器并运行一个命令
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
- 选项参数
- -d: 后台运行容器,并返回容器ID;
- -i: 以交互模式运行容器,通常与 -t 同时使用;
- -P: 随机端口映射,容器内部端口随机映射到主机的端口
- -p: 指定端口映射,格式为:主机(宿主)端口:容器端口
- -t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
- --name="jenkins": 为容器指定一个名称。
Docker start/stop/restart 命令
docker start :启动一个或多个已经被停止的容器
docker stop :停止一个运行中的容器
docker restart :重启容器
docker start [OPTIONS] CONTAINER [CONTAINER...]
docker stop [OPTIONS] CONTAINER [CONTAINER...]
docker restart [OPTIONS] CONTAINER [CONTAINER...]
启动已被停止的容器jenkins
docker start jenkins
停止运行中的容器jenkins
docker stop jenkins
重启容器jenkins
docker restart jenkins
Docker rm 命令
docker rm :删除一个或多个容器。
Docker kill 命令
docker kill :杀掉一个运行中的容器。
- 选项参数
- -s :向容器发送一个信号
Docker exec 命令
docker exec :在运行的容器中执行命令。
docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
Docker ps 命令
docker ps : 列出容器
docker ps [OPTIONS]
- 选项参数
- -a :显示所有的容器,包括未运行的。
- -f :根据条件过滤显示的内容。
- -l :显示最近创建的容器。
- -n :列出最近创建的n个容器。
- -q :静默模式,只显示容器编号。
- -s :显示总的文件大小。
Docker cp 命令
docker cp :用于容器与主机之间的数据拷贝。
docker cp [OPTIONS] CONTAINER:SRCPATH DESTPATH|-
docker cp [OPTIONS] SRCPATH|- CONTAINER:DESTPATH
将主机/www/phpwind目录拷贝到容器975705051af9的/www目录下。
docker cp /www/phpwind 975705051af9:/www/
将容器975705051af9的/www目录拷贝到主机的/tmp目录中。
docker cp 975705051af9:/www /tmp/
Docker pull 命令
docker pull : 从镜像仓库中拉取或者更新指定镜像.
docker pull [OPTIONS] NAME[:TAG|@DIGEST]
Docker images 命令
docker images : 列出本地镜像。
docker images [OPTIONS] [REPOSITORY[:TAG]]
Docker rmi 命令
docker rmi : 删除本地一个或多少镜像。
docker rmi [OPTIONS] IMAGE [IMAGE...]
问题总结
1. 安装失败
报错提示:Installation failed:one prerequisite is not fullfilled,如下所示:
问题原因:版本冲突。
解决办法:用文中的windows环境安装步骤搭建即可。
2. 启动docker失败
报错提示:Looks like something went wrong in step ´Finalize´
解决办法:到docker安装目录,找到start.sh启动文件,将clear注释掉,重新启动即可。
STEP="Finalize"
clear
cat << EOF