Docker学习笔记

常用命令

镜像

# 拉取镜像 镜像名:版本号
docker pull mysql:5.6
#  查看
docker images -a
# 删除单个镜像
docker image rm #镜像ID
# 删除所有不使用镜像
docker image rmi $(docker images -q)

容器

# 启动
docker container start #id/容器名称
# 终止
docker container stop # id/容器名称
# 删除单个容器 
docker container rm  # id/容器名称
# 删除所有已停止的容器
docker container rm $(docker ps -aq)
# 删除所有容器(含正在运行)
docker container rm -f $(docker ps -aq)
#查看正在运行的容器
docker container ps
# 查看所有
docker container ls -a 
# 停止所有容器
docker stop $(docker ps -aq)
# 清理所有处于终止状态的容器
docker container prune
# 杀死所有正在运行的容器
docker kill $(docker ps -aq)

网络

# 自定义
docker network create new_net_name
# 查看
docker network ls
# 连接
docker network connect
# 查看连接信息
docker network inspect #id
# 删除某一个
docker network rm #id
# 删除所有
docker network prune

查看资源占用情况

docker stats

进阶操作

显示所有容器IP

docker inspect --format='{{.Name}} - {{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $(docker ps -aq)

Dockerfile

# 镜像
FROM golang
# 创建工作工作目录
WORKDIR $GOPATH/src/golang
# 复制文件到到镜像指定目录
COPY . $GOPATH/src/golang
# 构建镜像
RUN go build .
# 暴露端口
EXPOSE 8001
# 程序入入口
ENTRYPOINT ["./golang"]

docker-compose

# 启动 配置文件名为docker-compse.yml  -d后台启动
docker-compse -f #docker-compose.yml up -d

时区设置

environment:
	TZ: Asia/Shanghai #中国时区

MYSQL

version: '3'
services:
  mysql:
    #构建mysql镜像
    image: mysql:5.6
    container_name: mysqlv56 # 容器名
    command: mysqld --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci #设置utf8字符集
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: 123456 #root管理员用户密码
      MYSQL_USER: test #创建test用户
      MYSQL_PASSWORD: test #设置test用户的密码
      TZ: Asia/Shanghai
    ports:
      - '3306:3306' #host物理直接映射端口为3306
    volumes:
      #mysql数据库挂载到host物理机目录
      - '~/docker/mysql5_6/data:/var/lib/mysql'
      # 容器的配置目录挂载到host物理机目录
      # - '~/docker/mysql5_6/mysql.conf.d:/etc/mysql/mysql.conf.d'

Gitlab