一、安装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