整理了一份 Docker系统知识,从安装到熟练操作看这篇就够了 | 原力计划
Posted CSDN云计算
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了整理了一份 Docker系统知识,从安装到熟练操作看这篇就够了 | 原力计划相关的知识,希望对你有一定的参考价值。
-
传统虚拟机技术是虚拟出一套硬件后,在其上运行一个完整操作系统,在该系统上再运行所需应用进程。 -
而容器内的应用进程直接运行于宿主的内核,容器内没有自己的内核,而且也没有进行硬件虚拟。因此容器要比传统虚拟机更为轻便。 -
每个容器之间互相隔离,每个容器有自己的文件系统 ,容器之间进程不会相互影响,能区分计算资源。
-
更快速的应用交付和部署; -
更便捷的升级和扩缩容; -
更简单的系统运维; -
更高效的计算资源利用。
[ironmanjay@localhost ~]$ uname -a
Linux localhost.localdomain 3.10.0-1062.12.1.el7.x86_64 #1 SMP Tue Feb 4 23:02:59 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
1、先备份
sudo mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
2、更换源
sudo wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
sudo yum update
sudo yum -y install gcc
sudo yum -y install gcc-c++
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
sudo yum makecache fast
sudo yum -y install docker-ce
systemctl start docker
sudo systemctl enable docker
sudo groupadd docker
sudo gpasswd -a [本地用户名] docker
sudo mkdir -p /etc/docker
sudo vim /etc/docker/daemon.json
{
"registry-mirrors": ["刚刚复制的加速器地址"]
}
sudo systemctl daemon-reload
sudo systemctl restart docker
docker version
docker pull hello-world
docker run hello-world
docker version #查看版本号
docker info #显示Docker系统信息,包括镜像和容器数
docker --help #查看Docker有哪些命令
docker images #查看当前Docker中的镜像
docker search 某个镜像名字 #查询某个镜像
docker pull 某个镜像名字 #拉取(下载)某个镜像
docker rmi 某个镜像名字ID #删除某个镜像
docker run [OPTIONS] image [COMMAND] [ARG...] #新建并启动容器
docker ps [OPTIONS] #列出当前所有正在运行的容器
exit #容器停止退出
ctrl+P+Q #容器不停止退出
docker start 容器ID或者容器名 #启动容器
docker restart 容器ID或者容器名 #重启容器
docker stop 容器ID或者容器名 #停止容器
docker kill 容器ID或者容器名 #强制停止容器
docker rm 容器ID #删除已停止的容器
docker rm -f $(docker ps -a -q) #一次性删除多个容器
docker ps -a -q | xargs docker rm #一次性删除多个容器
docker run -d 容器名 #启动守护式容器
docker logs -f -t --tail 容器ID #查看容器日志,-t是加入时间戳,-f是最新的日志打印,--tail数字显示最后多少条
docker top 容器ID #查看容器内运行的进程
docker inspect 容器ID #查看容器内部细节
docker exec -it 容器ID bashShell #进入正在运行的容器并以命令行交互
docker attach 容器ID #重新进入Docker容器
docker cp 容器ID:容器内路径 目的主机路径 #从容器内拷贝文件到主机上
docker run -it -v /宿主机绝对路径目录:/容器内目录 镜像名
docker inspect 容器ID
# 进入根目录
cd /
# 新建mydocker
sudo mkdir mydocker
sudo touch Dockerfile # 新建
sudo vim Dockerfile # 编辑
# volume test
FROM centos
VOLUME ["/dataVolumeContainer1","/dataVolumeContainer2"]
CMD echo "finished,--------success1"
CMD /bin/bash
docker build Dockerfile
-
编写Dockerfile文件 -
dockerbuild -
dockerrun
-
docker从基础镜像运行一个容器; -
执行一条指令并对容器作出修改; -
执行类似docker commit的操作提交一个新的镜像层; -
docker再基于刚提交的镜像运行一个新容器; -
执行dockerfile中的下一条指令直到所有指令都执行完成。
FROM #基础镜像,当前新镜像是基于哪个镜像的
MAINTAINER #镜像维护者的姓名和邮箱地址
RUN #容器构建时需要运行的命令
EXPOSE #当前容器对外暴露出的端口
WORKDIR #指定在创建容器后,终端默认登陆的进来工作目录
ENV #用来在构建镜像过程中设置环境变量
ADD #将宿主机目录下的文件拷贝进镜像且ADD命令会自动处理URL和解压tar压缩包
COPY #类似ADD,拷贝文件和目录到镜像中。将从构建上下文目录中 <源路径> 的文件/目录复制到新的一层的镜像内的 <目标路径> 位置
VOLUME #容器数据卷,用于数据保存和持久化工作
CMD #指定一个容器启动时要运行的命令,Dockerfile 中可以有多个 CMD 指令,但只有最后一个生效,CMD 会被 docker run 之后的参数替换
ENTRYPOINT #指定一个容器启动时要运行的命令,ENTRYPOINT 的目的和 CMD 一样,都是在指定容器启动程序及参数
ONBUILD #当构建一个被继承的Dockerfile时运行命令,父镜像在被子继承后父镜像的onbuild被触发
#进入根目录
cd /
#新建mydocker文件夹
sudo mkdir mydocker
vim DockerFile
FROM centos
MAINTAINER IronmanJay<IronmanJay@qq.com>
ENV MYPATH /usr/localWORKDIR $MYPATH
RUN yum -y install vimRUN yum -y install net-tools
EXPOSE 80
CMD echo $MYPATHCMD echo "success--------------ok"CMD /bin/bash
docker build -t 新镜像名字:TAG .
docker run -it 新镜像名字:TAG
docker history 镜像名
-
搜索镜像 -
拉取镜像 -
查看镜像 -
启动镜像 -
停止容器 -
移除容器
docker search tomcat
docker pull tomcat
docker images
docker run -it -p 8080:8080 tomcat
-p #主机端口:docker容器端口
-P #随机分配端口
i #交互
t #终端
docker search mysql
docker pull mysql
docker run -p 12345:3306 --name mysql -v /IronmanJay/mysql/conf:/etc/mysql/conf.d -v /IronmanJay/mysql/logs:/logs -v /IronmanJay/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql
-p 12345:3306: #将主机的12345端口映射到docker容器的3306端口
--name mysql: #运行服务名字
/IronmanJay/mysql/conf:/etc/mysql/conf.d : #将主机/IronmanJay/mysql录下的conf/my.cnf 挂载到容器的 /etc/mysql/conf.d-v
/IronmanJay/mysql/logs:/logs: #将主机/IronmanJay/mysql目录下的 logs 目录挂载到容器的 /logs
-v /IronmanJay/mysql/data:/var/lib/mysql : #将主机/IronmanJay/mysql目录下的data目录挂载到容器的 /var/lib/mysql -e
MYSQL_ROOT_PASSWORD=123456: #初始化 root 用户的密码。-d mysql: 后台程序运行mysql
docker pull redis
docker run -p 6379:6379 -v /IronmanJay/myredis/data:/data -v /IronmanJay/myredis/conf/redis.conf:/usr/local/etc/redis/redis.conf -d redis:3.2 redis-server /usr/local/etc/redis/redis.conf --appendonly yes
docker exec -it 运行着Redis服务的容器ID redis-cli
以上是关于整理了一份 Docker系统知识,从安装到熟练操作看这篇就够了 | 原力计划的主要内容,如果未能解决你的问题,请参考以下文章