Docker,安装+简单使用 (一)

docker简介

docker 究竟是什么?docker 是一个基于LXC (linux containers)的高级容器引擎。听起来是不是不知道在说什么?简单地说,docker 是一个轻量级的虚拟解决方案,或者说 —— 一个超轻量级的虚拟机。你一定理解虚拟机是什么,那么,你现在可以认为 docker 是一个秒级启动的虚拟机,可以轻易创建和删除,就这一点,是不是酷毙了。

docker 是一种集装箱式的工作方式。正如我们会将各种不同的货物统一打包成一个个集装箱,进行标准的管理和运输,在 docker 的世界里,我们把应用和应用所依赖的运行环境打包成一个个 image,然后分发到任意支持 docker 的平台,就可以在这些平台运行我们的应用,提供服务。
那支持 docker 的平台有哪些?因为 docker 是基于 linux 的,在任意的 linux 发行版我们都可以原生地支持 docker,只要对应的内核版本大于 3.10 并且是 64bit,而在 Windows 和 Mac 中,我们可以通过 boot2docker 来运行 docker,这几乎意味着,所有的主流平台都支持 docker 的运行 —— 从此你不再需要为跨平台而苦恼。

docker下载安装教程

https://www.widuu.com/chinese_docker/installation/ubuntu.html

//卸载已经安装的docker
$sudo apt-get remove docker docker-engine docker.io containerd runc
//开始安装,顺序执行
$sudo apt-get update
$sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg-agent \
    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"
$apt-get update
//$sudo apt-get install docker-engine 该命令以不可用,使用如下命令查看暗转
//查看ce 和 ce-cli版本
$apt-cache madison docker-ce
$apt-cache madison docker-ce-cli
//安装制定版本格式:
//sudo apt-get install docker-ce=<VERSION_STRING> docker-ce-cli=<VERSION_STRING> containerd.io
$sudo apt-get install docker-ce=5:18.09.0~3-0~ubuntu-bionic docker-ce-cli=5:18.09.0~3-0~ubuntu-bionic containerd.io

//启动docker
$sudo systemctl enable docker
$sudo systemctl start docker

检测是否安装正常

$ sudo docker run hello-world

开启docker镜像加速,你懂得,绝望之墙
在 /etc/docker/daemon.json 文件(无则创建)中加入下面内容,然后重启服务
https://registry.docker-cn.com 是官方加速镜像网站

{"registry-mirrors":["https://registry.docker-cn.com"]}
$ sudo systemctl daemon-reload
$ sudo systemctl restart docker

docker基本命令

运行一个容器,输出hello world

$docker run ubuntu:15.10 /bin/echo "Hello world"
//docker: Docker 的二进制执行文件。
//run: 与前面的 docker 组合来运行一个容器。
//ubuntu:15.10 指定要运行的镜像,Docker 首先从本地主机上查找镜像是否存在,如果不存在,Docker 就会从镜像仓库 Docker Hub 下载公共镜像。
///bin/echo "Hello world": 在启动的容器里执行的命令

进入容器,开始交互

$docker run -i -t ubuntu:15.10 /bin/bash
//-t: 在新容器内指定一个伪终端或终端。
//-i: 允许你对容器内的标准输入 (STDIN) 进行交互。

退出容器使用CTRL+D或者exit

其他简答命令

//设置docker后台启动
$docker run -d ubuntu:15.10 /bin/sh -c "while true; do echo hello world; sleep 1; done"
//查看docker 情况
$docker ps
//查看标准输出  2b1b7a428627是容器ID
$docker logs 2b1b7a428627
//停止容器
$docker stop amazing_cori

容器

容器基本使用

//拉取一个镜像
$docker pull ubuntu

//进入一个容器,i:交互式  t:终端 d:守护进程运行
$docker run -itd ubuntu /bin/bash

//退出 exit 或者 CTRL+D

//查看所有的容器
$docker ps -a
//查看最后一次创建的容器
$docker ps -l

//启动一个已经停止的容器
$docker start b750bbbcfd88 

//重启容器
$docker restart b750bbbcfd88 

//进入容器,退出容器时,容器停止运行
$docker attach c0c28a7a6021
//进入容器,退出时,容器正常运行
$docker exec -it c0c28a7a6021 /bin/bash

//导出本地容器快照
$docker export c0c28a7a6021 > ubuntu_test.tar
//根据本地容器快照,启动一个容器
$cat ubuntu_test.tar | docker import - test_ubuntu:v1
//url导入容器
$docker import http://example.com/exampleimage.tgz example/imagerepo

//删除容器
$docker rm -f 6eaf6776e80d
//删除所有处于终止状态的容器
$docker container prune

容器使用的简单例子

//拉取一个webapp镜像
$docker pull training/webapp
//后台运行app.py   -P:本地端口和docker端口映射
$docker run -d -P training/webapp python app.py
//查看端口映射信息 PORTS:0.0.0.0:32768->5000/tcp
$docker ps

浏览器访问 及 返回数据 如下:
在这里插入图片描述

//当然也可以指定映射的端口
$docker run -d -p 5000:5000 training/webapp python app.py
//查看端口映射情况
$docker port nervous_wiles

//查看容器内容进程
$docker top nervous_wiles

//查看容器的底层 它会返回一个 JSON 文件记录着 Docker 容器的配置和状态信息。
$docker inspect nervous_wiles

镜像

镜像的基本命令

//查看镜像
$docker images
//查找镜像,这里找nginx,也可以查找别的
$docker search nginx
//拉取镜像
$docker pull httpd
//删除镜像
$docker rmi ubuntu:15.10

//在一个镜像的基础上创建一个新镜像
//-m:描述  -a:作者   id  新镜像名称 
$docker commit -m="wd_ubuntu_images" -a="wangdong" 8e3130506cbc wd/ubuntu:v1.0

//修改镜像标签 docker tag <ID> <NAME>:<TAG>
$docker tag 4d1cbc59f020 wd/centos:test_tag

手动diy一个镜像

$vim Dockerfile  //创建一个文件,在文件中写入如下内容

FROM    centos:6.7
MAINTAINER      Fisher "[email protected]"

RUN     /bin/echo 'root:123456' |chpasswd
RUN     useradd runoob
RUN     /bin/echo 'runoob:123456' |chpasswd
RUN     /bin/echo -e "LANG=\"en_US.UTF-8\"" >/etc/default/local
EXPOSE  22
EXPOSE  80
CMD     /usr/sbin/sshd -D
  • 每一个指令都会在镜像上创建一个新的层,每一个指令的前缀都必须是大写的
  • 第一条FROM,指定使用哪个镜像源
  • RUN 指令告诉docker 在镜像内执行命令,安装了什么
$docker build -t wd/centos:6.7 .
  • -t :指定要创建的目标镜像名
  • . :Dockerfile 文件所在目录,可以指定Dockerfile 的绝对路径
$docker images   //查看新创建的镜像

更多Dockerfile说明和用法:https://www.runoob.com/docker/docker-dockerfile.html

仓库

首先在阿里云上创建一个仓库,创建教程:https://www.cnblogs.com/zsifan/p/11722137.html
操作步骤在仓库的基本信息中
别问我为什么不用:dockerhub

//登录阿里云仓库,具体链接到哪 看你仓库建在哪,我这里建在北京,密码是你创建仓库的密码
$sudo docker login --username=阿里云账户名 registry.cn-beijing.aliyuncs.com

//修改标签,必须修改为阿里云给的固定格式,tag可以自己定
$docker tag 4d1cbc59f020 registry.cn-beijing.aliyuncs.com/wshr/wshr_yutiandou:test_image

//上传到仓库
$docker push registry.cn-beijing.aliyuncs.com/wshr/wshr_yutiandou:test_image

//拉取镜像
$docker pull registry.cn-beijing.aliyuncs.com/wshr/wshr_yutiandou:test_image

未完待续

猜你喜欢

转载自blog.csdn.net/qq_25490573/article/details/103689428