Docker学习篇(四)docker拉取centos镜像配置ssh远程连接

1 篇文章 0 订阅
1 篇文章 0 订阅

一、安装docker

1、卸载docker旧的版本
	yum remove docker \
					docker-client \ 
					docker-client-latest \ 
					docker-common \ 
					docker-latest \ 
					docker-latest-logrotate \ 
					docker-logrotate \ 
					docker-engine
2、安装需要的安装包
	yum -y install yum-utils
3、设置镜像的仓库

wget下载到本地yum目录下面更新yum软件包索引

	https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
	yum makecache fast
6、安装docker docker-ce社区版 ee企业版
	yum install docker-ce docker-ce-cli containerd.io
7、启动docker
	systemctl  start docker 
8、使用docker version是否安装成功
	docker version
9、配置阿里云镜像加速
	vim /etc/sysctl.conf
	# 添加以下语句并保存
	net.ipv4.ip_forward=1
	退出后sysctl -p查看
	net.ipv4.ip_forward = 1

配置阿里云加速

	sudo mkdir -p /etc/docker
	vim daemon.json
	{ 
			"registry-mirrors": ["https://ledt7umi.mirror.aliyuncs.com"]
	}
	sudo systemctl daemon-reload
	sudo systemctl restart docker

docker至此安装成功

二、构建centos镜像,并进入容器。

1、docker search搜索镜像docker pull构建镜像
	docker search centos
	docker pull centos
2、新建容器并启动
	docker run [可选参数] image 
	# 参数说明 
	-- name="Name" 容器名字 Nginx01 Nginx02 Nginx03,用来区分容器 
	-d 后台方式运行 
	-it 使用交互方式运行,进入容器查看内容 
	-p 指定容器的端口 
			-p 80:80 -p ip:主机端口:容器端口 
			-p 主机端口:容器端口 (常用) 
			-p 容器端口 
			容器端口 
	-P(大写) 随机指定端口 
	# 测试 启动并进入容器 
	docker run -it centos /bin/bash 
	# 退出容器 
	exit 
	# 退出容器并保持挂起状态 
	Ctrl+P+Q
	# 进入挂起的容器中
	docker attach 【容器的id】
	# 查看容器的id
	docker ps

在这里插入图片描述

3、docker的一些常用命令
	docker ps   			 #列出当前整在运行的容器
	docker ps -a 		 	 #列出当前正在运行的容器+带出历史运行过的容器
	docker rm 容器id   	 	 #删除指定容器,不能删除正在运行的容器
	docker rm -f  			 #删除所有容器
	docker ps -a -q |xargs docker rm  # 删除所有的容器
	docker start 容器id       #启动容器
	docker restart 容器id     #重启容器
	docker stop 容器id        #停止当前正在运行的容器
	docker kill 容器id        #强制停止当前的容器
	docker run -d 镜像名      #后台启动
	docker logs -tf --tail 容器名 #查看日志
	docker inspect 容器id     #镜像源数据
	docker exec -it 容器id /bin/bash #进入容器
	docker cp 容器id: 容器内路径 目标路径   #容器从内向外拷贝
	docker cp 1e322337299c:/test1.txt /root
	docker cp 目标路径 容器id:容器内路径  #容器从外向内拷贝
	docker cp index.html 1e322337299c:/usr/share/nginx/html/index.html
	docker wait 让一个容器进入等待,使其进入阻塞状态 
	docker export 讲一个容器的文件系统打包至tar 
	docker port 列出一个容器的端口映射情况 
	docker container 管理已经运行的容器的 
	docker deploy 部署新的堆栈或更新已有堆栈的 
	docker update 更新容器 
	docker rename 重命名容器 
	docker volume 卷管理 
	docker commit 提交一个容器的文件系统,使之生成一个新的镜像 
	docker cp 向一个正在运行的容器复制文件,或将容器中的文件复制出来 
	docker diff 检查一个容器文件系统更改情况 
	docker login docker登入 
	docker logout docker登出 
	docker pull 拉取镜像 
	docker push 推送镜像至服务器 
	docker search 在docker hub上查询镜像 
	docker images 列出镜像 
	docker rmi 删除镜像
	docker tag 修改本地某一镜像的标记,使其镜像属于某一仓库 
	docker build 通过指定Dockerfile文件编译镜像 
	docker history 查看镜像历史 
	docker save 将制定镜像保存成tar文件 
	docker load 从tar中恢复镜像 
	docker import 从tar中创建一个新镜像 
	docker checkpoint 设置checkpoint,类似于恢复点,可以让镜像撤销到曾经设置的某一个 checkpoint上 
	docker image docker镜像管理 
	docker manifest docker镜像清单管理 
	docker trust docker可信镜像管理 
	docker swarm docker集群管理工具 
	docker node docker集群节点控制 
	docker stack docker集群堆栈管理 
	docker info 查询docker信息 
	docker version 查询docker版本 
	docker system docker系统管理 
	docker stats docker容器资源使用统计 
	docker config 管理docker配置 
	docker network docker网络管理 
	docker plugin docker插件管理 
	docker secret docker敏感信息管理 
	docker service docker服务管理
	docker commit 容器ID 镜像名   将当前容器保存为新的镜像

三、创建centos容器,并配置ssh远程连接

1、安装基本需求
	yum -y install net-tools
2、安装openssl ,openssh-server
	yum -y install openssl openssh-server
3、需要进行以下设置
	ssh-keygen -q -t rsa -b 2048 -f /etc/ssh/ssh_host_rsa_key -N ''
	ssh-keygen -q -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key -N ''
	ssh-keygen -t dsa -f /etc/ssh/ssh_host_ed25519_key -N ''
4、接着修改sshd_config文件配置信息,路径/etc/ssh/sshd_config
	1.将Port 22 前面的注释去掉(开启22号端口)
	2.将PermitRootLogin的no改为yes(这里是设置允许root用户登录,可根据自己需求决定是否开启)

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

5、开启sshd服务
	/usr/sbin/sshd -D &           #后台启动sshd
6、设置root密码
	yum -y install passwd
	passwd

docker rename 容器id 新name #修改容器id方便记录

7、测试远程连接
	ifconfig				#可以查看当前容器的内网ip
	ssh root@172.17.0.2

在这里插入图片描述

四、解决systemctl报错问题

	System has not been booted with systemd as init system (PID 1). Can't operate.
	Failed to talk to init daemon.

当我需要启动一个进程的时候都会出现以下这种情况的报错查看了docker官网,发现Docker容器再默认情况下是按“非特权”运行时,在“非特权”下不允许容器访问任何设备,容器对主机的访问在与主机上容器外部运行的进程不同。只有在以“特权”运行时,才允许容器访问任何设备,并可以在AppArmor或SELinux中进行一些配置,从而允许容器对主机的访问几乎与在主机上容器外部运行的进程相同。

解决方案:

1、将当前容器保存为新的镜像
	docker commit 容器ID 镜像名 							#容器名就是之前创建的容器 镜像名随意取只要分清楚即可

在这里插入图片描述

2、再创建一个以“特权”运行的虚拟终端(容器)
	docker run -itd --privileged=true -name centos1 centos7.1   /usr/sbin/init

在这里插入图片描述

3、进入容器
	docker exec -it  centos1 /bin/bash	

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

  • 0
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值