Docker 基础使用
Published on 2016 - 07 - 08
Docker 基础使用
安装Dcoker
查看系统版本与确认内核
rich@rich-VirtualBox:~$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 14.04.4 LTS
Release: 14.04
Codename: trusty
#确认系统版本
$ uname -r
4.2.0-27-generic
#确认内核版本
安装依赖包
sudo apt-get update
sudo apt-get install apt-transport-https ca-certificates
sudo apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
添加Docker源
vim /etc/apt/sources.list.d/docker.list
#根据系统版本,添加下列源
On Ubuntu Precise 12.04 (LTS)
deb https://apt.dockerproject.org/repo ubuntu-precise main
On Ubuntu Trusty 14.04 (LTS)
deb https://apt.dockerproject.org/repo ubuntu-trusty main
Ubuntu Wily 15.10
deb https://apt.dockerproject.org/repo ubuntu-wily main
Ubuntu Xenial 16.04 (LTS)
deb https://apt.dockerproject.org/repo ubuntu-xenial main
安装Docker
sudo apt-get update
sudo apt-get purge lxc-docker
apt-cache policy docker-engine
启动Docker服务并测试
sudo services docker start
sudo docker run hello-world
#注意:这个命令会下载一个test的镜像,可以不运行这个命令
下载一个镜像
sudo docker pull centos:6.7
#我下载了一个centos6.7
查看当前的镜像列表
sudo docker images
进入容器
镜像是一个只读的模板,当我们把镜像运行起来就变成了容器
sudo docker run -i -t fb5054b394b7 /bin/bash
#那一串代码是images的id, 运行sudo docker images后可以看到
sudo docker run -i -t centos:6.7 /bin/bash
#也可以直接使用镜像名启动镜像并进入容器
进入镜像的操作
我这里进入的是centos6.7的镜像,与使用正常系统相同,但是一定要记住一点,
容器内所有的操作,如果不提交成新镜像,当容器关闭后,所有后期操作都会丢失.
每一次操作后都会针对容器生成一个新的ID,然后使用新的ID将容器提交为一个新的镜像.
sudo docker run -i -t centos:6.7 /bin/bash
yum install php
exit
#进入容器做一些操作后退出
查看上一次操作的镜像id
sudo docker ps -l
rich@rich-VirtualBox:~/Desktop/lnmp$ sudo docker ps -l
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
89da8b6d3ba4 centos:6.7 "/bin/bash" 1 minutes ago Exited (0) 8 seconds ago cocky_pike
提交操作过的容器为新的镜像
sudo docker commit 89da8b6d3ba4 centos_php:v1
#注意centos_php为容器名称,v1为tag
可以运行 sudo docker images 看一下当前镜像列表
在docker中搭建一个nginx服务,并启动
sudo docker run -i -t centos:6.7 /bin/bash #启动并进入容器
rpm -ivh https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm
yum install nginx
chkconfig nginx on
exit
#安装Nginx并修改web目录为/www, 设置nginx为开机启动
docker ps -l #查看上一次操作过的镜像ID
docker commit fdef67e9f5c2 nginx:v1 #提交并生成一个新的镜像
docker run -d -p 80:80 -v /web:/www nginx:v1 /sbin/init
#-d是以Daemon模式运行。
#-p 80:80 是将本地80端口映射到容器的80端口,现在可以在本地使用http://localhost访问。
#-v /web:/www 是将本地的/web目录挂载到容器的/www(容器配置的web目录)目录下。
#nginx:v1 是要运行的镜像名称。
#/sbin/init 是容器运行后的系统初始化操作,主要用于启动nginx,php-fpm,mysql服务。
进入已经启动了的容器 'docker ps'
docker ps
#运行此条命令,查看当前机器中运行的容器
root@rich-VirtualBox:~# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1fb462e5028a nginx:v1 "/sbin/init" 4 seconds ago Up 3 seconds 0.0.0.0:80->80/tcp pensive_hopper
可以看到当前有一个名字为nginx:v1
镜像, ID为1fb462e5028a
的容器正在运行, 接下来让我们进入这个正在运行中的容器
sudo docker exec -i -t 1fb462e5028a /bin/bash
使用exec
命令可以进入正在运行中的容器
搜索线上镜像
使用docker search命令可以搜索docker官方库的镜像.
上面做的例子都是以centos的镜像为基础,那么如何安装其镜像呢?</br>
首先我们需要搜索镜像,知道镜像的名字,才可以使用docker pull将镜像下载到本地
sudo docker search mysql
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
mysql MySQL is a widely used, open-source relati... 2643 [OK]
mysql/mysql-server Optimized MySQL Server Docker images. Crea... 167 [OK]
centurylink/mysql Image containing mysql. Optimized to be li... 46 [OK]
sameersbn/mysql 36 [OK]
google/mysql MySQL server for Google Compute Engine 16 [OK]
appcontainers/mysql Centos/Debian Based Customizable MySQL Con... 8 [OK]
marvambass/mysql MySQL Server based on Ubuntu 14.04 6 [OK]
drupaldocker/mysql MySQL for Drupal 2 [OK]
yfix/mysql Yfix docker built mysql 2 [OK]
azukiapp/mysql Docker image to run MySQL by Azuki - http:... 2 [OK]
alterway/mysql Docker Mysql 2 [OK]
debezium/example-mysql Example MySQL database server with a simpl... 1 [OK]
andreluiznsilva/mysql A extension of the offical MySQL container... 1 [OK]
phpmentors/mysql MySQL server image 1 [OK]
sin30/mysql MySQL images with my own config files. 1 [OK]
tetraweb/mysql 1 [OK]
projectomakase/mysql Docker image for MySQL 0 [OK]
lancehudson/docker-mysql MySQL is a widely used, open-source relati... 0 [OK]
cloudposse/mysql Improved `mysql` service with support for ... 0 [OK]
livingobjects/mysql MySQL 0 [OK]
tozd/mysql MySQL (MariaDB fork) Docker image. 0 [OK]
dockerizedrupal/mysql docker-mysql 0 [OK]
nanobox/mysql MySQL service for nanobox.io 0 [OK]
vukor/mysql Build for MySQL. Project available on http... 0 [OK]
duruo850/mysql mysql docker 0 [OK]
在可以选择一个镜像进行 docker pull