Docker常用命令

Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的LinuxWindows操作系统的机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。

Docker不管是在企业生产中,还是个人小项目中,应用都非常的方便且简单快捷。

1.常用命令

  1. 列出本地的镜像

    1
    docker images -a  
  2. 搜索mysql的镜像

    1
    docker search mysql --limit 10  
  3. 拉取到本地,版本号可选。若不带版本号,默认是latest

    1
    2
    3
    docker pull mysql  
    docker pull ubuntu
    docker pull redis:6.0.8
  4. 列出本地镜像的image_id

    1
    docker images -q   
  5. 列出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
  6. 删除本地镜像

    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
  7. 新建并启动容器

-it 代表 interactive tty

1
docker run -it --name=myu1 ubuntu /bin/bash  
  1. 列出当前运行的docker

    1
    docker ps -a  
  2. 使用docker run -it启动的容器,自动进入交互式命令行,退出有两种方式:

    • exit命令(容器停止运行)
    • 快捷键ctrl+p+q(容器继续后台运行)
  3. docker run和docker start的区别:
    docker run是使用镜像启动一个新的容器,而docker start是启动之前存在的容器。

  4. 删除已经停止的容器

    1
    docker rm container_id / name  
  5. 进入活动状态的容器

    1
    docker attach container_id/name   

    上面命令如果使用exit退出,会使容器停止

  6. 想要退出时候保持后台运行,可以按快捷键control+p+q (control按住不放,先后按下p和q)

    1
    docker exec container_id   

    上面命令进入,使用exit退出,不会使容器退出

  7. 容器传文件到宿主机(在宿主机执行)

    1
    docker cp container_id:/file/to/path    
  8. 把整个容器导出为一个tar包

    1
    docker export container_id > ~/abcd.tar    
  9. 从导出包导入容器

    1
    cat ~/abcd.tar | docker import - 用户名/镜像名字:版本号     
  10. 把修改好的container进行commit

    1
    docker commit -m="add vim for ubuntu" -a="mapxn" d99969a97223 ubuntu-vim:1.0.1 
  11. 发布到阿里云的私有仓库

    1
    docker push registry.cn-shanghai.aliyuncs.com/mpn/dkdk:1.0.1  
  12. 挂载容器数据卷

    1
    docker run -it --privileged=true -v ~/repo/docker:/tmp:ro ubuntu /bin/bash 
  13. 跑一个mysql实例

    1
    2
    3
    4
    5
    6
    docker 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
&nbsp 宿主机 容器
端口 3306 3306
日志目录 ~/repo/docker/mysql/log /var/log/mysql
数据目录 ~/repo/docker/mysql/data /var/lib/mysql
配置目录 ~/repo/docker/mysql/conf /etc/mysql/conf.d
  1. 配置~/repo/docker/mysql/conf/my.cnf

    1
    2
    3
    4
    5
    6
    cat my.cnf  
    [client]
    default_character_set=utf8
    [mysqld]
    collation_server = utf8_general_ci
    character_set_server = utf8

    重启mysql容器

  2. 运行一个postgresql实例

    1
    2
    3
    4
    5
    docker run -d --name postgres \  
    -p 5432:5432 \
    -e POSTGRES_PASSWORD=123456 \
    -v ~/repo/docker/postgres-data/:/var/lib/postgresql/data \
    postgres
  3. 查看容器占用的磁盘大小

    1
    docker system df -v  
  4. docker列出虚悬镜像

    1
    docker image ls -f dangling=ture  
  5. 删除虚悬镜像

    1
    docker image prune  
  6. 查看docker网络

    1
    docker network ls  

2.Docker安装实例

  1. docker 安装portainer

    1
    2
    3
    4
    5
    6
    7
    8
    9
    docker 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:latest
  2. docker 安装tomcat

    1
    2
    3
    4
    docker run -d \  
    -p 8080:8080 \
    --name tomcat \
    tomcat
  3. docker 安装 nginx (开启文件服务器)

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    mkdir -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 \
    nginx
  4. docker 安装frps

    1
    2
    3
    4
    5
    6
    docker run \  
    --restart=always \
    --network host \
    -v ~/docker/frp:/etc/frp \
    --name frps \
    -it snowdreamtech/frps
  5. docker 查看正在运行的容器日志

    1
    docker logs -f

3.Docker 资源

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(注册后使用)

5.尾巴