1. 安装Docker
- yum 包更新到最新
sudo yum update
- 安装需要的软件包
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
- 设置 yum 源为阿里云
sudo yum-config-manager --add -repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
- 安装docker
sudo yum install docker-ce
- 安装后查看 docker 版本
docker -v
2. 设置ustc 的镜像
- 修改daemon.json 配置加速器
vi /etc/docker/daemon.json
{
"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]
}
2. 重新载入systemd
systemctl daemon-reload
3. Docker 启动与停止
- 启动 docker
systemctl start docker
- 停止docker
systemctl stop docker
- 重启docker
systemctl restart docker
- 查看docker状态
systemctl status docker
- 开机启动
systemctl enable docker
- 查看docker概要信息
docker info
4. Docker 常用命令
- 查看镜像
docker images
- 搜索镜像
docker search 镜像名称
- 拉取镜像
docker pull 镜像名称
- 导出镜像
docker save -o nginx.tar nginx(镜像名称)
- 删除镜像
docker rmi 镜像id
5. 容器相关命令
- 查看容器
docker ps
- 查看所有容器
docker ps -a
- 查看所有容器ID
docker ps -a -q
- 查看最后一次运行的容器
docker ps -l
- 创建与进入容器
docker run -it --name=容器名称 镜像名称:标签 /bin/bash
-
进入一个已经在运行的容器
docker exec -it 容器名称 (或者容器 ID) /bin/bash
-
docker容器开机自动启动(在宿主机重启后或者Docker服务重启后)
docker run -itd --name=mycentos --restart=always centos:7
注: --restart
=no-container: 不重启
=on-failure-container: 退出状态非0时重启
=always: 始终重启 -
删除容器
docker rm 容器名称(或容器ID)
- 导出容器
docker export 容器ID > nginx.tar
- 容器中安装vim
apt-get update
apt-get install vim -
退出当前容器
exit
6. 停止与启动容器
- 启动容器
docker start 容器名称(或者容器ID)
- 停止容器
docker stop 容器名称(或者容器ID)
- 启动所有容器
docker start $(docker ps -a -q)
- 停止所有容器
docker stop $(docker ps -a -q)
- 删除所有容器
docker rm $(docker ps -a -q)
7. 文件拷贝
- 将文件拷贝到容器内
docker cp 需要拷贝的文件或目录 容器名称:容器目录
-
将文件从容器内拷贝出来
docker cp 容器名称:容器目录 需要拷贝的文件或目录
8. 目录挂载
- 守护式方式通过 centos 镜像运行一个名称为mycentos的容器,并设置挂载目录(宿主机目录: 容器目录)
docker run -di -v /usr/local/myhtml:/usr/local/myhtml --name=mycentos centos:7
9. 获取容器 /镜像的元数据
docker inspect 容器名称(或者容器ID)
10. 获取容器IP地址
docker inspect --format='{{.NetworkSettings.IPAddress}}' 容器名称(或者容器ID)
11.部署MySql数据库
- 拉取mysql镜像
docker pull centos/mysql-57-centos7
-
创建容器并指定端口号为 3306
docker run -di --name=easybuy_mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 centos/mysql-57-centos7:latest
-e 表示添加环境变量 MYSQL_ROOT_PASSWORD 是root用户登录密码
12.部署Tomcat
- 拉取tomcat镜像
docker pull tomcat:7-jre7
-
创建容器并挂载到宿主机目录 /usr/local/webapps下
docker run -di --name=mytomcat -p 9089:8080 -v /usr/local/webapps:/usr/local/tomcat /webapps tomcat:7-jre7 -
测试tomca
(1). 上传cas.war压缩包到宿主机目录 /usr/local/webapps下,解压;
(2). windows浏览器上输入ip地址 192.168.187.128:9089/cas 就能访问cas单点登录页面;
13.部署Nginx
- 拉取nginx镜像
docker pull nginx
-
创建容器
docker run -di --name=mynginx -p 80:80 nginx:latest -
测试nginx
(1). 拷贝宿主机上的html资源到mynginx容器的/usr/share/nginx目录下
docker cp /usr/local/html mynginx:/usr/share/nginx
(2). windows浏览器上输入虚拟机的ip地址 192.168.187.128就能访问html页面
14.部署Redis
- 拉取redis镜像
docker pull redis
-
创建容器
docker run -di --name=myredis -p 6379:6379 redis:latest
15.迁移与备份(数据库)
- 容器保存为镜像
docker commit easybuy_mysql(容器名称) easybuy(镜像名称) -
镜像备份
docker save -o easybuy.tar(压缩包名) easybuy(镜像名称) -
数据库迁移
把easybuy.tar复制到另一台linux的 /home/mysql/下 -
镜像恢复
docker load -i /home/mysql/easybuy.tar
-i: 相当于input 导入的意思
-
创建mysql容器并设置开机自启动
docker run -di --name=easybuy360 -p 3306:3306 --restart=always -e MYSQL_ROOT_PASSWORD=123456 easybuy:latest
16. Dockerfile常用命令
命令 | 作用 |
FROM | 从哪个基础镜像构建镜像 |
MAINTAINER | 用户信息声明 |
ENV | 在构建镜像过程中设置环境变量 |
RUN | 容器构建时需要运行的命令 |
ADD | 将宿主机的文件复制到容器内,如果是一个压缩文件,将会 在复制后自动解压 |
COPY | 和 ADD 相似,但是如果有压缩文件并不能解压 |
WORKDIR | 设置工作目录 |
EXPOSE | 用来指定端口,使容器内的应用可以通过端口和外界交互 |
- 创建目录
mkdir –p /usr/local/dockerjdk8
下载 jdk-8u171-linux-x64.tar.gz 并上传到服务器中的 /usr/local/dockerjdk8 目录下
- 创建并编写Dockerfile文件
vi Dockerfile
- 编写以下内容:
FROM centos:7
MAINTAINER dengwq
WORKDIR /usr
RUN mkdir /usr/local/java
ADD jdk-8u171-linux-x64.tar.gz /usr/local/java
ENV JAVA_HOME /usr/local/java/jdk1.8.0_171
ENV JRE_HOME $JAVA_HOME/jre
ENV CLASSPATH $JAVA_HOME/lib:$JAVA_HOME/jre/lib:$CLASSPATH
ENV PATH $JAVA_HOME/bin: $PATH
- 执行命令构建镜像
docker build -t='jdk1.8' ./
- 查看镜像是否完成
docker images
17. 私有仓库搭建与配置
- 拉取私有仓库镜像
docker pull registry
- 启动私有仓库容器
docker run -di --name=registry -p 5000:5000 registry
- 打开浏览器输入地址 192.168.187.128:5000/v2/_catalog看到 {“repositories”:[]} 表示私有仓库搭建成功
- 修改 daemon.json (/etc/docker/daemon.json) 添加以下内容,保存退出
{
"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"],
"insecure‐registries":["192.168.187.128:5000"] //作用是让docker信任该私有仓库地址
} - 重启docker服务
systemctl restart docker
18. 镜像上传到私有仓库
- 标记此镜像为私有仓库镜像
docker tag jdk1.8 192.168.187.128:5000/jdk1.8
-
再次启动私服容器
docker start registry
- 上传标记的镜像
docker push 192.168.187.128:5000/jdk1.8
19. DockerMaven 插件自动发布
- 修改宿主机的docker配置,让其可以远程访问
vi /lib/systemd/system/docker.service
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
- 刷新配置,重启服务
systemctl daemon-reload
systemctl restart docker
docker start registry - 在pom文件中加入插件
<build> <finalName>app</finalName> <plugins> <!--spring-boot打包插件--> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> <!-- docker的maven插件--> <plugin> <groupId>com.spotify</groupId> <artifactId>docker-maven-plugin</artifactId> <version>0.4.13</version> <configuration> <imageName>192.168.66.133:5000/${project.artifactId}:${project.version} </imageName> <baseImage>java:8</baseImage> <entryPoint>["java", "-jar","/${project.build.finalName}.jar"]</entryPoint> <resources> <resource> <targetPath>/</targetPath> <directory>${project.build.directory}</directory> <include>${project.build.finalName}.jar</include> </resource> </resources> <dockerHost>http://192.168.66.133:2375</dockerHost> </configuration> </plugin> </plugins> </build>
- 以上配置会自动生成 Dockerfile
FROM java:8 ADD app.jar / ENTRYPOINT ["java","-jar","/app.jar"]
-
windows dos 命令 进入到项目目录下,输入以下命令,打包并上传镜像至私有仓库上
mvn clean package docker:build -DpushImage //clean package清除包, docker:build打包,-DpushImage传到私有仓库
mvn clean package -Pdev -Dmaven.test.skip=true docker:build -DpushImage //打包时跳过单元测试
20. 容器日志相关
- 查看docker容器日志
实时查看日志: docker logs -f service-sign
显示时间戳: docker logs -t service-sign
实时查看日志最后100行: docker logs -f --tail=100 service-sign
-
查看容器日志所在的位置
docker inspect --format='{{.LogPath}}' <容器id>/var/lib/docker/containers/52e5d4bb85c2f3fa1b0b359dac3d5cde458e81a33e8d4e72fb7e89c950f5a5c4/52e5d4bb85c2f3fa1b0b359dac3d5cde458e81a33e8d4e72fb7e89c950f5a5c4-json.log
-
清空容器日志
echo "" > 日志路径
echo "" > (docker inspect --format='{{.LogPath}}' <容器id>)
21. 修改容器系统时间与宿主机时间一致
- 查看宿主机时间是否正确
date
- 进入容器
docker exec -it <容器名称> (或者容器 id) /bin/bash
- 查看容器时间是否正确
date
- 修改容器时间
cd /etc
mv localtime localtime_bak
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
22. 安装指定版本的Docker-CE
- 查找Docker-CE的版本
yum list docker-ce.x86_64 --showduplicates | sort -r# Loading mirror speeds from cached hostfile # Loaded plugins: branch, fastestmirror, langpacks # docker-ce.x86_64 17.03.1.ce-1.el7.centos docker-ce-stable # docker-ce.x86_64 17.03.1.ce-1.el7.centos @docker-ce-stable # docker-ce.x86_64 17.03.0.ce-1.el7.centos docker-ce-stable # Available Packages
- 安装指定版本的Docker-CE: (VERSION 例如上面的 17.03.0.ce.1-1.el7.centos)
sudo yum -y install docker-ce-17.03.1.ce-1.el7.centos
- 注意:在某些版本之后,docker-ce安装出现了其他依赖包,如果安装失败的话请关注错误信息。例如 docker-ce 17.03 之后,需要先安装 docker-ce-selinux
yum list docker-ce-selinux- --showduplicates | sort -r
sudo yum -y install docker-ce-selinux-17.03.1.ce-1.el7.centos
转载请注明地址!