docker 镜像操作
- 拉取镜像
docker pull 镜像地址名称
- 查看本地镜像
docker images
- 删除本地镜像
docker rmi 镜像id
- 镜像导出
dokcer save -o /home/user/docker/filename imageid
- 镜像导入
docker load -i filename
- 修改标识
docker tag 镜像id name:tag #冒号前是名称,冒号后是tag
容器的操作
- 运行容器
docker run 镜像id[镜像名称:tag] #无法被外部访问
docker run -d -p 宿主机端口:容器端口 --name 容器名称 镜像id[镜像名称|TAG]
#-d表示后台运行容器
#-p端口映射
- 查看正在运行的容器
docker ps [-qa]
#-q表示只查看容器的标识(image id)
#-a表示查看全部的容器,包括没有运行的容器。
- 查看容器的日志
docker logs -f 容器id
#-f表示可以滚动查看容器的最后几行
- 进入容器内部
docker exec -it 容器id bash
- 停止容器
docker stop 容器id
- 删除容器
docker rm 容器id
#或者删除全部
docker rm ${docker ps -qa}
- 宿主机文件复制到容器内部
docker cp 文件名称 容器id:容器内部路径
数据卷
- 创建数据卷
docker volume create 数据卷名称
- 查看数据卷信息
docker volume inspect 数据卷名称
- 查看全部数据卷
docker volume ls
- 删除数据卷
docker volume rm 数据卷名称
#+ENG_SRC
- 使用数据卷
```bash
docker run -v 路径:容器内部的路径 镜像id
自定义镜像
创建Dockerfile文件
# 自定义一个tomcat镜像,并将一个ssm war包放入
from daocloud.io/library/tomcat:8.5.15-jre8 #指定自定义镜像依赖的环境
copy ssh.war /usr/local/tomcat/webapps #将相对路径下的内容复制到自定义镜像中
workdir #生命镜像的默认工作目录
cmd # 需要执行的命令(可以指定多个,但以最后一个为准)
制作镜像
docker build -t 镜像名称[:tag]
Docker-Compose
Docker-Compose批量管理容器,需要单独安装
编写docker-compose.yml文件
version: '3.1'
services:
mysql: #服务名称
restart: always #只要docker启动,那么这个容器就跟着启动
image: daocloud.io/library/mysql:5.7.4 #指定镜像的路径
container_name: mysql #指定容器名称
ports:
- 3306:3306 #指定端口号的映射
environment:
MYSQL_ROOT_PASSWORD: 123456 #root用户的登录密码
TZ: Asia/Shanghai #指定时区
volumes:
- /opt/docker_msyql/data:/var/lib/mysql #数据卷的映射
tomcat:
restart: always
image: daocloud.io/library/tomcat:8.5.15-jre8
container_name: tomcat
ports:
- 8080:8080
environment:
TZ: Asia/Shanghai
volumes:
- /opt/docker_tomcat/tomcat_webapps:/user/local/tomcat/webapps
- /opt/docker_tomcat/tomcat_logs:/usr/local/tomcat/logs
使用docker-compose同时启动tomcat和mysql容器(在docker-compose.yml路径启动)
docker-compose up -d
其他命令
- 关闭并删除容器
docker-compose down
- 开启关闭或重启已经存在的docker-compose维护的容器
docker-compose start|stop|restart
- 查看docker-compose管理的容器
docker-compose ps
- 查看日志
docker-compose logs -f
- docker-compose配合Dockerfile使用
- 编写docker-compose.yml
version: '3.1'
services:
ssm:
restart: always
build:
context: ../ #指定Dockerfile所在路径
dockerfile: Dockerfile #指定Dockerfile文件名称
image: ssm:1.0.1
container_name: ssm
ports:
- 8081:8080
environment:
TZ: Asia/Shanghai
- 在docker-compose.yml的上级目录编写Dockerfile文件
from daocloud.io/library/tomcat:8.5.15-jre8
copy ssm.war /usr/local/tomcat/webapps
- 重新构建自定义镜像
docker-compose build
docker-compose up -d --build
Docker CI、CD
CI(continuous intergration) 继续集成
搭建gitlab服务器
- 通过docker-compose.yml去安装gitlab
version: '3.1'
services:
gitlab:
image: 'twang2218/gitlab-ce-zh:11.1.4'
container_name: 'gitlab'
restart: always
hostname: 'gitlab'
environment:
TZ: 'Asia/Shanghai'
GITLAB_OMNIBUS_CONFIG: |
external_url 'http://ip'
gitlab_rails['time_zone'] = 'Asia/Shanghai'
gitlab_rails['smtp_enable'] = true
gitlab_rails['gitlab_shell_ssh_port'] = 22
ports:
- 80:80
- 443:443
- 22:22
volumes:
- /opt/docker_gitlab/config:/etc/gitlab
- /opt/docker_gitlabe/data:/var/opt/gitlab
- /opt/docker_gitlab/logs:/var/log/gitlab