Docker入门指南
2352 words
5 minutes
views
docker介绍
下载docker依赖环境
1
2
|
想安装Docker,需要先将依赖的环境全部下载下来,就像Maven依赖JDK一样
yum -y install yum-utils device-mapper-persistent-data lvm2
|
指定docker镜像源头
1
2
|
默认下载Docker会去国外服务器下载,速度较慢,可以设置为阿里云镜像源,速度更快
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
|
安装docker
1
2
3
4
5
6
7
8
9
10
11
|
yum makecache fast
yum -y install docker-ce
#配置阿里云镜像加速器
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://46dcjg1g.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
|
启动docker
1
2
3
4
5
6
7
|
安装成功后,需要手动启动,设置为开机启动,并测试一下 Docker
#启动docker服务
systemctl start docker
#设置开机自动启动
systemctl enable docker
#测试
docker run hello-world
|
docker中央仓库
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
1.Docker官方的中央仓库:这个仓库是镜像最全的,但是下载速度较慢。
https://hub.docker.com/
2.国内的镜像网站:网易蜂巢,daoCloud等,下载速度快,但是镜像相对不全。
https://c.163yun.com/hub#/home
http://hub.daocloud.io/ (推荐使用)
3.在公司内部会采用私服的方式拉取镜像(添加配置)
#需要创建 /etc/docker/daemon.json,并添加如下内容
{
"registry-mirrors":["https://registry.docker-cn.com"],
"insecure-registries":["ip:port"]
}
#重启两个服务
systemctl daemon-reload
systemctl restart docker
|
docker镜像操作
拉取镜像
1
2
3
|
从中央仓库拉取镜像到本地
docker pull 镜像名称[:tag]
#举个栗子:docker pull daocloud.io/library/tomcat:8.5.15-jre8
|
查看本地全部镜像
1
2
|
查看本地已经安装过的镜像信息,包含标识,名称,版本,更新时间,大小
docker images
|
删除本地镜像
1
2
|
镜像会占用磁盘空间,可以直接手动删除,标识通过查看获取
docker rmi 镜像的标识
|
镜像的拉入拉出
1
2
3
4
5
6
7
|
如果因为网络原因可以通过硬盘的方式传输镜像,虽然不规范,但是有效,但是这种方式导出的镜像名称和版本都是null,需要手动修改
#将本地的镜像导出
docker save -o 导出的路径 镜像id
#加载本地的镜像文件
docker load -i 镜像文件
#修改镜像文件
docker tag 镜像id 新镜像名称:版本
|
容器的操作
运行容器
1
2
3
4
5
6
7
8
|
运行容器需要定制具体镜像,如果镜像不存在,会直接下载
#简单操作
docker run 镜像的标识|镜像的名称[:tag]
#常用的参数
docker run -d -p 宿主机端口:容器端口 --name 容器名称 镜像的标识|镜像名称[:tag]
#-d:代表后台运行容器
#-p 宿主机端口:容器端口:为了映射当前Linux的端口和容器的端口
#--name 容器名称:指定容器的名称
|
查看正在运行的容器
1
2
3
4
|
查看全部正在运行的容器信息
docker ps [-qa]
#-a 查看全部的容器,包括没有运行
#-q 只查看容器的标识
|
查看容器日志
1
2
3
|
查看容器日志,以查看容器运行的信息
docker logs -f 容器id
#-f:可以滚动查看日志的最后几行
|
进入/退出容器内部
1
2
3
4
5
6
7
8
|
#进入容器内部
docker exec -t 容器id /bin/bash
#启动镜像并进入容器
docker run -it centos /bin/bash
#从容器停止并退出到宿主机
exit
#容器不停止并退出
Ctrl+P+Q
|
复制内容到容器
1
|
docker cp 宿主机路径 容器id:容器路径
|
重启&启动&停止&删除容器
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
容器的启动,停止,删除等操作,后续会经常使用到
#重新启动容器
docker restart 容器id
#启动停止运行的容器
docker start 容器id
#停止指定的容器(删除容器前,需要先停止容器)
docker stop 容器id
#停止全部容器
docker stop $(docker ps -qa)
#删除指定容器
docker rm 容器id
#删除全部容器
docker rm $(docker ps -qa)
|
docker应用
docker安装tomcat
1
2
3
4
5
6
7
|
运行Tomcat容器,为部署ssm工程做准备
docker search tomcat
docker run -d -p 8080:8080 --name tomcat \
-v $PWD:/usr/local/tomcat/webapps \
daocloud.io/library/tomcat:8.5.15-jre8
#或者已经下载了tomcat镜像
docker run -d -p 8080:8080 --name tomcat 镜像的标识
|
运行MySQL容器
1
2
3
4
5
6
7
8
9
10
|
docker search mysql
docker pull mysql:5.7.4
mkdir ~/mysql
cd ~/mysql
docker run -id -p 3307:3306 --name mysql \
-v $PWD/conf:/etc/mysql/conf.d \
-v $PWD/logs:/logs \
-v $PWD/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=root \
daocloud.io/library/mysql:5.7.4
|
部署ssm工程
1
2
3
4
5
6
7
8
|
修改SSM工程环境,设置为Linux中Docker容器的信息
通过Maven的package重新打成war包
将Windows下的war包复制到Linux中
通过docker命令将宿主机的war包复制到容器内部
docker cp 文件名称 容器id:容器内部路径
测试访问SSM工程
|
nginx
1
2
3
4
5
6
7
8
9
10
11
12
13
|
docker search nginx
docker pull nginx
mkdir ~/nginx
cd ~/nginx
mkdir conf
cd conf
vim nginx.conf
docker run -id --name=nginx \
-p 80:80 \
-v $PWD/conf/nginx.conf:/etc/nginx/nginx.conf
-v $PWD/logs:/var/log/nginx \
-v $PWD/html:/usr/share/nginx/html \
nginx
|
docker常用命令
镜像命令
1
2
3
4
5
6
7
8
9
10
11
|
docker version #显示docker的版本信息
docker info #显示docker的系统信息,包括镜像和容器的数量
docker 命令 --help #帮助命令
docker images #查看所有镜像
-a,--all #列出所有镜像
-q,--quiet #只显示id
docker search XXX #搜索docker镜像
--filter=STARS=3000 #通过搜藏来过滤
docker pull XXX[:版本号] #下载镜像(分层下载:docker的核心)
docker rmi -f 镜像id #删除指定镜像
docker rmi -f ${docker images -aq} #删除全部镜像
|
容器命令
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
#启动镜像新建容器并启动
docker pull centos
docker run centos #启动镜像新建容器
--name="XXX" #用来区分容器
-d #后台运行
-it #使用交互容器运行
-p #指定容器的端口
-p 主机端口:容器端口(常用)
-p ip:主机端口:容器端口
-p 容器端口
容器端口
-P #随机指定端口
docker run -it centos /bin/bash #启动镜像并进入容器
exit #从容器停止并退出到宿主机
Ctrl+P+Q #容器不停止并退出
docker ps
-a #列出当前正在运行的容器+历史运行过的容器
-n=? #显示最近创建的容器
-q #只显示容器的编号
docker rm 容器id
docker rm -f 容器id(不需要退出直接删除)
docker rm -f ${docker ps -aq} #删除所有容器
#启动和停止容器
docker start 容器id #启动容器
docker restart 容器id #重启容器
docker stop 容器id #停止当前正在运行的容器
docker kill 容器id #强制停止当前容器
|
常用其他命令
1
2
3
4
5
6
7
8
9
10
11
12
13
|
# 容器要想后台运行必须要有相应的前台应用,因为docker容器仅在它的1号进程运行时会保持运行,如果1号进程推出了,容器也就退出了。
#日志
docker logs -f -t --tail 10 容器id
#查看容器中进程信息
docker top 容器id
#查看容器元数据信息
docker inspect 容器id
#进入当前正在运行的后台容器
docker exec -it 容器id /bin/bash(进入容器后开启一个新的终端,可以在里面交互)
docker attach 容器id(进入的是容器正在运行的命令行,不能交互)
# 从容器拷贝文件到宿主机
docker cp 容器id:容器内路径 目的宿主机路径
#拷贝是一个手动拷贝的过程,通过数据卷可以自动同步(类似于共享文件夹)
|
