Docker 学习轨迹

Docker
环境配置

Docker

环境配置
操作系统的设置,各种库和组件的安装。
带环境安装的一种解决方案 虚拟机 (1)资源占用多 (2)冗余步骤多 (3)启动慢
Linux 容器(Linux Containers,缩写为 LXC) 进程级别的 
多个容器可以共享资源,虚拟机都是独享资源
Linux 容器不是模拟一个完整的操作系统,而是对进程进行隔离。
(1)启动快 (2)资源占用少  (3)体积小

Docker 属于 Linux 容器的一种封装,提供简单易用的容器使用接口

用途:
提供一次性的环境
提供弹性的云服务
组建微服务架构 

社区版(Community Edition,缩写为 CE)	
企业版(Enterprise Edition,缩写为 EE)	
		docker version
		docker info
	  
		# 列出本机的所有 image 文件。
		$ docker image ls

		# 删除 image 文件
		$ docker image rm [imageName]
		# 将 image 文件从仓库抓取到本地
		docker image pull library/hello-world
		# 运行这个 image 文件
		docker container run hello-world
		docker container run -it ubuntu bash
		docker container kill [containID]
		# 列出本机正在运行的容器
		docker container ls
		# 列出本机所有容器,包括终止运行的容器
		docker container ls --all
		# 删除容器文件
		$ docker container rm [containerID]
		# 创建 image 文件
		$ docker image build -t koa-demo .
		# 或者
		$ docker image build -t koa-demo:0.0.1 .
		# 生成容器
		$ docker container run -p 8000:3000 -it koa-demo /bin/bash
		# 或者
		$ docker container run -p 8000:3000 -it koa-demo:0.0.1 /bin/bash
		docker container run --rm -p 8000:3000 -it koa-demo /bin/bash
		docker container start [containerID]
		docker container stop [containerID]
		docker container logs	
		docker container exec
		docker container cp [containID]:[/path/to/file] .

		$ docker container inspect wordpress



http://www.ruanyifeng.com/blog/2018/02/docker-tutorial.html
服务器----客户端架构
Docker 把应用程序及其依赖,打包在 image 文件里面 容器的模板 image 是二进制文件
 Docker Hub  最重要、最常用的image 仓库 组
 image 文件生成的容器实例,本身也是一个文件,称为容器文件
 		Dockerfile 文件
 		.dockerignore

软件就是容器的组合:业务逻辑容器、数据库容器、储存容器、队列容器
Docker 使得软件可以拆分成若干个标准化容器,然后像搭积木一样组合起来
微服务(microservices)的思想:软件把任务外包出去,让各种外部服务完成这些任务,
软件本身只是底层服务的调度中心和组装层

在这里插入图片描述

业务容器 + 数据库容器
$ docker container run \
  --rm \
  --name wordpress \
  --volume "$PWD/":/var/www/html \
  php:5.6-apache
$ docker container run \
  -d \
  --rm \
  --name wordpressdb \
  --env MYSQL_ROOT_PASSWORD=123456 \
  --env MYSQL_DATABASE=wordpress \
  mysql:5.7
	 
$ docker container run \
  --rm \
  --name wordpress \
  --volume "$PWD/":/var/www/html \
  --link wordpressdb:mysql \
  phpwithmysql
 $ docker container run \
  -d \
  -p 127.0.0.2:8080:80 \
  --rm \
  --name wordpress \
  --env WORDPRESS_DB_PASSWORD=123456 \
  --link wordpressdb:mysql \
  --volume "$PWD/wordpress":/var/www/html \
  wordpress
Compose 


试图解决开发者的世纪难题在我的机器上可以跑
虚拟机创建占用了一套完整的系统资源(guest os),存在着大材小用的问题
Docker本质仅隔离应用程序,共享当前系统核心

在这里插入图片描述
在这里插入图片描述

 虚拟机热迁移 这个功能,Docker就做的不是很好
 Docker可以快速的搭建配置应用环境,简化操作,确保运行环境一致性“一次编译 到处运行”,应用级隔离,弹性伸缩,快速拓展
# step 1: 安装必要的一些系统工具
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
# Step 2: 添加软件源信息
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# Step 3: 更新并安装 Docker-CE
sudo yum makecache fast
sudo yum -y install docker-ce
# Step 4: 开启Docker服务
sudo service docker start

docker pull nginx
docker image ls
开源的应用容器引擎
 Go 语言 
 让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化
 沙箱机制
 容器性能开销极低
  CE(Community Edition: 社区版) 和 EE(Enterprise Edition: 企业版)
  运维工程师及后端开发人员
  Web 应用的自动化打包和发布。
  	自动化测试和持续集成、发布
  	 PaaS 环境。
  	 用于开发,交付和运行应用程序的开放平台
  	 应用程序与基础架构分开,从而可以快速交付软件
  	 管理应用程序相同的方式来管理基础架构
  	 快速交付,测试和部署代码
  	 持续集成和持续交付(CI / CD)工作流程
  	 可移植性和轻量级
  	 三个基本概念:镜像(Image)容器(Container)仓库(Repository)	
  	镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体
  	容器可以被创建、启动、停止、删除、暂停等
  	仓库(Repository):仓库可看成一个代码控制中心,用来保存镜像

在这里插入图片描述

 yum list docker-ce --showduplicates | sort -r
 sudo yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io
 $ sudo systemctl start docker
 $ sudo docker run hello-world
 Docker 必须部署在 Linux 内核的系统上。如果其他系统想部署 Docker 就必须安装一个虚拟 Linux 环境。
 sudo systemctl daemon-reload
  sudo systemctl restart docker
   docker run ubuntu:15.10 /bin/echo "Hello world"
   Docker 首先从本地主机上查找镜像是否存在,如果不存在,Docker 就会从镜像仓库 Docker Hub 下载公共镜像
   docker run -i -t ubuntu:15.10 /bin/bash
   -t: 在新容器内指定一个伪终端或终端。
   -i: 允许你对容器内的标准输入 (STDIN) 进行交互
   cat /proc/version
   运行 exit 命令或者使用 CTRL+D 来退出容器。
   docker run -d ubuntu:15.10 /bin/sh -c "while true; do echo hello world; sleep 1; done"
   容器 ID
   docker ps
   CONTAINER ID: 容器 ID。

IMAGE: 使用的镜像。

COMMAND: 启动容器时运行的命令。

CREATED: 容器的创建时间。

STATUS: 容器状态。
PORTS: 容器的端口信息和使用的连接类型(tcp\udp)。

NAMES: 自动分配的容器名称
 docker logs 命令,查看容器内的标准输出
  docker stop 命令来停止容器
   docker 命令来查看到 Docker 客户端的所有命令选项
   ocker command --help
   docker pull ubuntu  获取镜像
   docker run -it ubuntu /bin/bash
   -i: 交互式操作。
-t: 终端。
ubuntu: ubuntu 镜像。
/bin/bash:放在镜像名后的是命令
docker start 启动一个已停止的容器
查看所有的容器 docker ps -a
docker run -itd --name ubuntu-test ubuntu /bin/bash
 docker stop <容器 ID>
  docker restart <容器 ID>
  $ docker attach 1e560fca3906 
  docker exec -it 243c32535da7 /bin/bash
   docker export 1e560fca3906 > ubuntu.tar
    cat docker/ubuntu.tar | docker import - test/ubuntu:v1
     docker import http://example.com/exampleimage.tgz example/imagerepo
      docker rm -f 1e560fca3906
       docker run -d -P training/webapp python app.py
       -d:让容器在后台运行。

-P:将容器内部使用的网络端口随机映射到我们使用的主机上。
 docker run -d -p 5000:5000 training/webapp python app.py
  docker ps 来查看我们正在运行的容器
  docker run -d -p 5000:5000 training/webapp python app.py
  docker port,使用 docker port 可以查看指定 (ID 或者名字)容器的某个确定端口映射到宿主机的端口号
   docker logs -f bf08b7f2cd89
   -f: 让 docker logs 像使用 tail -f 一样来输出容器内部的标准输出
   使用 docker top 来查看容器内部运行的进程
    docker inspect 来查看 Docker 的底层信息
     docker images 来列出本地主机上的镜像
     REPOSITORY:表示镜像的仓库源

TAG:镜像的标签

IMAGE ID:镜像ID

CREATED:镜像创建时间

SIZE:镜像大小
使用 REPOSITORY:TAG 来定义不同的镜像
docker pull ubuntu:13.10
docker search httpd
NAME: 镜像仓库源的名称

DESCRIPTION: 镜像的描述

OFFICIAL: 是否 docker 官方发布

stars: 类似 Github 里面的 star,表示点赞、喜欢的意思。

AUTOMATED: 自动构建。
docker commit -m="has update" -a="runoob" e218edb10161 runoob/ubuntu:v2
-m: 提交的描述信息

-a: 指定镜像作者

e218edb10161:容器 ID

runoob/ubuntu:v2: 指定要创建的目标镜像名
runoob@runoob:~$ cat Dockerfile 
FROM    centos:6.7
MAINTAINER      Fisher "fisher@sudops.com"

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
docker build -t runoob/centos:6.7 .
-t :指定要创建的目标镜像名

. :Dockerfile 文件所在目录,可以指定Dockerfile 的绝对路径
docker tag 860c279d2fec runoob/centos:dev
设置镜像标签
Docker 容器连接
-P :是容器内部端口随机映射到主机的高端口。
-p : 是容器内部端口绑定到指定的主机端口。
docker run -d -P training/webapp python app.py
docker ps
 docker run -d -p 5000:5000 training/webapp python app.py
 docker run -d -p 127.0.0.1:5001:5000 training/webapp python app.py
 docker run -d -p 127.0.0.1:5000:5000/udp training/webapp python app.py
容器命名
 docker run -d -P --name runoob training/webapp python app.py
  docker network create -d bridge test-net
  的 /etc/docker/daemon.json 文件中增加以下内容来设置全部容器的 DNS:
docker run -it --rm  ubuntu  cat etc/resolv.conf
 docker run -it --rm -h host_ubuntu  --dns=114.114.114.114 --dns-search=test.com ubuntu
 docker login
  docker logout
  $ docker search ubuntu
   docker pull ubuntu 
    docker push
    Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值