赞
踩
Docker是基于Go语言实现的云开源项目,诞生于2013年初,最初发起者是dotClouw公司。Docker 自开源后受到广泛的关注和讨论,目前已有多个相关项目,逐断形成了围Docker的生态体系。dotCloud 公司后来也改名为Docker Ine。Docker是一个开源的容器引擎,它有助于更快地交付应用。 Docker可将应用程序和基础设施层隔离,并且能将基础设施当作程序一样进行管理。使用 Docker可更快地打包、测试以及部署应用程序,并可以缩短从编写到部署运行代码的周期。
镜像:简单理解为就是一个安装包,里面包含容器所需要运行的的基础文件和配置信息,比如:redis镜像、mysql镜像等。
镜像的来源方式:
容器: 容器就是镜像运行的实例,容器状态分为:初创建、运行、停止、暂停、删除, 一个镜像可以创建多个不同的容器。
每个启动的容器都有自己独立ip信息—轻量级的linux服务器 虚拟化,比如:镜像就是类 容器就是实例对象。
Docker 启动过程
Docker 要求 CentOS 系统的内核版本在 3.10以上 ,查看本页面的前提条件来验证你的CentOS 版本是否支持 Docker 。
文章末尾为docker离线安装流程。
查看当前的内核版本
uname -r
更新yml
yum -y update
如果有旧版docker,可以选择卸载
yum remove docker docker-common docker-selinux docker-engine
安装软件包
yum install -y yum-utils device-mapper-persistent-data lvm2
设置yum源
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
查看仓库中所有docker版本
yum list docker-ce --showduplicates | sort -r
sudo yum install -y docker-ce
开机启动
systemctl start docker
systemctl enable docker
查看版本
docker version
如需重启docker
systemctl restart docker
搜索镜像
docker search java
下载镜像,使用:选择版本
docker pull java:8
查看所有镜像
docker images
删除镜像,d23bdf5b1b1b为IMAGE ID
docker rmi d23bdf5b1b1b
导出镜像
docker save -o nginx.tar nginx:latest
或者
docker save > nginx.tar nginx:latest
导出多个镜像
docker save -o test-allimage.tar java nginx
加载镜像
docker load -i nginx.tar
或者
docker load < nginx.tar
导入容器为镜像和export 对应
cat ./test.tar | sudo docker import - dockertest:1.0
配置阿里镜像加速
https://cr.console.aliyun.com/cn-hangzhou/mirrors
启动容器
docker run -d -p 80:80 nginx
-d 后台运行
-p 宿主机端口:容器端口
查看所有容器
docker ps -a
查看所有运行的容器
docker ps
容器自启
docker run -itd --name xxx --restart=always xxx
添加指令
docker update --restart=always xxx
查看正在运行容器的信息
docker inspect xxx
docker commit 容器制作为镜像文件
docker commit -m=“提交的描述信息” -a=“作者” 容器ID 要创建的目标镜像名:[标签名]
docker commit -m="my-image" -a="my" 3a07b4c779b8 my-tomcat:1.0
Docker数据卷
数据卷就是宿主机上的一个文件或目录当容器目录和数据卷(宿主机)目录绑定,双方修改会立即同步操作一个数据卷可以被多个容器同时挂载。
docker run -it -v 宿主机绝对路径目录:容器内目录 镜像文件名称
导出容器 export
docker export -o test.tar nginx-test
限制容器大小 --memory 8g
docker run --rm -it --memory 8g -p 2881:2881 oceanbase/oceanbase-xe
将springboot打包成jar
mvn package
将jar包上传至 /usr/local/dockerapp目录下
scp F:\javaProject\testboot\target\testboot.jar root@192.168.2.122: /usr/local/dockerapp
在 /usr/local/dockerapp目录下创建文件Dockerfile
###指定java8环境镜像
FROM java:8
###复制文件到容器app-springboot
ADD testboot.jar /app-springboot.jar
###声明启动端口号
EXPOSE 8080
###配置容器启动后执行的命令
ENTRYPOINT ["java","-jar","/app-springboot.jar"]
构建镜像
docker build -t testboot .
格式: docker build -t 镜像名称:标签 Dockerfile的相对位置
运行
docker run -p 8080:8080 testboot
先删除容器,在删除镜像
查询容器
docker ps –a
使用容器id删除容器
docker rm 18e672ecd8ed
查询镜像
docker images
使用镜像id删除镜像
docker rmi d23bdf5b1b1b
进入到容器
默认情况下软件安装的目录的/ect目录下
docker container exec -it f0b1c8ab3633 /bin/bash
下载Nginx镜像文件
docker pull nginx
docker images
创建挂载目录
mkdir -p /data/nginx/{conf,conf.d,html,logs}
编写Nginx conf配置文件
upstream backserver {
server 127.0.0.1:8080;
server 127.0.0.1:8081;
}
server {
listen 80;
server_name 192.168.2.104;
location / {
proxy_pass http://backserver;
index index.html index.htm;
}
}
启动容器
docker run
--name mynginx -d -p 80:80
-v /data/nginx/conf/nginx.conf:/etc/nginx/nginx.conf
-v /data/nginx/logs:/var/log/nginx
-d docker.io/nginx
查看容器
docker ps
查询mysql版本
docker search mysql
下载MySQL5.7版本
docker pull mysql:5.7
如果服务器没有网络情况下,可载入mysql镜像
docker load -i mysql_5.7.12-image.tar.gz
等待下载完成、创建MySQL容器
docker create --name mysql3306 -e MYSQL_ROOT_PASSWORD=root -p 3306:3306 mysql:5.7
创建容器名称为mysql3306,密码为root
启动容器
docker start mysql3306
进入到容器
docker exec -it 1e33b26152e1 /bin/sh
mysql连接
mysql -u root –p
开启远程连接
GRANT ALL PRIVILEGES ON *.* TO root@"%" IDENTIFIED BY "root";
https://download.docker.com/linux/static/stable/x86_64/
或:
https://download.csdn.net/download/qq_43692950/13689046
tar -zxvf docker-19.03.8.tar.gz
cp docker/* /usr/bin/
nano /etc/systemd/system/docker.service
[Unit] Description=Docker Application Container Engine Documentation=https://docs.docker.com After=network-online.target firewalld.service Wants=network-online.target [Service] Type=notify # the default is not to use systemd for cgroups because the delegate issues still # exists and systemd currently does not support the cgroup feature set required # for containers run by docker ExecStart=/usr/bin/dockerd ExecReload=/bin/kill -s HUP $MAINPID # Having non-zero Limit*s causes performance problems due to accounting overhead # in the kernel. We recommend using cgroups to do container-local accounting. LimitNOFILE=infinity LimitNPROC=infinity LimitCORE=infinity # Uncomment TasksMax if your systemd version supports it. # Only systemd 226 and above support this version. #TasksMax=infinity TimeoutStartSec=0 # set delegate yes so that systemd does not reset the cgroups of docker containers Delegate=yes # kill only the docker process, not all processes in the cgroup KillMode=process # restart the docker process if it exits prematurely Restart=on-failure StartLimitBurst=3 StartLimitInterval=60s [Install] WantedBy=multi-user.target
chmod +x /etc/systemd/system/docker.service
systemctl daemon-reload
systemctl start docker
systemctl enable docker.service
systemctl status docker
docker -v
mkdir -p /etc/docker
nano /etc/docker/daemon.json
填入下面内容:
{
"registry-mirrors": ["https://你的id.mirror.aliyuncs.com"]
}
重载配置
sudo systemctl daemon-reload
重启docker
sudo systemctl restart docker
nano /etc/selinux/config
查看 docker
镜像的存储位置,默认情况下是 /var/lib/docker
:
docker info|grep "Docker Root Dir"
停止所有的docker
容器
docker ps | awk '{print $1}' |xargs docker stop
停止docker
服务
systemctl stop docker
创建新的存储目录
mkdir -p /data/docker/
将原来的数据复制过来
cp -r /var/lib/docker/* /data/docker/
修改 daemon.json
文件
vi /etc/docker/daemon.json
增加 data-root
配置:
{
"data-root": "/data/docker",
"registry-mirrors": ["https://XXXX.mirror.aliyuncs.com"]
}
启动docker
服务
systemctl daemon-reload
systemctl start docker
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。