Docker的安装和基本用法

0、Docker介绍

        Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。

        Docker容器可以理解为在沙盒中运行的进程。这个沙盒包含了该进程运行所必须的资源,包括文件系统、系统类库、shell 环境等等。但这个沙盒默认是不会运行任何程序的。你需要在沙盒中运行一个进程来启动某一个容器。这个进程是该容器的唯一进程,所以当该进程结束的时候,容器也会完全的停止。

        Docker是基于Linux 64bit的,无法在32bit的linux/Windows/unix环境下使用,所以需要确保Ubuntu的版本是64位。

(docker ce : 社区免费版,docker ee : 企业收费版)


1、Docker安装

安装环境:ubuntu16.04

安装依赖

sudo apt-get update
sudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common

官方地址(需自备梯子,不然速度感人)

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
sudo apt-get -y update
sudo apt-get -y install docker-ce

阿里云镜像源

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 -y update
sudo apt-get -y install docker-ce

查看docker版本信息

docker version 或 docker --version

查看docker服务是否启动

systemctl status docker

若未启动,则启动docker服务

sudo systemctl start docker

 测试运行hello-world

sudo docker run hello-world

应输出:

Hello from Docker!
This message shows that your installation appears to be working correctly. 
...

2、Docker使用

查看docker可用命令

docker

搜索可用docker镜像

sudo docker search 镜像名(如tutorial)

下载容器镜像 (执行pull命令的时候要写完整的名字)

docker pull 用户名/镜像名(如learn/tutorial)

通过docker run命令可以启动某一个镜像,并运行一个命令

docker run命令有两个参数,一个是镜像名,一个是要在镜像中运行的命令

sudo docker run learn/tutorial echo "hello word" # 在tutorial镜像中运行"echo"命令,输出"hello word"

在容器中安装新的程序(如ping)

前面下载的tutorial镜像是基于ubuntu的,所以可以使用ubuntu的apt-get命令来安装ping程序

sudo docker run learn/tutorial apt-get install -y ping # 在learn/tutorial镜像里面安装ping程序

 注意:在执行apt-get 命令的时候,要带上-y参数。如果不指定-y参数的话,apt-get命令会进入交互模式,需要用户输入命令来进行确认,但在docker环境中是无法响应这种交互的。

通过docker commit命令保存对容器的修改

当你对某一个容器做了修改之后(通过在容器中运行某一个命令),可以把对容器的修改保存下来,这样下次可以从保存后的最新状态运行该容器。docker中保存状态的过程称之为committing,它保存的新旧状态之间的区别,从而产生一个新的版本。

docker commit --help # 查看该命令的参数列表
sudo docker ps -l # 首先获得安装完ping命令之后容器的id,这里为d11c9de3085a
sudo docker commit d11 learn/ping # 然后把这个镜像保存为learn/ping,返回新版本镜像的id号,无需拷贝完整的id,通常来讲最开始的三至四个字母即可区分

运行新的镜像

对一个镜像提交修改之后,就可以运行它里面新安装的命令了

sudo docker run learn/ping ping www.baidu.com # 在新的镜像中运行 ping www.baidu.com 命令

 一直运行learn/tutorial镜像里的/bin/bash程序

sudo docker run -it learn/tutorial /bin/bash # 退出输入 exit

进入一个正在运行中的容器:

sudo docker attach 容器ID # 多敲一下回车

 通过 exec 命令对指定的容器执行 bash:

docker exec -it 容器ID /bin/bash

 查看已存在的所有镜像

sudo docker images

查看已存在的所有容器

sudo docker ps # 查看所有running状态的containers
sudo docker ps -a # 查看所有的containers
sudo docker ps -l # 查看最新创建的container

停止一个运行中的容器:

sudo docker stop 容器ID

先删除容器(删除前需要保证容器是停止的 stop)

sudo docker rm 容器ID # 返回删除容器的ID

再删除镜像

docker rmi 镜像ID

 利用docker cp进行容器与主机之间的数据拷贝

sudo docker cp <dir_or_file> 容器ID:/xxx/ # 在主机运行

3、Dockerfile

FROM:定制的镜像都是基于 FROM 的镜像,这里的 nginx 就是定制需要的基础镜像。后续的操作都是基于 nginx。

RUN:用于执行后面跟着的命令行命令。

COPY:复制指令,从上下文目录中复制文件或者目录到容器里指定路径。

FROM centos
RUN yum install wget
RUN wget -O redis.tar.gz "http://download.redis.io/releases/redis-5.0.3.tar.gz"
RUN tar -xvf redis.tar.gz
## 以上执行会创建 3 层镜像。可简化为以下格式:
FROM centos
RUN yum install wget \
    && wget -O redis.tar.gz "http://download.redis.io/releases/redis-5.0.3.tar.gz" \
    && tar -xvf redis.tar.gz
## 如上,以 && 符号连接命令,这样执行后,只会创建 1 层镜像。
COPY test.txt /mydir/

docker build 命令用于使用 Dockerfile 创建镜像。(在 Dockerfile 文件的存放目录下,执行构建动作。)

docker build -t <image_tag> . # --tag, -t: 镜像的名字及标签,通常 name:tag 或者 name 格式;可以在一次构建中为一个镜像设置多个标签。

最后的 . 代表本次执行的上下文路径。上下文路径,是指 docker 在构建镜像,有时候想要使用到本机的文件(比如复制),docker build 命令得知这个路径后,会将路径下的所有内容打包。

解析:由于 docker 的运行模式是 C/S。我们本机是 C,docker 引擎是 S。实际的构建过程是在 docker 引擎下完成的,所以这个时候无法用到我们本机的文件。这就需要把我们本机的指定目录下的文件一起打包提供给 docker 引擎使用。如果未说明最后一个参数,那么默认上下文路径就是 Dockerfile 所在的位置。

注意:上下文路径下不要放无用的文件,因为会一起打包发送给 docker 引擎,如果文件过多会造成过程缓慢。 

docker tag : 标记本地镜像,将其归入某一仓库。

docker tag ubuntu:16.04 alan/ubuntu:v3 # 将镜像ubuntu:16.04标记为 alan/ubuntu:v3 镜像。

 docker login : 登陆到一个Docker镜像仓库,如果未指定镜像仓库地址,默认为官方仓库 Docker Hub

docker login -u 用户名 -p 密码 # 登陆到Docker Hub
docker login xxx.xxx.com --username alan --password abcd1234

docker push : 将本地的镜像上传到镜像仓库,要先登陆到镜像仓库

docker push alan/ubuntu:v3

docker logout : 登出一个Docker镜像仓库,如果未指定镜像仓库地址,默认为官方仓库 Docker Hub 

docker logout # 登出Docker Hub

参考:

Install Docker Engine on Ubuntu

https://www.cnblogs.com/liuyublog/p/9099410.html

ubuntu 安装 docker 以及 docker 入门教程

Docker 命令大全

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值