docker(一)
docker与虚拟机的区别:
docker关键技术:
Namespace:名称空间【各种名称空间起到绝对隔离的作用】
联合文件系统【为docker镜像准备,启动容器的时候挂载不同路径,也能起到一定的隔离作用】
Cgroups【隔离资源(cpu/内存)】
centos安装docker
1.安装依赖包
yum install -y yum-utils device-mapper-persistent-data lvm2
卸载旧版本(如果安装过旧版本的话)
yum remove docker docker-common docker-selinux docker-engine
2、设置yum源
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
3、可以查看所有仓库中所有docker版本,并选择特定版本安装
yum list docker-ce --showduplicates | sort -r
4、安装docker
yum install <FQPN> # 例如:sudo yum install docker-ce-17.12.0.ce
5、启动停止docker
systemctl start docker #启动docker服务
systemctl stop docker #关闭docker服务
6、查看版本
docker version
7、配置加速器
vim /etc/docker/daemon.json
{ "registry-mirrors": [ "http://hub-mirror.c.163.com" ] }
https://registry.docker-cn.com
http://hub-mirror.c.163.com
https://docker.mirrors.ustc.edu.cn
重新加载配置文件并重启Docker
systemctl daemon-reload
systemctl restart docker
可以使用以下命令验证镜像源是否修改成功
docker info
docker基本命令:
https://hub.docker.com/
docker pull jenkins:版本号 如不指定,默认latest 【jenkins最新的版本已经停止维护】docker pull jenkins/jenkins:lts
如果删除镜像失败,提示容器正在使用,
docker rm -f 容器名 【删除容器】
查看已经安装的镜像
docker rmi -f $(docker images -aq) 删除全部镜像
REPOSITORY 仓库+名称
TAG 版本号
IMAGE ID 全球唯一ID
CREATED 制作时间
SIZE 磁盘空间
没网的情况下利用其他的镜像
docker save jenkins > myjenkins.war 本地打包
docker load < myjenkins.war 解包
docker tag jenkins jenkins:8.8.0
容器运行:
docker run -d --name=myjenkins jenkins/jenkins:lts
docker ps -s -a
docker run -d --name=myjenkins -p 8080:8080 jenkins/jenkins:lts
前面的8080是宿主机的,后面的8080是容器的
启动的时候一般用 docker logs -f myjenkins【及时打印,类似于tail -f】
docker run -d --name=myjenkins -p 8080:8080 -p 50000:50000 -v /home/mydocker/jenkins_home:/var/jenkins_home jenkins/jenkins:lts
docker run -d --name=myjenkins -p 8080:8080 -p 50000:50000 -v /home/mydocker/jenkins_home:/var/jenkins_home --env JAVA_OPTS="-Xmx8192m" jenkins/jenkins:lts
JAVA_OPTS 为jenkins环境变量的key值;每个容器的环境变量不一致,可以通过env搜索
注意:此处需要修改目录权限
jenkins_home⽬录的拥有者为root⽤户,⽽容器中jenkins user的uid为1000
- chown -R 1000:1000 /home/mydocker/jenkins_home
启动的时候就需要挂载
登录容器:
宿主机与容器之间copy文件:
登录容器中也可以查看
查看当前docker 信息:docker info
查看容器元信息:
两个容器间通信:
原理是后者把需要依赖的容器实例的网络信息保存在自己的环境变量中
注意:--link 只能在一台机上使用,,,