Docker

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • linux 查看系统版本确认使用的docker版本 uname -a --查看Linux内核版本命令cat /pr...
    只有香如故阅读 1,396评论 1 4
  • 五、Docker 端口映射 无论如何,这些 ip 是基于本地系统的并且容器的端口非本地主机是访问不到的。此外,除了...
    R_X阅读 1,963评论 0 7
  • kitematic没碰 Debian是完全由自由软件组成的类UNIX操作系统 netstat查看网络 网易蜂巢(可...
    继续加油吧阅读 616评论 0 0
  • 常用命令: sudo docker image ls 查看镜像 sudo docker image rm [i...
    SongOf阅读 200评论 0 0
  • Docker基础 这篇基础文章是方便用户在使用cSphere平台之前,了解docker基础知识。针对已经有一定的L...
    威谷子阅读 1,096评论 0 11

友情链接更多精彩内容