一、概述
1、架构
Docker容器基于镜像运行,容器共享宿主机的内核,不会加载额外内核,通过Namespaces(环境隔离)和Cgroups(资源控制)实现隔离,Cgroups会限容器使用资源并控制优先级和统计数据。隔离后的容器仅包含应用所需的用户态依赖
2、安装
安装先卸载再安装,使用的
yum remove ...
、yum install ...
。可以去阿里云的容器镜像服务配置docker的加速器,修改/etc/docker/daemon.json文件
二、命令
1、系统命令
systemctl start docker
:启动dockersystemctl stop docker
:停止dockersystemctl restart docker
:重启dockersystemctl enable docker
:设置开机自启systemctl status docker
:查看docker状态
2、docker常用命令
docker pull 镜像名:标签
:拉取指定版本的镜像,不指定标签的话,一般为默认拉取的是latest标签即最新或被维护的镜像docker images
:查看所有镜像docker rmi [-f] 镜像名
:删除指定镜像。-f表示强制删除,有运行中的容器也可以删除docker run ……
:创建并启动一个容器docker rm [-f] [-v] 容器名
:删除掉一个容器,-v同时强制删除关联匿名卷docker start 容器名
:启动一个指定的容器docker restart 容器名
:重启一个指定的容器docker stop 容器名
:停止一个指定的容器docker ps [-a] [--filter "status=exited"]
:查看所有运行的容器,-a参数表示查看所有容器。–format可以指定输出的格式,–filter可以进行过滤docker logs [-f] 容器名
:查看容器的日志。-f表示动态的查看docker exec -it 容器名 bash
:进入到容器的内部。-it表示可交互的终端。bash表示命令行的模式。容器内exit命令退出。某些精简镜像可能只有sh。bash是sh的增强版,支持更多功能docker save -o 保存后的名字.tar 镜像名:标签
:将镜像保存下来,可以实现镜像的传递docker load -i 保存后的名字
:将docker save
的镜像加载到本机的docker images
中docker -v
:查看版本docker inspect 容器名
:查看容器的详细信息
3、创建并运行容器案例
Mysql
docker run -d \--name mysql \-p 3306:3306 \-e TZ=Asia/Shanghai \-e MYSQL_ROOT_PASSWORD=123 \--network mynetmysql
docker run -d
:创建并运行一个容器,-d让容器在后台运行--name mysql
:给容器起一个名字,必须唯一-p 3306:3306
:端口映射,宿主机端口映射容器内的端口-e TZ=Asia/Shanghai
:环境变量,key=value,每个容器预设的键值对--network mynet
:使容器加入名字为mynet的这个网络中,指定后就不会加入默认的网络中mysql
:运行的镜像名字。完整写法:[repository]:[tag]
,如mysql:5.7
。没写的话,默认latest,最新版本
Jenkins
docker run --name jenkins -u root -d \-p 8080:8080 -p 50000:50000 \-v /var/jenkins_home:/var/jenkins_home \-v /var/run/docker.sock:/