docker命令行
2023年4月25日
重要 #
- image是静态文件,container是运行在内存中的进程
- 容器内程序必须前台运行
- 网络
- Bridge: default, single host, DNS, 因为有DNS,可以通过catainer name通讯
- Host: only Linux, direct attach
- Overlay: multiple host
- 小部分容器管理可以使用compose,大规模使用k8s
- compose生产案例: http://github.com/datastaxdevs/docker-learning-path/tree/master/week-2
- 通过容器ID找到了容器在宿主机中的pid
cat /sys/fs/cgroup/memory/docker/<containerId>/cgroup.procs
- 查看windows tcp端口限制
netsh interface ipv4 show excludedportrange protocol=tcp
docker build #
docker build .
构建imagedocker build -t <image-name>/<repo-name>:<tagname> .
docker run #
-
-publish/-p
- 开启host与容器内端口映射
docker run --publish 80:80/tcp <image>
前台运行docker run --publish 80:80/tcp --detach <image>
docker run --publish 80:80/tcp --d <image>
-
-e
- -e FLASK_ENV=production
-
–volume/-v
docker run --volume LOCAL_PATH:CONTAINER_PATH
host上修改会覆盖容器内文件, 数据保存在 local hostdocer run -v /home/anna/project:/app:ro
docker run -d -e MYSQL_ALLOW_EMPTY_PASSWORD=true -v $(pwd)/mysql-data:/var/lib/mysql mysql
docker run -v $(pwd):/opt/project
docker run --volume VOLUME_NAME:CONTAINER_PATH
数据由容器产生时使用该方案, 数据保存在docker volumedocer run -v VOLUME_NAME:CONTAINER_PATH
数据由容器产生时使用该方案
docker run -d -e MYSQL_ALLOW_EMPTY_PASSWORD=true -v mysql-data:/var/lib/mysql mysql
-
–mount
docker run --mount type=bind,source="$(pwd)",target=/opt/project
相比于-v官方更推荐此方法docer run --mount source=VOLUME_NAME,target=CONTAINER_PATH
数据由容器产生时使用该方案, 官方推荐
docker volume #
- ls
- 列出volume
- inspect
- 自检volume信息
docker network #
-
ls
- 列出创建的网络
-
create
-
–driver
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
- 自省网络设置
docker commit #
docker commit -a="zzlion" -m="notebook init" <container_id> <image_name>:<version>
- -a author
- m message
docker logs #
- –folow/-f
docker logs --folow <container>
docker logs --f <container>
docker ps #
docker ps
查看运行的容器
docker stop #
docker stop <container>
graceful 结束运行的容器
docker kill #
docker kill <container>
crude 结束运行的容器
docker push #
docker push <image name>/<repo-name>:<tagname>
docker container #
- ls
docker container ls -a
- rm
docker container rm <hashid>
docker image #
- ls
docker image ls
- rm
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