Docker常用命令
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的Linux或Windows操作系统的机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。
Docker不管是在企业生产中,还是个人小项目中,应用都非常的方便且简单快捷。
1.常用命令
列出本地的镜像
1
docker images -a
搜索mysql的镜像
1
docker search mysql --limit 10
拉取到本地,版本号可选。若不带版本号,默认是latest
1
2
3docker pull mysql
docker pull ubuntu
docker pull redis:6.0.8列出本地镜像的image_id
1
docker images -q
列出docker目前的磁盘占用情况
1
2
3
4
5
6➜ ~ docker system df
TYPE TOTAL ACTIVE SIZE RECLAIMABLE
Images 1 0 72.78MB 72.78MB (100%)
Containers 0 0 0B 0B
Local Volumes 0 0 0B 0B
Build Cache 0 0 0B 0B删除本地镜像
1
2
3
4
5
6
7
8
9
10
11
12➜ ~ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu latest ba6acccedd29 2 months ago 72.8MB
hello-world latest feb5d9fea6a5 3 months ago 13.3kB
➜ ~ docker rmi hello-world
Untagged: hello-world:latest
Untagged: hello-world@sha256:2498fce14358aa50ead0cc6c19990fc6ff866ce72aeb5546e1d59caac3d0d60f
Deleted: sha256:feb5d9fea6a5e9606aa995e879d862b825965ba48de054caab5ef356dc6b3412
Deleted: sha256:e07ee1baac5fae6a26f30cabfe54a36d3402f96afda318fe0a96cec4ca393359
➜ ~ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu latest ba6acccedd29 2 months ago 72.8MB新建并启动容器
-it 代表 interactive tty
1 | docker run -it --name=myu1 ubuntu /bin/bash |
列出当前运行的docker
1
docker ps -a
使用
docker run -it
启动的容器,自动进入交互式命令行,退出有两种方式:- exit命令(容器停止运行)
- 快捷键ctrl+p+q(容器继续后台运行)
docker run和docker start的区别:
docker run是使用镜像启动一个新的容器,而docker start是启动之前存在的容器。删除已经停止的容器
1
docker rm container_id / name
进入活动状态的容器
1
docker attach container_id/name
上面命令如果使用exit退出,会使容器停止
想要退出时候保持后台运行,可以按快捷键control+p+q (control按住不放,先后按下p和q)
1
docker exec container_id
上面命令进入,使用exit退出,不会使容器退出
容器传文件到宿主机(在宿主机执行)
1
docker cp container_id:/file/to/path
把整个容器导出为一个tar包
1
docker export container_id > ~/abcd.tar
从导出包导入容器
1
cat ~/abcd.tar | docker import - 用户名/镜像名字:版本号
把修改好的container进行commit
1
docker commit -m="add vim for ubuntu" -a="mapxn" d99969a97223 ubuntu-vim:1.0.1
发布到阿里云的私有仓库
1
docker push registry.cn-shanghai.aliyuncs.com/mpn/dkdk:1.0.1
挂载容器数据卷
1
docker run -it --privileged=true -v ~/repo/docker:/tmp:ro ubuntu /bin/bash
跑一个mysql实例
1
2
3
4
5
6docker run -d -p 3306:3306 --privileged=true \
-v ~/repo/docker/mysql/log:/var/log/mysql \
-v ~/repo/docker/mysql/data:/var/lib/mysql \
-v ~/repo/docker/mysql/conf:/etc/mysql/conf.d \
-e MYSQL_ROOT_PASSWORD=123456 \
--name mysql mysql
  | 宿主机 | 容器 |
---|---|---|
端口 | 3306 | 3306 |
日志目录 | ~/repo/docker/mysql/log | /var/log/mysql |
数据目录 | ~/repo/docker/mysql/data | /var/lib/mysql |
配置目录 | ~/repo/docker/mysql/conf | /etc/mysql/conf.d |
配置~/repo/docker/mysql/conf/my.cnf
1
2
3
4
5
6cat my.cnf
[client]
default_character_set=utf8
[mysqld]
collation_server = utf8_general_ci
character_set_server = utf8重启mysql容器
运行一个postgresql实例
1
2
3
4
5docker run -d --name postgres \
-p 5432:5432 \
-e POSTGRES_PASSWORD=123456 \
-v ~/repo/docker/postgres-data/:/var/lib/postgresql/data \
postgres查看容器占用的磁盘大小
1
docker system df -v
docker列出虚悬镜像
1
docker image ls -f dangling=ture
删除虚悬镜像
1
docker image prune
查看docker网络
1
docker network ls
2.Docker安装实例
docker 安装portainer
1
2
3
4
5
6
7
8
9docker run -d \
-p 8000:8000 \
-p 9000:9000 \
-p 9443:9443 \
--name portainer \
--restart=always \
-v /var/run/docker.sock:/var/run/docker.sock \
-v portainer_data:/data \
portainer/portainer-ce:latestdocker 安装tomcat
1
2
3
4docker run -d \
-p 8080:8080 \
--name tomcat \
tomcatdocker 安装 nginx (开启文件服务器)
1
2
3
4
5
6
7
8
9
10
11
12
13mkdir -p ~/repo/docker/nginx/www
docker run --name nginx -p 8888:80 -d nginx
docker cp nginx:/etc/nginx/conf.d ~/repo/docker/nginx
docker cp nginx:/etc/nginx/nginx.conf ~/repo/docker/nginx
docker rm -f nginx
docker run -d \
--name nginx \
-v ~/repo/docker/nginx/nginx.conf:/etc/nginx/nginx.conf:ro \
-v ~/repo/docker/nginx/conf.d:/etc/nginx/conf.d \
-v ~/repo/docker/nginx/www:/home/www \
-p 8888:80 \
nginxdocker 安装frps
1
2
3
4
5
6docker run \
--restart=always \
--network host \
-v ~/docker/frp:/etc/frp \
--name frps \
-it snowdreamtech/frpsdocker 查看正在运行的容器日志
1
docker logs -f
3.Docker 资源
- Docker 官方主页: https://www.docker.com
- Docker 官方博客: https://blog.docker.com/
- Docker 官方文档: https://docs.docker.com/
- Docker Store: https://store.docker.com
- Docker Cloud: https://cloud.docker.com
- Docker Hub: https://hub.docker.com
- Docker 的源代码仓库: https://github.com/moby/moby
- Docker 发布版本历史: https://docs.docker.com/release-notes/
- Docker 常见问题: https://docs.docker.com/engine/faq/
- Docker 远端应用 API: https://docs.docker.com/develop/sdk/
4.Docker 国内镜像
阿里云的加速器:https://help.aliyun.com/document_detail/60750.html
网易加速器:http://hub-mirror.c.163.com
官方中国加速器:https://registry.docker-cn.com
ustc 的镜像:https://docker.mirrors.ustc.edu.cn
daocloud:https://www.daocloud.io/mirror#accelerator-doc(注册后使用)