赞
踩
目录
Docker容器是一个开源的应用容器引擎,让开发者可以以统一的方式打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何安装了docker引擎的服务器上(包括流行的Linux机器、windows机器),也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app)。几乎没有性能开销,可以很容易地在机器和数据中心中运行。最重要的是,他们不依赖于任何语言、框架包括系统。
当然这是百度词条上说的,简单明了的说就是提供一个虚拟化为了我们方便部署服务。
1、更高效的利用系统资源;
2、更快速的启动时间;
3、一致的运行环境;
4、持续支付和部署;
5、更轻松的迁移;
6、更轻松的维护和拓展。
1、可以快速搭建开发环境;
2、可以将运行环境和配置放在代码中并部署;
3、可以使用docker-compose来模拟生产环境;
4、进行自动测试;
5、使用docker镜像进行自我部署等等。
输入以下命令对linux进行更新,如果linux更新过慢可以更换阿里云源在进行更新。
sudo yum update -y
输入以下命令安装几个包,“-y”表示在安装过程中省略手动确认的安装步骤(如图1)。
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
首先添加阿里云yum仓库
- #设置阿里云镜像源
- sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
安装Docker
- #安装 Docker-CE ce 表示Docker社区版
- sudo yum install -y docker-ce docker-ce-cli containerd.io
##启动docker
sudo systemct start docker
##查看docker状态(如图2)可以简单判断docker是否安装成功如图出现”active“表示已经启动
sudo systemctl status docker
##设置开机启动可以省去linux每次开机多需要输入命令启动
sudo systemctl enable docker
输入以下命令出现如图3表示成功安装。
为了安装Docker,你需要以下的系统配置。
Artful 17.10 (Docker CE 17.11 Edge and higher only)
Xenial 16.04 (LTS)
Trusty 14.04 (LTS)
Docker CE is supported on Ubuntu on x86_64, armhf, s390x (IBM Z), and ppc64le (IBM Power) architectures.
ppc64le and s390x limitations: Packages for IBM Z and Power architectures are only available on Ubuntu Xenial and above.
卸载旧版docker
sudo apt-get remove docker docker-engine docker.io
更新软件包
sudo apt-get update
还需要安装一些依赖包用于docker成功安装操作
sudo apt-get install ca-certificates curl gnupg lsb-release
执行以下命令来添加Docker官方的GPG密钥:
sudo 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 install docker-ce docker-ce-cli containerd.io
docker version ##如图4
docker info
我们看到这里有两个镜像以及镜像ID,大小,创建时间。
# 解释
REPOSITORY 镜像的仓库源
TAG 镜像的标签
IMAGE ID 镜像的ID
CREATED 镜像的创建时间
SIZE 镜像的大小
docker images
搜索nginx镜像
docker search nginx
这里我下载nginx镜像如图5。
# 下载镜像 docker pull 镜像名[:tag]
docker pull nginx
但我们需要下载指定镜像版本如下载mysql:8.0
docker pull mysql:8.0
删除刚才拉去的nginx镜像先查看docker镜像,再通过ID进行删除如图6。
- docker images
-
- docker rmi -f e4720093a3c1 ##卸载镜像
# docker rmi -f 镜像id # 删除指定的镜像
# docker rmi -f 镜像id id 。。。 # 删除多个镜像
1.8 查看运行镜像
docker ps
- ##启动id为e4720093a3c1的镜像
- docker start e4720093a3c1
-
- ##停止id为e4720093a3c1的镜像
- docker stop e4720093a3c1
-
- ##查看所有运行容器
- docker ps -a
-
- ##强制停止进程
- docker kill e4720093a3c1
创建一个新的容器并运行一个命令
-a stdin: 指定标准输入输出内容类型,可选 STDIN/STDOUT/STDERR 三项;
-d: 后台运行容器,并返回容器ID;
-i: 以交互模式运行容器,通常与 -t 同时使用;
-P: 随机端口映射,容器内部端口随机映射到主机的端口
-p: 指定端口映射,格式为:主机(宿主)端口:容器端口
-t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
--name="nginx-lb": 为容器指定一个名称;
--dns 8.8.8.8: 指定容器使用的DNS服务器,默认和宿主一致;
--dns-search example.com: 指定容器DNS搜索域名,默认和宿主一致;
-h "mars": 指定容器的hostname;
-e username="ritchie": 设置环境变量;
--env-file=[]: 从指定文件读入环境变量;
--cpuset="0-2" or --cpuset="0,1,2": 绑定容器到指定CPU运行;
-m :设置容器使用内存最大值;
--net="bridge": 指定容器的网络连接类型,支持 bridge/host/none/container: 四种类型;
--link=[]: 添加链接到另一个容器;
--expose=[]: 开放一个端口或一组端口;
--volume , -v: 绑定一个卷
这里我在菜鸟教程讲的更佳:
使用docker镜像nginx:latest以后台模式启动一个容器,并将容器命名为mynginx。
docker run --name mynginx -d nginx:latest
使用镜像nginx:latest以后台模式启动一个容器,并将容器的80端口映射到主机随机端口。
docker run -P -d nginx:latest
使用镜像 nginx:latest,以后台模式启动一个容器,将容器的 80 端口映射到主机的 80 端口,主机的目录 /data 映射到容器的 /data。
docker run -p 80:80 -v /data:/data -d nginx:latest
绑定容器的 8080 端口,并将其映射到本地主机 127.0.0.1 的 80 端口上。
$ docker run -p 127.0.0.1:80:8080/tcp ubuntu bash
使用镜像nginx:latest以交互模式启动一个容器,在容器内执行/bin/bash命令。
runoob@runoob:~$ docker run -it nginx:latest /bin/bash root@b8573233d675:/#
我们安装一个centos容器需要再里面执行命令。
docker exec -it 容器id /bin/bash
##解释
-i 即使没有附加也保持 STDIN 打开
-t 进入容器的 CLI 模式
docker exec -it e4720093a3c1 /bin/bash
我们把主机上的“/home/demo.txt”复制到Docker容器ID为e4720093a3c1的home目录上。
docker cp /home/demo.txt e4720093a3c1:/home/
把Docker容器上的文件" demo.txt "复制到主机上。
docker cp e4720093a3c1:/home/demo.txt /home
比如A主机上运行容器需要迁移到B主机上
我们先导出容器ID是e4720093a3c1打包为tar压缩包
docker export e4720093a3c1 > /home/centos.tar
我们再通过scp命令复制到B主机
scp /home/centos.tar root@10.22.11.22:/home
再到B主下运行
cat /home/centos.tar | docker import - centos:demo
我们还需要运行容器
docker run [选项] 镜像名/镜像id -d
如我们启动nginx
docker run -d --name nginxdemo -p 3443:80 nginx
-d 表示后台启动
--name nginx名称
-p 指定出入端口(内端口3443射映80)
数据卷挂载可以理解为你建立一个局域网共享你的帅照A主机和B主机都可以看到你的照片同时也可以删除你的帅照或者上传一些他们的照片。
主要是解决主机文件与Docker容器之间的共享
##语法
docker run [--rm] [--name <容器名称>] [-v <本机文件夹路径>:<容器文件夹路径>] <镜像名称>
## --rm 使得容器为一次性容器,程序运行结束后容器退出并销毁。
## --name <容器名称> 是给容器命名不填自动生成。
## -v 进行数据卷挂载,这是长期挂载。
## -w 指定容器的 /usr/src/myapp 目录为工作目录。
如将主机中当前目录下的 demo.py 挂载到容器的 /usr/src/demo 也就是在docker的python容器运行demo.py.
docker run -v $PWD/demo:/usr/src/myapp -w /usr/src/demo python:3.5 python demo.py
好啦docker还有很多新玩法以后再出!最好学习方法就是去看官方手册。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。