Docker

作者: 扎个小膀儿 | 来源:发表于2021-01-04 21:46 被阅读0次

docker images
docker run busybox:latest echo "hello world"
docker run -i -t busybox:latest 

docker run -d busybox:latest sleep 1000
docker ps 
docker ps -a
docker run --rm busybox:latest sleep 1 // remove the container when the execution is done
docker run --name hello busybox:latest
docker inspect container_id // show description of the container/image

docker run -it --rm -p 8888:8080 tomcat:9.0 // -p host_port:container_port
docker run -it -d -p 8888:8080 tomcat:9.0 // run it in the backend
docker logs container_id // check logs

docker rm container_id

docker stop $(docker ps -a -q)
docker images
docker rmi image_id

docker run -it debian:jessie
docker commit container_id repository_name:tag // after make some change in the container, you can commit it to repository. this is the first approach to build a new docker image.
// The second approach to build docker image
FROM debian:jessie
RUN apt-get update
RUN apt-get install -y git
RUN apt-get install -y vim

docker build -t xxx/debian . // -t means tag
Each RUN command will create an image, so we need to improve the Dockerfile
FROM debian:jessie
RUN apt-get update && apt-get install -y \
    git \
    python \
    vim
// Best practice is to sort multi-line arguments alphanumerically

CMD instruction specifies what command you want to run when the container starts up.
If we don't specify CMD instruction in the Dockerfile, Docker will use the default command defined in the base image.(in this case, the default command is bash)
FROM debian:jessie
RUN apt-get update && apt-get install -y \
git \
vim 
CMD["echo", "hello docker"]
// when this container starts up, it will execute echo "hello docker"
// we can overwrite the CMD command in docker run

Docker Cache // if the instruction doesn't change, docker will simply reuse the existing layer.
//Aggressive caching
FROM ubuntu:14:04
RUN apt-get update
RUN apt-get install -y git
if there is another Dockerfile
FROM ubuntu:14:04
RUN apt-get update // it will reuse cache and will not update timely 
RUN apt-get install -y curl
// Solution 1: Chain Instructions
FROM ubuntu:14.04
RUN apt-get update && apt-get install -y \
git \
curl
// Solution 2: Specify --no-cache option 
docker build -t xxx/debian . --no-cache=true

COPY instruction
FROM ubuntu:14.04
RUN apt-get update && apt-get install -y \
git \
curl
COPY 123.txt /src/123.txt

ADD instruction
ADD can copy files and download a file to the container.
ADD also has the ability to unpack compressed files.
The rule is: use COPY first, unless you are sure you need ADD.

Avoid using latest tag.
docker tag image_id xxx/debian:1.01
docker login --username=xxx
docker push xxx/debian:1.01

docker exec -it container_id bash // run command in the running container

docker ps // docker container ls
docker container ls -a
docker stop container_name
docker start container_name
docker restart container_name

Docker container links
docker run -d -p 5000:5000 --link redis dockerapp:v0.3

docker-composite version
docker-composite up -d // -d run in backend
docker-composite ps
docker-composite logs
docker-composite logs container_name
docker-composite stop
docker-composite rm
docker-composite build // force to rebuild all images

Docker Networking
closed network/none network
bridge network
host network
overlay network

docker network ls
docker run -d --net none busybox sleep 1000
docker exec -it container_id /bin/ash

docker network inspect bridge
docker run -d --name container_1 busybox sleep 1000
docker exec -it container_1 ifconfig
docker run -d --name container_2 busybox slep 1000
docker exec -it container_2 ifconfig
docker exec -it container_1 ping 172.17.0.3 // be able to connect to container_2
docker exec -it container_1 ping 8.8.8.8

docker network create --driver bridge my_bridge_network
docker network inspect my_bridge_network
docker run -d --name container_3 --net my_bridge_network busybox sleep 1000
docker exec -it container_3 ifconfig
docker exec -it container_3 ping 172.17.0.2 // ping container_1
docker network connect bridge container_3 // add eth to container_3
docker exec -it container_3 ifconfig
docker exec -it container_3 ping 172.17.0.3
docker network disconnect bridge container_3 // remove eth
docker exec -it container_3 ifconfig

bridge network, container have access to two network interfaces 1. loopback interface 2. private interface
all containers in the same bridge network can communicate with each other
containers from different bridge networks can't connect with each other by default // but can connect/disconnect to certain custom bridge

Host network(have full access to the host's interface)(minimum network security leve)(higher level of performance)
docker run -d --name container_4 --net host busybox sleep 1000
docker exec -it container_4 ifconfig // show all eth of the host network

Overlay network在多个docker宿主机之间创建一个分布式网络
supports multi-host networking out-of-the-box

docker-compose up -d
docker network ls
docker-compose down

相关文章

  • docker学习

    docker镜像 docker容器 docker仓库 安装docker docker版本 docker分为社区版和...

  • Docker安装和运行

    获取Docker 安装Docker 验证安装 1、获取Docker Docker for Mac Docker f...

  • Docker知识手册

    Docker 容器 启动docker:docker start 查看docker运行状态:docker stats...

  • Docker简介

    章节介绍 # Docker是什么# Docker包括什么# Docker镜像# Docker编配# Docker还...

  • Docker 常用操作

    Docker docker: 18.09.4、nvidia-docker: 2.0.3 docker 19.03 ...

  • rancher+harbor离线安装

    安装docker,此docker为社区版docker。docker官方文档:https://docs.docker...

  • Linux之Docker

    Linux之Docker 目录 Docker简单介绍 在线Docker安装 离线Docker安装 Docker简单...

  • Docker常用命令

    Docker常用命令 Docker帮助命令 docker version:查看docker版本 docker in...

  • Docker基础操作

    Docker部署 Docker安装 镜像加速 Docker 基础命令 Docker镜像管理 搜索镜像docker ...

  • docker容器状态查看命令集

    docker inspect 用法 : docker inspect [docker名称/docker short...

网友评论

      本文标题:Docker

      本文链接:https://www.haomeiwen.com/subject/cdwmoktx.html