User Tools

Site Tools


технология_docker

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
технология_docker [2025/02/20 06:43]
val [Создание образа для приложения с использованием Dockerfile]
технология_docker [2025/06/12 08:50] (current)
val [Создание образа для приложения с использованием Dockerfile]
Line 59: Line 59:
  
 # docker info # docker info
 +</​code>​
 +==== Запуск контейнеров ====
  
 +  * [[https://​stackoverflow.com/​questions/​41694329/​docker-run-override-entrypoint-with-shell-script-which-accepts-arguments|Docker run override entrypoint with shell script which accepts arguments]]
 +  * Запуск сервиса TACACS+ в [[Сервис TACACS+#​Docker]]
 +
 +<​code>​
 # docker run hello-world # docker run hello-world
  
Line 79: Line 85:
   * [[Сервис Grafana]]   * [[Сервис Grafana]]
 ==== Обзор и удаление ==== ==== Обзор и удаление ====
 +
 +  * [[https://​forums.docker.com/​t/​why-arent-base-layer-images-listed-in-docker-image-ls-a/​139044/​5|Why aren’t base layer images listed in `docker image ls -a`?]]
  
 <​code>​ <​code>​
Line 172: Line 180:
   * [[#​Запуск в режиме демона и подключение к контейнеру]] из полученного образа   * [[#​Запуск в режиме демона и подключение к контейнеру]] из полученного образа
 ==== Создание образа для приложения с использованием Dockerfile ==== ==== Создание образа для приложения с использованием Dockerfile ====
 +
 +  * [[https://​habr.com/​ru/​companies/​slurm/​articles/​329138/​|ENTRYPOINT vs CMD: назад к основам]]
  
   * [[Сервис TACACS+]]   * [[Сервис TACACS+]]
Line 242: Line 252:
 === Приложение python pywebd === === Приложение python pywebd ===
  
-  * [[Язык программирования Python]]+  * [[Язык программирования Python#Flask Gunicorn]]
  
   * [[https://​stackoverflow.com/​questions/​49955097/​how-do-i-add-a-user-when-im-using-alpine-as-a-base-image|How do I add a user when I'm using Alpine as a base image?]]   * [[https://​stackoverflow.com/​questions/​49955097/​how-do-i-add-a-user-when-im-using-alpine-as-a-base-image|How do I add a user when I'm using Alpine as a base image?]]
  
 <​code>​ <​code>​
-:~/pywebd$ ### mkdir -p etc/pywebd/; cp -rv /​etc/​pywebd/​ etc/pywebd/+:~/pywebd$ ### mkdir etc/; cp -rv /​etc/​pywebd/​ etc/
 :~/pywebd$ ### echo '<​h1>​Hello from pywebd</​h1>'​ > index.html :~/pywebd$ ### echo '<​h1>​Hello from pywebd</​h1>'​ > index.html
  
Line 274: Line 284:
  
 #COPY --chown=myuser:​myuser app.py . #COPY --chown=myuser:​myuser app.py .
-#COPY --chown=myuser:​myuser etc/pywebd/ /etc/ +### COPY --chown=myuser:​myuser etc/pywebd/ /etc/pywebd
-#COPY --chown=myuser:​myuser index.html /var/www/+### COPY --chown=myuser:​myuser index.html /var/www/
 ### ADD www.tgz /var/ ### ADD www.tgz /var/
  
Line 287: Line 297:
 :~/pywebd$ time docker build -t pywebd . :~/pywebd$ time docker build -t pywebd .
  
 +:~/pywebd$ ### docker run -ti --rm --entrypoint /bin/sh pywebd
 :~/pywebd$ ### docker run -p 4443 -d --rm pywebd :~/pywebd$ ### docker run -p 4443 -d --rm pywebd
  
Line 293: Line 304:
  
   * [[#​Запуск в режиме демона и подключение к контейнеру]]   * [[#​Запуск в режиме демона и подключение к контейнеру]]
 +
 +=== Приложение python pywebd2 ===
 +
 +  * [[Язык программирования Python#​FastAPI Uvicorn]]
 +
 +<​code>​
 +~/pywebd2# cat Dockerfile
 +</​code><​code>​
 +FROM python:​3.11-alpine
 +
 +RUN pip install --root-user-action=ignore --upgrade pip
 +
 +RUN pip install poetry
 +
 +RUN adduser -D myuser
 +USER myuser
 +WORKDIR /​home/​myuser
 +
 +COPY --chown=myuser:​myuser . .
 +
 +RUN poetry install
 +
 +ENTRYPOINT ["​poetry",​ "​run"​]
 +CMD ["​python3",​ "​app.py"​]
 +</​code><​code>​
 +~/pywebd2# time docker build -t pywebd2 .
 +
 +# docker run -d -p 8000 --rm pywebd2
 +
 +# docker run -d -p 4080 --rm pywebd2 uvicorn app:app --reload --host 0.0.0.0 --port 4080
 +</​code>​
  
 === Приложение golang gowebd === === Приложение golang gowebd ===
Line 546: Line 588:
  
 # docker-compose rm # docker-compose rm
 +
 +# docker volume inspect root_vol1
  
 # docker volume rm root_vol1 # docker volume rm root_vol1
Line 666: Line 710:
 <​code>​ <​code>​
 ~/gowebd# time docker run \ ~/gowebd# time docker run \
-  -v $(pwd):/​workspace --rm\+  -v $(pwd):/​workspace ​
 +  ​-v ~/​.docker/​config.json:/​kaniko/​.docker/​config.json ​\
   gcr.io/​kaniko-project/​executor:​latest \   gcr.io/​kaniko-project/​executor:​latest \
-  --skip-tls-verify --log-timestamp\+  --skip-tls-verify --log-timestamp \
   --dockerfile=./​Dockerfile \   --dockerfile=./​Dockerfile \
   --context=/​workspace \   --context=/​workspace \
-  --destination=server.corp13.un:​5000/​student/​gowebd ​+  --destination=server.corpX.un:​5000/​student/​gowebd
-  --cache=true --cache-copy-layers --cache-repo server.corp13.un:​5000/​dev-cache --use-new-run \ +
-  --verbosity debug+
 </​code><​code>​ </​code><​code>​
 или, интерактивно:​ или, интерактивно:​
Line 679: Line 722:
 root@ubuntu:​~/​gowebd#​ docker run -it \ root@ubuntu:​~/​gowebd#​ docker run -it \
   -v $(pwd):/​workspace --rm --entrypoint "/​bin/​sh"​ \   -v $(pwd):/​workspace --rm --entrypoint "/​bin/​sh"​ \
 +  -v ~/​.docker/​config.json:/​kaniko/​.docker/​config.json \
   gcr.io/​kaniko-project/​executor:​debug ​   gcr.io/​kaniko-project/​executor:​debug ​
  
Line 684: Line 728:
   --dockerfile=./​Dockerfile \   --dockerfile=./​Dockerfile \
   --context=/​workspace \   --context=/​workspace \
-  --destination=server.corp13.un:​5000/​student/​gowebd+  --destination=server.corpX.un:​5000/​student/​gowebd
 </​code><​code>​ </​code><​code>​
 тестируем результат:​ тестируем результат:​
 </​code><​code>​ </​code><​code>​
 # docker run --pull=always --name gowebd -itd --rm \ # docker run --pull=always --name gowebd -itd --rm \
-  -p 8000:80 server.corp13.un:​5000/​student/​gowebd+  -p 8000:80 server.corpX.un:​5000/​student/​gowebd
 </​code>​ </​code>​
 ==== Приложение apwebd ==== ==== Приложение apwebd ====
технология_docker.1740022990.txt.gz · Last modified: 2025/02/20 06:43 by val