Docker基本使用命令

Docker基本使用命令

Ubuntu安装docker:

1.安装 `sudo wget -qO- https://get.docker.com | sh` 
2.普通用户权限 `sudo usermod -aG docker username` 
3.如果普通用户执行docker命令,如果提示get …… dial unix /var/run/docker.sock权限不够,则修改/var/run/docker.sock权限 `sudo chmod a+rw /var/run/docker.sock`

基本命令

docker info 查看运行状态
docker pull 获取image 
docker build 创建image 
docker images 列出image 
docker ps 列出container 
docker run 运行container 
docker rm 删除container 
docker rmi 删除image 
docker cp 在host和container之间拷贝文件,eg:docker cp index.html a7f7e461d715://usr/share/nginx/html
docker commit 保存改动为新的imgae,eg:docker commit -m 'fun' a7f7e461d715
docker tag e9330a790558 nginx-fun:latest 修改image名称
运行 `docker run -d -p 8080:80 nginx`
停止 `docker stop a7f7e461d715`

Dockerfile

FROM 基础镜像 
RUN 执行命令
ADD 添加文件
COPY 拷贝文件
CMD 执行命令
EXPOSE 暴露端口
WORKDIR 指定路径
MAINTAINER 维护者
ENV 设定环境变量
ENTRYPOINT 容器入口
USER 指定用户
VOLUME 挂载点

volumes

1.docker inspect nginx 查看容器信息,在Mounts中可看到Sources
2.docker run -d -p 8080:80 -v $PWD/html:/usr/share/nginx/html nginx 指定容器文件目录
3.docker create -v $PWD/data:/var/mydata --name data_container ubuntu 创建data_container
4.docker run -it --volumes-from data_container ubuntu /bin/bash 从data_container中加载数据

registry

host 宿主机
image 镜像
container 容器
registry 仓库
daemon 守护程序
client 客户端

docker search xxx
docker pull xxx
docker push myname/xxx

docker-compose

1.安装:sudo curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
2.sudo chmod a+x /usr/local/bin/docker-compose

build 本地创建镜像
command 覆盖缺省命令
depends_on 连接容器
ports 暴露端口
vulumes 卷
image pull镜像
up 启动服务
stop 停止服务
rm 删除服务中的各个容器
logs 观察各个容器的日志
ps 列出服务相关的容器

常用操作

  • 拉取镜像
// 下载官方nginx镜像源,等同于docker pull docker.io/nginx
// 也等同于 docker pull docker.io/nginx:lastest
docker pull nginx

// 下载国内镜像源的ubuntu镜像,并指定版本为18.04
docker pull registry.docker-cn.com/library/ubuntu:18.04
  • 推送镜像
// 推送镜像到 docker hub, 需要先注册账户
docker push <你的用户名>/<你打包时定义的镜像名>:<标签,版本号>

// 推送到你的一个私有镜像仓库,需要提前搭建好仓库服务(比如用harbor来搭建)
docker push <私有镜像库域名, 如a.b.com>/<项目名称>/镜像名:<标签>
  • 打包镜像
// 提取准备好一个Dockerfile,在Dockerfile相同路径下执行
docker build -t <指定一个完整的镜像名, 比如testsvr:v1.0> .
// 即可打包出一个本地镜像, 然后再通过docker push就可以推送到远端镜像仓库
  • 启动容器
docker run -d               // -d 表示通过daemon方式来启动
-p 13306:3306               // 端口映射,将host主机的13306端口和docker容器的3306端口映射起来
-v /etc/mysql:/var/mysql    // 目录挂载,将容器内的/var/mysql目录挂载到host主机到/etc/mysql目录,可以实现容器内这个目录下的数据持久化
mysql                       // 镜像名,指定加载哪个镜像   
  • 重启或停止或删除容器应用
docker ps                // 列出目前正在运行的容器列表
docker ps -a             // 列出所有的容器列表
docker start <容器id>     // 通过容器id来重启某个容器, 批量操作的话,直接在参数后面再跟对应容器id即可
docker stop <容器id>      // 通过容器id来关闭某个容器, 批量操作的话,直接在参数后面再跟对应容器id即可
docker rm <容器id>        // 通过容器id来删掉某个已经停止掉的容器
docker rm -f <容器id>     // 通过容器id来删掉某个正在运行的容器
  • 删除本地镜像
docker rmi  <镜像id>
docker rmi -f <镜像id> // 强制删除
  • 查看容器日志
docker logs -f <容器id>
docker inspect <容器id> // 从返回结果中找到LogPath,运行的历史日志会在这个文件里找到
  • 进入容器内
docker exec -it <容器id> /bin/bash        // 进入容器内并进入它的shell终端
docker exec -it <容器id> <shell命令>       // 在容器内执行shell命令,比如
docker exce -it <容器id> ls -l            // 查看容器内系统根目录下所有文件或文件夹
## 进入容器后,可以直接通过exit命令退出容器
  • docker对镜像自动重启的设置
对镜像重启设置:docker restart imageid
在运行docker容器时加上如下参数来保证每次docker服务重启后容器也自动重启:
docker run ......  --restart=always
如果已经启动了则可以使用如下命令:
docker update --restart=always <CONTAINER ID>