前言

开始折腾docker。

主要概念

  • 容器:独立运行的一个或一组应用,与其他应用完全独立。

  • 镜像:用于创建 Docker容器的模板。

  • 仓库:用于收纳镜像文件,可以理解为代码控制中的代码仓库

注意:

一个docker容器应该被看做是一个进程而不是一台虚拟机,因为所有的docker中的应用其实是运行在宿主机上的,你可以通过ps查看它们,区别是它们被隔离成独立的,没有联系的应用;所以docker部署的一般用法是在一个docker中只部署一个应用,如一个nginx。

安装docker

  • 可以使用apt安装docker,但安装的不是最新的,如果是云服务可以这样做;
sudo apt-get install docker

sudo apt-get install docker-ce
  • 使用阿里源安装最新docker
curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
sudo apt-get update
sudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common sudo apt-get -y update
sudo apt-get -y install docker-ce
  • 使用repo
#安装所需要的包
sudo apt-get install linux-image-extra-$(uname -r) linux-image-extra-virtual # 添加使用 HTTPS 传输的软件包以及 CA 证书
sudo apt-get update
sudo apt-get install apt-transport-https ca-certificates #添加GPG密钥
sudo apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D # 添加软件源
echo "deb https://apt.dockerproject.org/repo ubuntu-xenial main" | sudo tee /etc/apt/sources.list.d/docker.list # 添加成功后更新软件包缓存
sudo apt-get update # 安装docker
sudo apt-get install docker-engine # 启动 docker
sudo systemctl enable docker
sudo systemctl start docker

注意: docker-engine和docker-ce只是不同的docker版本。

镜像加速

  • 国内网络导致后续拉取 Docker 镜像十分缓慢,需要修改镜像源。
cd  /etc/docker/

touch daemon.json # 创建该文件

chmod 644 daemon.json

vi daemon.json

# 设置镜像源
{
"registry-mirrors": ["http://hub-mirror.c.163.com", "https://registry.docker-cn.com"]
}
  • 设置完毕后需要重启docker使得配置生效。
sudo systemctl daemon-reload
sudo systemctl restart docker

注册docker云账号,创建自己的仓库

  • 可以去hub.docker.com注册,但是国内的网络需要翻墙才能注册成功。

  • 国内如阿里云等也提供docker云服务,注册一个;

# 网址:https://dev.aliyun.com/search.html
  • 点击管理中心,如果还没有阿里云账号先注册账号,有会要求设置登录docker仓库的密码

  • 点击镜像加速器可以看到专用的加速地址,将其加入到daemon.json文件中

  • 创建镜像仓库的命名空间

网址:https://cr.console.aliyun.com/?spm=5176.1971733.0.2.duOGn4#/namespace/index
  • 创建一个镜像仓库
网址:https://cr.console.aliyun.com/?spm=5176.1971733.0.2.duOGn4#/imageList
镜像仓库可以和代码仓库关联起来。从而实现自动构建镜像,现在我们只创建一个本地镜像私有仓库

完成后可以看到仓库地址,点击管理里面有详细的信息和操作指南。

# 登录阿里云docker registry:
$ sudo docker login --username=xxxx registry.cn-hangzhou.aliyuncs.com # 从registry中拉取镜像:
$ sudo docker pull registry.cn-hangzhou.aliyuncs.com/命名空间/仓库:[镜像版本号] # 将镜像推送到registry:
$ sudo docker login --username=xxxx registry.cn-hangzhou.aliyuncs.com # 先登录
$ sudo docker tag [ImageId] registry.cn-hangzhou.aliyuncs.com/命名空间/仓库:[镜像版本号] # 标记镜像文件
$ sudo docker push registry.cn-hangzhou.aliyuncs.com/命名空间/仓库:[镜像版本号] # 推送

docker客户端的一些基本的命令

docker run :创建一个新的容器并运行一个命令
参数:
-p: 端口映射,格式为:主机(宿主)端口:容器端口, 如-p 27018:27017
-d: 后台运行容器,并返回容器ID;
-v:目录映射,格式为:主机(宿主):容器, 如-v /var/data/db:/data/db 这样对容器的/data/db的操作会反应在主机的/var/data/db目录中
-P: 直接将容器的端口映射主机的端口,不需要参数
--name:指定创建的容器的名字,
--restart:设置容器的重启策略; # 例:使用mongo:latest镜像创建一个容器,如果后面没有额外的命令则使用构建镜像时默认的启动命令,如果有则使用输入的命令
docker run -p 27018:27017 -v $PWD/db:/data/db -d --name mongodb mongo:latest # 基本命令
docker start :启动一个或多少已经被停止的容器
docker stop :停止一个运行中的容器
docker restart :重启容器
docker kill :杀掉一个运行中的容器。
docker rm :删除一个或多少容器
docker create :创建一个新的容器但不启动它
docker exec :在运行的容器中执行命令
docker pause :暂停容器中所有的进程。
docker unpause :恢复容器中所有的进程。
docker ps -a : 查看创建的容器列表,-a指的是左右的容器。无论是运行或不运行的,-l指的是最新的;
docker top : 查看容器内的所有进程
docker port : 快速查看端口的映射情况 # 镜像管理
docker login -u 用户名 -p 密码 #登录一个镜像仓库
docker logout # 登出
docker pull : 从镜像仓库中拉取或者更新指定镜像
docker push : 将本地的镜像上传到镜像仓库,要先登陆到镜像仓库
docker search : 从Docker Hub查找镜像 # 本地镜像管理
docker images : 列出本地镜像文件列表。
# 使用REPOSITORY:TAG,即仓库源:标签来定义不同的镜像 docker rmi : 删除本地一个或多少镜像。使用id删除

本地镜像存放的位置:/var/lib/docker

docker的基本使用

  • 比如说我们想使用docker运行nginx服务
# 查看本机已有的镜像,发现没有nginx的镜像
docker images # 使用REPOSITORY:TAG,即仓库源:标签来定义不同的镜像
# 先去hub查找合适的nginx镜像
docker search nginx
# 找到一个合适的拉取到本地
docker pull nginx:3.4 # 默认拉取的是latest,可以通过nginx:3.4的方式指定是3.4版本
# 运行
docker run --name mynginx -p 80:80 -d nginx:3.4

docker run --name mynginx -p 80:80 -d nginx:3.4 nginx # 后面的nginx是启动命令
# 测试
使用http://ip+port访问

制作docker镜像

如果拉取的镜像环境不满足我们的要求,我们可以先拉取然后改造成我们自己的镜像。

从已经创建的容器中更新镜像,并且提交这个镜像

  • 当一个容器被创建并运行后,我们需要进入这个容器
docker exec
参数:
-d :分离模式: 在后台运行
-i :交互模式
-t :分配一个伪终端
# 进入容器打开一个交互终端
docker exec -i -t (容器的ID/names) /bin/bash # 退出容器
exit
  • 进入后到/根目录,可以发现容器的目录和linux操作系统的目录差不多,但这些都是虚拟的目录。

  • 更改容器

# 进入容器更新
apt-get update
# 安装vim
apt install vim # 现在这个容器相当于被我们改造了,为它提交一个副本
exit # 先退出容器
docker commit -m="install a vim" -a="cwp" (容器的id) (新的镜像文件的名字)
# commit命令的参数:
-m:提交的描述信息
-a:指定镜像作者
镜像文件命名规则:abc:def # abc会变成REPOSITORY部分,def变成TAG部分 # 查看我们的镜像列表
docker images # 将我们的镜像推送到阿里云仓库
$ sudo docker login --username=xxxx registry.cn-hangzhou.aliyuncs.com # 先登录
# 标记镜像文件,即创建一个链接,用来描述该镜像是属于哪一个仓库的
$ sudo docker tag [ImageId] registry.cn-hangzhou.aliyuncs.com/命名空间/仓库:[镜像版本号]
$ sudo docker push registry.cn-hangzhou.aliyuncs.com/命名空间/仓库:[镜像版本号] # 推送 # 在镜像版本中可以查看推送的镜像文件

使用 Dockerfile 指令来创建一个新的镜像

  • 使用 Dockerfile是创建一个全新的镜像。
touch Dockerfile
# 编辑
vi Dockerfile
  • 一个一般的Dockerfile的文件的格式
#所有的命令都需要大写
FROM ubuntu:16.04 # 说明docker是基于linux版本构建的
MAINTAINER cwp "13926902570@163.com" # 说明维护者和邮箱 # 在linux系统中运行一些命令
ADD sources.list /etc/apt/sources.list # 复制本地的apt源到docker的apt源中
RUN apt-get update # 更新apt
RUN apt install xxx # 安装你想制作镜像的的应用
EXPOSE 22 # 设置开放的端口
EXPOSE 80
CMD /usr/sbin/sshd -D # 设置容器运行时自动执行的命令,只能有一条,多个的话执行最后一条

注意: 使用ADD时最好把需要复制的文件放置在dockerfile文件的同一目录下,防止找不到文件;

  • 完毕后创建镜像
docker build -t test:v1 /home/   # 指定tag和dockerfile文件所在的目录
#只有出现Successfully的字样才算是创建成功
  • 查看创建的镜像
docker images

参考:

docker之安装和基本使用(一)的更多相关文章

  1. docker——容器安装tomcat

    写在前面: 继续docker的学习,学习了docker的基本常用命令之后,我在docker上安装jdk,tomcat两个基本的java web工具,这里对操作流程记录一下. 软件准备: 1.jdk-7 ...

  2. docker 启动安装等命令

    确认是否安装url whereis curl 启动docker服务: sudo service docker start sudo service docker stop 安装curl sudo ap ...

  3. DOCKER windows安装

    DOCKER windows安装 1.下载程序包 2. 设置环境变量 3. 启动DOCKERT 4. 分析start.sh 5. 利用SSH工具管理 6. 下载镜像 6.1 下载地址 6.2 用FTP ...

  4. 在docker里面安装部署应用

    最近一直在做docker的安装打包工作,学到不少东西,在博客里记一下. 环境centos6 ,docker 基础镜象centos6 1.创建本地基础镜象,安装基础命令包 (1)Dockerfile,D ...

  5. Docker Centos安装Redis以及问题处理

    之前一篇文章 Redis安装及主从配置 介绍了redis的安装配置,另一篇文件介绍了 Docker Centos安装Openssh .今天将两篇文件结合一下——在Docker Centos环境下搭建r ...

  6. Docker Centos安装Mysql5.6

    之前一篇随笔<Docker Centos安装Openssh> 写的是如何在基础的centos镜像中搭建ssh服务,在此基础上再搭建其他服务.本文继续介绍在centos_ssh基础上搭建my ...

  7. Docker的安装及简单使用

    1.  Docker的安装 (这里的“安装docker”其实就是安装Docker Engine) $ sudo apt-get intasll docker.io note: apt-get是ubun ...

  8. docker 的安装

    官方站点上有各种环境下的 安装指南,这里主要介绍下Ubuntu和CentOS系列的安装. Ubuntu 系列安装 Docker 通过系统自带包安装 Ubuntu 14.04 版本号系统中已经自带了 D ...

  9. docker 17 安装

    docker17 安装 新增一键安装命令: curl -sSL https://get.docker.com/ | sh 以下为手动安装过程 翻译自 Get Docker for Ubuntu Doc ...

  10. centos7安装docker并安装jdk和tomcat(常用命令)

    阿里专属的镜像加速 在宿主机器编辑文件:vi /etc/docker/daemon.json 阿里专属的镜像加速地址,类似于"https://91cntlkt.mirror.aliyuncs ...

随机推荐

  1. hdu3507 Print Article(斜率优化入门)(pascal)

    Problem Description Zero has an old printer that doesn't work well sometimes. As it is antique, he s ...

  2. 深入理解JVM一java堆分析

    上一节介绍了针对JVM的监控工具,包括JPS可以查看当前所有的java进程,jstack查看线程栈可以帮助你分析是否有死锁等情况,jmap可以导出java堆文件在MAT工具上进行分析等等.这些工具都非 ...

  3. [洛谷P5137]polynomial

    题目大意:求:$$\sum\limits_{i=0}^na^{n-i}b^i\pmod{p}$$$T(T\leqslant10^5)$组数据,$a,b,n,p\leqslant10^{18}​$ 题解 ...

  4. 【BZOJ2151】种树(贪心)

    [BZOJ2151]种树(贪心) 题面 BZOJ 题解 如果没有相邻不能选的限制,那么这就是一道傻逼题. 只需要用一个堆维护一下就好了. 现在加上了相邻点的限制,那么我们就对于当前位置加入一个撤销操作 ...

  5. 常用Actoin算子 与 内存管理 、共享变量、内存机制

    一.常用Actoin算子 (reduce .collect .count .take .saveAsTextFile . countByKey .foreach ) collect:从集群中将所有的计 ...

  6. Java之面向对象编程20170619

    /*************************************************************************************************** ...

  7. Linux遇到的两个问题

    编译C++的和编译C语言的命令不同. 编译C++,应当先安装g++. 然后可以用#g++ filename.cpp -o filename 进行编译 编译C语言是用#gcc filename.c -o ...

  8. 「Linux+Django」uwsgi服务启动(start)停止(stop)重新装载(reload)

    转自:http://blog.51cto.com/12482328/2087535?cid=702003 1. 添加uwsgi相关文件 在之前的文章跟讲到过centos中搭建nginx+uwsgi+f ...

  9. linux 内存计算

    原文: http://www.open-open.com/lib/view/open1424325362577.html Linux中的Cache Memory 什么是Cache Memory(缓存内 ...

  10. 使用cron命令配置定时任务(cron jobs)

    原文 http://www.cnblogs.com/end/archive/2012/02/21/2361741.html 开机就启动cron进程的设置命令:chkconfig --add crond ...