lunix 下安装docker与镜像
准备:contos7
Docker安装
1、检查yum源 (此步骤可省略,一般contos7都会有),centos7的yum源自带docker
cd /etc/yum.repos.d | ls
2、查看yum上的docker版本
yum list docker
3、选择并安装docker某个版本
yum install docker.x86_64
4、安装好查看安装版本
docker --version
查看docker是否安装成功
yum list installed |grep docker
5、启动docker
systemctl start docker
(可根据实际情况选择性的设置开机自启
systemctl enable docker.service
)
6、查看docker服务状态
systemctl status docker
镜像安装
1、拉取镜像仓库
docker pull registry
2、查看所有镜像(此步骤也可以跳过)
docker images
3、在主机上新建一个目录
我建的位置是在 usr/local/下 文件夹名:docker_registry
创建文件夹命令:mkdir docker_registry
4、启动镜像
docker run -d -p 5000:5000 --name=dockerRegistry --restart=always --privileged=true -v /usr/local/docker_registry:/var/lib/registry registry
解释:
-d 是后台启动容器。
-p 将容器的 5000 端口映射到 Host 的 5000 端口。5000 是 registry 服务端口。
--name=dockerRegistry 运行的容器名称
--restart=always 自动重启
--privileged=true centos7中的安全模块selinux把权限禁止了,加上这行是给容器增加执行权限
-v /usr/local/docker_registry:/var/lib/registry 把主机的/usr/local/docker_registry 目录挂载到registry容器的/var/lib/registry目录下
registry 镜像名称
5、从公有仓库拉去一个nginx镜像下来测试
需要安装什么镜像,可以选择先查询所有版本,在选择其中一个
docker search 镜像名
例如:docker search redis
docker pull nginx
6、查看镜像 docker images
7、修改配置文件 /etc/docker/daemon.json
第一次建可能此文件里面空的
注意:文中192.168.1.21 替换为你连的lunix的ip
正确的配置例子:
"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn", "https://hub-mirror.c.163.com", "https://registry.docker-cn.com"],(# 此处逗号一定的有)
"insecure-registries":["192.168.1.21:5000"]
"registry-mirrors"可选地址:
Docker中国区官方镜像
(不推荐,国家把docker国外镜像hub封掉了,导致镜像pull不下来)
https://registry.docker-cn.com
网易
http://hub-mirror.c.163.com
中国科技大学(推荐)
https://docker.mirrors.ustc.edu.cn
阿里云容器 服务
https://cr.console.aliyun.com/
Daocloud
http://141e5461.m.daocloud.io/
8、新建tag
docker tag 镜像名:版本 主机ip/新的镜像名:版本
例:docker tag nginx 192.168.1.21:5000/nginx
此处暴露ip不方便,可以在/etc/hosts 中修改,如下
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
127.0.0.1 docker-registry
9、推送到本地仓库
docker push ip:5000/nginx
10、去之前新建的仓库查看是否已经有nginx,如果有就表示成功,
cd /usr/local/docker_registry/docker/registry/v2/repositories
此处也可以用命令的方式查看本地仓库中的镜像
curl -X GET http://127.0.0.1:5000/v2/_catalog
查看仓库中某个镜像版本
curl -X GET http://127.0.0.1:5000/v2/镜像名/tags/list
11、此处做一个测试,删除刚才的tag镜像,在重新pull,会成功拉取到刚才的镜像
docker rmi 192.168.1.21:5000/nginx 删除
docker rmi nginx 删除
docker images 查询,此时192.168.1.21:5000/nginx 和 nginx 都已被删除
重新拉取
docker pull 192.168.1.21:5000/nginx
docker images 查询,此时192.168.1.21:5000/nginx 又可以查到了
安装上传下载文件软件 yum install lrzsz -y
命令: 上传(rz)和下载(sz)
安装redis:
1、docker search redis 查看镜像版本
2、docker pull redis 不加版本号默认最新的
3、docker images 查看本地镜像redis是否存在了
4、在/usr/local/docker_registry/docker下创建文件夹redis
创建redis: mkdir redis
然后在redis下创建data和文件redis.conf
建data: mkdir data
redis.conf文件可以下载下来再用vim命令编辑粘贴进去,也可以直接从官网下载
我选择直接下载,wget http://download.redis.io/redis-stable/redis.conf -o redis.conf
(注意:此时我在文件夹redis下,所以直接可用上面的命令,如果不在此文件夹下,需要在wegt后面加 -P /usr/local/docker_registry/docker/redis
即完整命令为 wegt/usr/local/docker_registry/docker/redis http://download.redis.io/redis-stable/redis.conf -o redis.conf)
还有一个注意,如果报错:-bash: wget: command not found ,表示没有安装wget软件包,一般linux最小化安装时,wget不会默认被安装。
解决: yum安装 yum -y install wget (先把wget安装上在执行上面的下载文件redis.conf的命令)
文件redis.conf下载到redis后,需要vim编辑;我做了如下几个修改
#注释掉这部分 bind 127.0.0.1 ,这是限制redis只能本地访问
#默认yes protected-mode no ,开启保护模式,限制为本地访问
#默认no,改为yes意为以守护进程方式启动 daemonize no,可后台运行,除非kill进程,改为yes会使配置文件方式启动redis失败
#redis持久化 appendonly yes
最后保存退出。
5、创建并启动redis
docker run -p 6379:6379 --name redis -v /usr/local/docker_registry/docker/redis/redis.conf:/etc/redis/redis.conf -v /usr/local/docker_registry/docker/redis/data:/data -d redis redis-server /etc/redis/redis.conf --appendonly yes
6、查看运行的容器,此时会有redis
docker ps
7、测试
先执行:docker exec -it redis /bin/bash
然后: redis-cli
接下来就可以正常操作redis命令了
安装JDK
yum -y install java-1.8.0-openjdk*
配置环境变量 打开 vim /etc/profile添加一下内容
推荐自己去官网下载一个jdk,文件传输过来,解压后配置
export JAVA_HOME=/usr/local/JDK8/jdk1.8.0_202
export CLASSPATH=${JAVA_HOME}/lib
export PATH=$PATH:${JAVA_HOME}/bin
修改完成之后,使其生效
source /etc/profile
输入java -version 返回版本信息则安装正常。
安装dockers过程可能会出现一些问题,此处记录下
报错1:Job for docker.service failed because the control process exited with error code. See "systemctl status docker.service" and "journalctl -xe" for details.
解决①:
检查/etc/docker/daemon.json文件,文件改完要重启docker
(重启命令: systemctl restart docker )
解决②:
如果解决①没效果,可以试试这个
1、卸载docker,重新安装
1) 查询安装过的包 yum list installed | grep docker
2) 删除安装过的包
yum -y remove docker.x86_64
yum -y remove docker-client.x86_64
yum -y remove docker-common.x86_64
2、更新yum为最新
sudo yum update
3、安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
4、设置yum源
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
5、查看仓库中docker版本
yum list docker-ce --showduplicates | sort -r
6、安装docker
sudo yum install docker-ce
7、启动Docker,设置开机启动,停止Docker
sudo systemctl start docker
sudo systemctl enable docker
sudo systemctl stop docker(此处不用此命令,前两个命令就可以)
8、查看版本
docker version
报错2:
docker: Error response from daemon: Conflict. The container name "/dockerRegistry" is already in use by container "fac69bfaf99ae6e677c498705231e2dd2ebda326de3cc991cba4acb67705fddd". You have to remove (or rename) that container to be able to reuse that name.See 'docker run --help'.
解决:错误原因是dockerRegistry已在容器中存在了
命令:
1)查看有什么在运行 docker ps -l
2)删除 docker rm 09f5b868c5a5
3)再次执行docker run -d -p 5000:5000 --name=dockerRegistry --restart=always --privileged=true -v /usr/local/docker_registry:/var/lib/registry docker.io/registry
参考:https://www.jianshu.com/p/8f38f198724e
安装gitlab镜像参考:https://www.jianshu.com/p/080a962c35b6 https://www.cnblogs.com/zuxing/articles/9329152.html