# 卸载旧版本
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 强制删除
镜像的导出:将本地的一个或多个镜像打包城本地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手动创建一个镜像
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/目录下
docker build -t [镜像名称][:tag] .
# docker build -t [ssm-tomcat]:1.0.0 .
# 关闭并删除容器
docker-compose down
# 开启|关闭|重启docker-compose维护的容器
docker-compose start|stop|restart
# 查看docker-compose管理的容器
docker-compose ps
# 查看日志
docker-compose logs -f
同时管理mysql容器和tomcat容器
# 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
docker-compose up -d # 后台启动
/opt/
目录下创建docker_gitlab
文件夹,在docker_gitlab
文件夹下创建docker_compose.yml
文件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‘
docker-compose up -d
docker-compose logs -f
root
/opt/
目录下创建docker_jenkins
文件夹,在docker_jenkins
文件夹下创建docker_compose.yml
文件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
docker-compose up -d
docker-compose logs -f
git param...
publish ssh
ssh-keygen -t rsa -C "1578259864@qq.com"
opt/docker_jenkins/data
目录下,解压原文:https://www.cnblogs.com/huyuan1004/p/13792293.html