视频教程:下载链接
主机虚拟化
容器虚拟化
LXC:LinuX Container
docker —>LXC的增强版,简化LXC
docker优势:统一环境,一次开发多出运行
docker劣势:增加运维的难度,因为一个容器一个进程,要进行调试要突破边界,进入容器才能调试
安装一些必要的系统工具:
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
添加软件源信息:
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
更新 yum 缓存:
sudo yum makecache fast
安装 Docker-ce:
sudo yum -y install docker-ce
启动 Docker 后台服务
sudo systemctl start docker
测试运行 hello-world
[root@runoob ~]# docker run hello-world
由于本地没有hello-world这个镜像,所以会下载一个hello-world的镜像,并在容器内运行。
镜像加速
鉴于国内网络问题,后续拉取 Docker 镜像十分缓慢,我们可以需要配置加速器来解决,我使用的是网易的镜像地址:http://hub-mirror.c.163.com。
新版的 Docker 使用 /etc/docker/daemon.json(Linux) 或者 %programdata%\docker\config\daemon.json(Windows) 来配置 Daemon。
请在该配置文件中加入(没有该文件的话,请先建一个):
{
"registry-mirrors": ["http://hub-mirror.c.163.com"]
}
查看docker版本
docker version
查看docker中的镜像
docker images
下载安装centos虚拟镜像
查看docker有哪些镜像
docker search centos
下载镜像
docker pull docker.io/centos
进入docker虚拟镜像
docker run -it docker.io/centos:latest /bin/bash
镜像:静态的
容器:动态的,有生命周期
方式一
运行容器
docker run -it centos /bin/bash
ctrl+p和ctrl+q退出容器,这个时候容器就在后台启动了
进入到运行中的容器:docker attach 容器名
方式二
使用run -d
docker run --name dc1 -d centos /bin/sh -c "while true; do echo hello world; sleep 1; done"
–name:给容器取个名字
-d:让容器在后台运行
-c:使容器执行sh脚本(打印好看日志)
docker logs [-f] [-t] [-tail] 容器名
-f --follows=true | false默认为fase
-t --timestamps=true | false 默认 false
-tail = "all"
docker top 容器名
docker exec [-d] [-i] [-t] 容器名
docker stop 容器名(发送一条命令给容器停止)
docker kill 容器名(直接停止)
docker run --name b1 -it busybox
docker commit -p b1
docker tag 92cadba8bb5a erwin/httpd:v0.1
docker run --name t1 -it erwin/httpd:v0.1
docker inspect b1
docker commit -c 'CMD ["/bin/httpd","-f","-h","/data/html/"]' -p b1 erwin/httpd:v0.2
docker run --name t2 erwin/httpd:v0.2
docker save -o myimages.gz erwin/httpd:v0.2
docker load -i myimages.gz
docker pull java:8u111
docker run -d -p 9090:9090 -v /usr/springboot-1.jar:/usr/springboot-1.jar --name springboot java:8u111 java -jar /usr/springboot-1.jar
-d 表示在后台启动
-p 9090:9090 表示将容器的端口 映射成宿主主机的端口,否则9090端口访问不到
-v /usr/springboot-1.jar:/usr/springboot-1.jar 表示将宿主主机的jar文件,映射到容器中(分号前为宿主主机的路径,分号后为容器中的路径)
–name springboot 表示为该容器取一个全局唯一的名称,这里我取的名称为springboot
java:8u111 表示镜像文件的名称和tag
java -jar /usr/springboot-1.jar 表示运行jar包,注意:这里的jar包为容器中的位置,是通过前面的-v属性映射的
docker run --name t1 -it --network none --rm busybox:latest
--rm 表示退出即删除容器
--network 网络名称 创建容器并接入哪个网络
docker run --name t1 -it --network bridge --rm busybox:latest
docker run --name t1 --network container:t2 -it --rm busybox
创建容易并共享容器t2的网络名称空间
docker run --name t1 --network host -it --rm busybox
创建并共享宿主机的网络名称空间
docker run --name t1 --rm -p 80 erwin/httpd:v0.2
使用iptables -t nat -vnL
查看映射的端口(或docker ports 容器名
)
自此可以通过访问宿主机的32768端口访问到容器的80端口
systemctl stop docker
{
"registry-mirrors": ["http://hub-mirror.c.163.com"],
"bip":"10.0.0.1/16"
}
启动一个容器,使容器目录/data/t1挂载到主机/data/t1上
docker run --name t1 --rm -it -v /data/t1:/data/t1 busybox
在容器/data/t1中添加文件index.html
查看宿主机的是否有这个文件
docker run --name t2 -it --volumes-from t1 busybox
简单一句话:Dockerfile是制作镜像的指令文件。
Dockerfile文件注意事项:
# This my first nginx Dockerfile
# Version 1.0
# Base images 基础镜像
FROM centos
#MAINTAINER 维护者信息
MAINTAINER tianfeiyu
#ENV 设置环境变量
ENV PATH /usr/local/nginx/sbin:$PATH
#ADD 文件放在当前目录下,拷过去会自动解压
ADD nginx-1.8.0.tar.gz /usr/local/
ADD epel-release-latest-7.noarch.rpm /usr/local/
#RUN 执行以下命令
RUN rpm -ivh /usr/local/epel-release-latest-7.noarch.rpm
RUN yum install -y wget lftp gcc gcc-c++ make openssl-devel pcre-devel pcre && yum clean all
RUN useradd -s /sbin/nologin -M www
#WORKDIR 相当于cd
WORKDIR /usr/local/nginx-1.8.0
RUN ./configure --prefix=/usr/local/nginx --user=www --group=www --with-http_ssl_module --with-pcre && make && make install
RUN echo "daemon off;" >> /etc/nginx.conf
#EXPOSE 映射端口
EXPOSE 80
#CMD 运行以下命令
CMD ["nginx"]
yum -y install docker-registry
cd /etc/docker-distribution/registry/
vi config.yml
version: 0.1
log:
fields:
service: registry
storage:
cache:
layerinfo: inmemory
filesystem:
rootdirectory: /var/lib/registry
http:
addr: :5000
systemctl start docker-distribution
"insecure-registries":["192.168.80.128:5000"]
docker tag busybox:latest 192.168.80.128:5000/b1:v02
docker push 192.168.80.128:5000/b1:v02
barbor是提供可是话ui的docker registry
可以去github上下载最新版的barbor:https://github.com/goharbor/harbor ,在视频教程目录也有1.8版的
sudo curl -L "https://github.com/docker/compose/releases/download/1.24.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
./install.sh
第一次启动较慢,启动成功,打开页面
初始账号密码:admin,Harbor12345
end