docker命令行

docker命令行

2023年4月25日
202304
202304, docker

重要 #

  1. image是静态文件,container是运行在内存中的进程
  2. 容器内程序必须前台运行
  3. 网络
    1. Bridge: default, single host, DNS, 因为有DNS,可以通过catainer name通讯
    2. Host: only Linux, direct attach
    3. Overlay: multiple host
  4. 小部分容器管理可以使用compose,大规模使用k8s
  5. compose生产案例: http://github.com/datastaxdevs/docker-learning-path/tree/master/week-2
  6. 通过容器ID找到了容器在宿主机中的pid

cat /sys/fs/cgroup/memory/docker/<containerId>/cgroup.procs

  1. 查看windows tcp端口限制 netsh interface ipv4 show excludedportrange protocol=tcp

docker build #

  1. docker build . 构建image
  2. docker build -t <image-name>/<repo-name>:<tagname> .

docker run #

  • -publish/-p

    1. 开启host与容器内端口映射
    2. docker run --publish 80:80/tcp <image> 前台运行
    3. docker run --publish 80:80/tcp --detach <image>
    4. docker run --publish 80:80/tcp --d <image>
  • -e

    1. -e FLASK_ENV=production
  • –volume/-v

    1. docker run --volume LOCAL_PATH:CONTAINER_PATH host上修改会覆盖容器内文件, 数据保存在 local host
    2. docer run -v /home/anna/project:/app:ro
      docker run -d -e MYSQL_ALLOW_EMPTY_PASSWORD=true -v $(pwd)/mysql-data:/var/lib/mysql mysql
    
    1. docker run -v $(pwd):/opt/project
    2. docker run --volume VOLUME_NAME:CONTAINER_PATH 数据由容器产生时使用该方案, 数据保存在docker volume
    3. docer run -v VOLUME_NAME:CONTAINER_PATH数据由容器产生时使用该方案
      docker run -d -e MYSQL_ALLOW_EMPTY_PASSWORD=true -v mysql-data:/var/lib/mysql mysql
    
  • –mount

    1. docker run --mount type=bind,source="$(pwd)",target=/opt/project 相比于-v官方更推荐此方法
    2. docer run --mount source=VOLUME_NAME,target=CONTAINER_PATH 数据由容器产生时使用该方案, 官方推荐

docker volume #

  • ls
    1. 列出volume
  • inspect
    1. 自检volume信息

docker network #

  • ls

    1. 列出创建的网络
  • create

    • –driver

      1. docker network create wp --driver bridge bridge
      docker network create wp
      
      docker run -d -v mysql-data1:/var/lib/mysql --network wp --name database -e MYSQL_ROOT_PASSWORD=rootpw -e MYSQL_DATABASE=wordpress -e MYSQL_USER=wordpress -e MYSQL_PASSWORD=wordpress mysql:5
      
      docker run -p 8088:80 -v wp-data:/var/www/html --network wp -d -e WORDPRESS_DB_HOST=database:3306 -e WORDPRESS_DB_USER=wordpress -e WORDPRESS_DB_PASSWORD=wordpress  -e WORDPRESS_DB_NAME=wordpress  wordpress:latest
      
  • inspect

    1. 自省网络设置

docker commit #

docker commit -a="zzlion" -m="notebook init" <container_id> <image_name>:<version>

  • -a author
  • m message

docker logs #

  • –folow/-f
    1. docker logs --folow <container>
    2. docker logs --f <container>

docker ps #

  1. docker ps查看运行的容器

docker stop #

  1. docker stop <container> graceful 结束运行的容器

docker kill #

  1. docker kill <container> crude 结束运行的容器

docker push #

  1. docker push <image name>/<repo-name>:<tagname>

docker container #

  • ls
    1. docker container ls -a
  • rm
    1. docker container rm <hashid>

docker image #

  • ls
    1. docker image ls
  • rm
    1. docker image rm <image-name> ref的container都移除后才可以删除

docker save #

docker save -o testpostgis.tar test/postgis:11.0-2.5

docker load #

docker load -i testpostgis.tar.gz

docker-compose up #

  • -d

docker-compose down #

docker-compose build #

docker-compose scale #