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

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