首页 > 其他 > 详细

docker

时间:2020-10-10 15:19:07      阅读:77      评论:0      收藏:0      [点我收藏+]

安装,删除

# 卸载旧版本
sudo apt-get remove docker docker-engine docker-ce docker.io

# 安装必要的工具
sudo apt-get update
sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common

# 安装GPG证书
curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -

# 写入软件源信息
sudo add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"

# 更新并安装Docker-CE
sudo apt-get -y update
sudo apt-get -y install docker-ce

# 安装指定版本
sudo apt-get install -y docker-ce=版本号

# 查看docker版本号
docker version

# 将用户加入用户组,避免每次命令都输入sudo 
sudo usermod -aG docker $USER

# 启动docker 
systemctl [参数] docker
# 参数:
	start	开启服务
	stop	关闭
	resart	重启
	status	状态

# 配置aliyun镜像
vim /etc/docker/daemon.json
{
 "registry-mirrors":["https://6kx4zyno.mirror.aliyuncs.com"]
}
systemctl daemon-reload 
systemctl restart docker

# 删除docker 
sudo apt-get purge docker-ce -y
sudo rm -rf /etc/docker
sudo rm -rf /var/lib/docker

镜像

搜索镜像

搜索Docker Hub上的镜像

docker search [镜像名称]	# docker search ubuntu

获取镜像

docker pull [镜像名称]	# docker pull ubuntu

# 获取的镜像在/var/lib/docker/

查看本地镜像

docker images

删除镜像

docker rmi [命令参数][镜像ID]
# 命令参数
	-f, --force		强制删除

docker的导入导出

镜像的导出:将本地的一个或多个镜像打包城本地tar文件

docker save [命令参数][导出镜像名称][本地镜像]
# 命令参数
	-o, --output string		指定写入的文件名和路径
# docker save -o ~/ubuntu.tar ubuntu

镜像的导入:将save打包的镜像导入本地镜像库

docker load < [被导入的镜像压缩文件的名称]
# docker load < ubuntu.tar

镜像重命名

docker tag [老镜像名称]:[老镜像版本][新镜像名称]:[新镜像版本]
# docker tag 4bb46517cac3 nginx:5.8

查看镜像信息

查看本地一个镜像的历史(历史分层)信息

docker history [镜像名称]:[镜像版本]

查看镜像详细信息

docker inspect [镜像ID]

容器

容器时一种轻量级,可移植,并将应用程序进行打包的技术,使应用程序可以在几乎任何地方相同的方式运行

docker将镜像文件运行起来后,产生的对象就是容器

容器具有一定的生命周期

容器中可以安装何种应用

容器创建后,存储在 /var/lib/docker/containers

查看容器

docker ps
docker ps -a # 查看所有运行过的容器,包括已经不运行的容器

启动容器

docker run [命令参数] [镜像名称]
命令参数:
    -d 后台守护进程方式启动 
    -p 宿主机端口:容器端口
    --name 容器名称
# docker run -d -p 8080:8000 tomcat

查看容器启动日志

docker logs -f [容器id]

进入容器

docker exec -it [容器id] bash

容器暂停

docker pause [容器名称或id]

容器恢复

docker unpause [容器名称或id]

容器重启

docker restart [命令参数] [容器名称或id]

# 命令参数
-t 		重启前等待的时间,单位秒(默认10s)

# docker restart -t 20 pande-ubuntu

关闭容器

docker stop [容器名称或id]

# 关闭所有容器
docker stop `docker ps -qa`

终止容器

docker kill [容器名称或id]

删除容器

docker rm [命令参数] [容器名称或id]

# 命令参数
-f 强制删除

# 删除所有容器
docker rm -f `docker ps -a -q`

创建并进入容器

docker run --name [容器名称] -it [依赖镜像] /bin/bash

# docker run -it --name nginx_1 nginx /bin/bash

退出容器

exit

生产方式进入容器<常用>

使用脚本进入,脚本内容:

#!/bin/bash

# 定义进入仓库函数
docker_in() {
	NAME_ID=$1
	PID=$(docker inspect --format {{.State.Pid}} $NAME_ID)
	nsenter --target $PID --mount --uts --ipc --net --pid
}
docker_in $1

# ./docker_in.sh 4cf694392172

基于容器创建镜像

# 方式1 直接把容器创建为镜像
docker commit -m ‘改动信息‘ -a ‘作者信息‘ [容器id] [new_image:tag]

# docker commit -m ‘mkdir ttt‘ -a ‘hy‘ 6bb7b2e7f6b0 ubuntu_test11:v1.0

# 方式2 先导出,再导入
# 导出为压缩文件
docker export [容器id] > 模板文件.tar
# 导入为镜像
cat 文件名.tar | docker import - 镜像名称

# 示例
docker export 6bb7b2e7f6b0 > ubuntu_test.tar
cat ubuntu_test.tar | docker import - ubuntu22
docker images

查看容器详细信息

docker inspect [容器id]

查看容器端口信息

docker port [容器id]

容器重命名

docker rename [容器名称或id] [容器新名称]

数据卷

数据卷:容器内数据映射到主机环境

创建数据卷

docker vlolume create [数据卷名称]

查看数据卷的详细信息

docker volume inspect [数据卷名称]

查看全部数据卷

docker volume ls

删除数据卷

docker volume rm [数据卷名称]

启动容器时加上数据卷映射(常用)

docker run -itd --name [容器名称] -v [宿主文件目录]/:[容器内文件目录]/ [依赖镜像]

# 自动创建tomcat_volume数据卷
# docker run -d -p 8080:8080 --name tomcat -v /opt/tomcat_volume:/usr/local/tomcat/webapp/ 8d779f6b1f78

Dockerfile自定义镜像

通过Dockerfile手动创建一个镜像

  1. 编写Dockerfile:创建一个自定义镜像,并将项目放到镜像中
from: 指定当前自定义镜像依赖的镜像
copy: 将相对路径下的内容复制到自定义镜像中
workdir: 声明镜像的默认工作目录
run: 执行的命令,可以编写多个
cmd: 需要执行的命令(在workdir下执行的,cmd可以写多个,只以最后一个为准)

# 例子: 制作tomcat镜像,且将项目ssm.war放到tomcat镜像中
from daocloud.io/library/tomcat:8.5.15-jre8	# 依赖的镜像
copy ssm.war /usr/local/tomcat/webapps/	# 将ssm.war放到tomcat的/usr/local/tomcat/webapps/目录下
  1. 执行Dockerfile,生成镜像
docker build -t [镜像名称][:tag] .
# docker build -t [ssm-tomcat]:1.0.0 .
  1. 可以将打包好的镜像提供给别人使用

docker-compose

docker-compose常用命令

# 关闭并删除容器
docker-compose down
# 开启|关闭|重启docker-compose维护的容器
docker-compose start|stop|restart
# 查看docker-compose管理的容器
docker-compose ps
# 查看日志
docker-compose logs -f

docker-compose的使用

同时管理mysql容器和tomcat容器

  1. docker-compose.yml文件的编写
# mysql的docker-compose.yml
version: ‘3.1‘
services: 
	mysql:	# 服务的名称
		restart: always	# 代表只要docker启动,那么这个容器就跟着启动
		images: daocloud.io/library/mysql:8.0.1	# 指定依赖的镜像
		container_name: mysql	# 指定容器名称
		ports:	# 指定端口号的映射
			- 3306:3306	
		environment:	
			MYSQL_ROOT_PASSWORD: root	# 指定mysql的root用户密码
			TZ: Asia/Shanghai	# 指定时区
		volumes:
			-	/opt/docker_mysql_tomcat/mysql_data:/var/lib/mysql	# 映射数据卷
	tomcat:
		restart: always
		images: daocloud.io/library/tomcat:8.5.15-jre8
		container_name: tomcat
		ports:
			- 8080:8080
		environment:	
			TZ: Asia/Shanghai
		volumes:
			- /opt/docker_mysql_tomcat/tomcat_webapps:/usr/local/tomcat/webapps
			- /opt/docker_mysql_tomcat/tomcat_logs:/usr/local/tomcat/logs
  1. 使用docker-compose启动mysql和tomcat
docker-compose up -d	# 后台启动

docker CI/CD

docker-compose搭建gitlab平台

  1. /opt/ 目录下创建docker_gitlab文件夹,在docker_gitlab文件夹下创建docker_compose.yml文件
  2. docker_compose.yml文件里内容为
gitlab:
  image: ‘twang2218/gitlab-ce-zh:11.1.4‘
  restart: always
  container_name: ‘gitlab‘
  privileged: true
  hostname: ‘gitlab‘
  environment:
    GITLAB_OMNIBUS_CONFIG: |
      external_url ‘http://192.168.0.102‘ # http协议所使用的访问地址,不加端口默认80
      gitlab_rails[‘gitlab_shell_ssh_port‘] = 2224 # 此端口是run时22端口映射的2224端口
  ports:
    - ‘80:80‘
    - ‘443:443‘
    - ‘2224:22‘
  volumes:
    - ‘/opt/docker_gitlab/config:/etc/gitlab‘
    - ‘/opt/docker_gitlab/logs:/var/log/gitlab‘
    - ‘/opt/docker_gitlab/data:/var/opt/gitlab‘
  1. 启动容器
docker-compose up -d
  1. 查看日志,等待启动完成
docker-compose logs -f
  1. 登录,更新密码,默认用户名为root

docker-compose安装jenkins

安装

  1. /opt/ 目录下创建docker_jenkins文件夹,在docker_jenkins文件夹下创建docker_compose.yml文件
  2. docker_compose.yml文件里内容为
version: "3.1"
services:
  jenkins:
    image: jenkins/jenkins
    restart: always
    container_name: jenkins
    ports:
      - 8888:8080
      - 50000:50000 
    volumes:
      - ./data:/var/jenkins_home
  1. 启动容器
docker-compose up -d
  1. 查看日志,等待启动完成
docker-compose logs -f
  1. 查看日志,data文件夹没权限,把data文件夹权限修改为777
  2. 指定插件安装,加上
git param...
publish ssh

指定目标服务器

技术分享图片

技术分享图片

jenkins免密码登录gitlab

  1. 登录jenkins容器内部,生成ssh密钥
ssh-keygen -t rsa -C "1578259864@qq.com"
  1. 将密钥复制到gitlab的ssh中

jenkins配置jdk和maven

  1. 将jdk和maven放到opt/docker_jenkins/data目录下,解压
  2. jenkins配置

技术分享图片

docker

原文:https://www.cnblogs.com/huyuan1004/p/13792293.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!