目的
1.一次镜像,平滑移动,镜像文件,保证了环境迁移的一致
2.解决了运行环境和配合问题的软件容易,方便做持续集成并有助于整体发布的容器虚拟化技术
3.容器虚拟技术
镜像(image),容器(container),仓库(repository)
使用 docker pull 将官方 ubuntu 镜像下载到本地:
https://blog.csdn.net/weixin_36586564/article/details/103820044
mkdir -p /opt/nginx/{conf,conf.d,html,logs}--创建文件
http://192.168.109.128/root/testcicd.git
D:\work\2021> docker cp .\cloudpc_cli_web\client\ \cloudpc_cli_web\client
docker run --rm -v /home/gitlab-runner/config:/etc/gitlab-runner gitlab/gitlab-runner register \
--non-interactive \
--executor "docker" \
--docker-image alpine:latest \
--url "http://192.168.109.128/" \
--registration-token "mcwhQWtvmWNFyydr_98x" \
--description "runner" \
--tag-list "build" \
--run-untagged="true" \
--locked="false" \
--access-level="not_protected"
docker exec -it gitlab-runner gitlab-runner register -n \
--url http://192.168.109.128/ \
--registration-token mcwhQWtvmWNFyydr_98x\
--executor docker \
--tag-list=dockersock,ali-docker \
--description "aliyun docker runner" \
--docker-privileged=true \
--docker-pull-policy="if-not-present" \
--docker-image "docker:latest" \
--docker-volumes /var/run/docker.sock:/var/run/docker.sock \
--docker-volumes $HOME/.m2:$HOME/.m2
vim /home/gitlab/config/gitlab.rb
ubuntun 手动 操作 docker-compose
docker pull ubuntu
docker imgages--查看镜像
如果容器存在且运行需要 停止容器 删除容器 删除镜像
$ docker stop <容器 ID>
$ docker rm -f <容器 ID> --删除容器
$ docker rmi hello-world --删除镜像
进入容器
docker exec -it $id bash
删除进行
docker rmi --容器
nginx 默认配置:
cd /usr/share/nginx/html
cd /etc/nginx/conf.d/default.conf
sudo docker-compose up -d 停止并删除原有的镜像,并使用系统中原有的镜像,结合 docker-compose.yml 中的新配置来 生成一个新的镜像,提供服务。
sudo docker run -it -p 8082:80 client-build /bin/bash //启动容器并进入
docker run -d -p 80:80 nginx--运行容器
(1)–name:确定容器的名字。
(2)-d 指定容器是后台运行。
(3)-p 容器暴露端口号
it指的是啥
-i:以交互模式运行容器
-t:为容器重新分配一个伪输入终端
docker ps 查看运行的容器
# 简化删除
docker rmi 镜像名:版本
docker image rm 镜像名:版本或者id标识 # docker image rm mysql:8.0.27
docker image rm -f 镜像名:版本或者id标识 # 强制删除
docker run -d -p 8080:8080 --name 容器名称
curl https://www.example.com --模拟get请求
docker run -it 和 docker exec -it
docker run -it imageID [cmd]
这个是用镜像产生一个容器,并且和cmd程序做交互
-i表示交互式的,表示[cmd]是一个有用户输入的程序,比如/bin/bash 和 python 等等。
-t 产生一个终端。
所以说有-i就必须有-t,不然怎么输入呢
docker exec -it imageID cmd
这个是在正在运行容器中运行cmd程序,所以cmd是不能省略的。
-it和上面的道理是一样的。
案例
项目client-pc
client-pc=>default.conf docker-compose.yml Dockerfile index.html nginx.conf package.json public src
default.conf 内容用于 配置nginx:
server {
listen 80;
server_name _;//任何
access_log /var/log/nginx/access.log main;
error_log /var/log/nginx/error.log;
root /public;//目录
index index.html;//启动文件
location / {
try_files $uri /index.html;//可配置代理
}
}
nginx.conf
user nginx;
worker_processes 2;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
use epoll;
worker_connections 65535;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
server_tokens off;
sendfile on;
#tcp_nopush on;
keepalive_timeout 15;
gzip on;
include /etc/nginx/conf.d/*.conf;
}
Dokerfile 文件:
FROM node-14-base as glup
WORKDIR /client
COPY package.json .
COPY . .
RUN npm install && npm run build
FROM nginx:latest as build
COPY nginx.conf /etc/nginx/nginx.conf
COPY default.conf /etc/nginx/conf.d/default.conf
COPY --from=glup /client/dist/index.html /public/
COPY --from=glup /client/dist/ /public/
LABEL SERVICE_NAME="hello-weiste"
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]
docker-compose.yml 文件
version: '3'
services:
client-build:
image: client-build
build:
context: .
dockerfile: Dockerfile
args:
NPM_REGISTRY: http://172.16.98.219:12000
REGISTRY_HOST: in.registry.xiongmaozhanggui.com
BUILD_ARG: build
ports:
- 8082:80
network_mode: bridge
在 client-pc 目录下执行 sudo docker-compose up -d