首页 > 技术文章 > Docker

jingjiu 2020-03-02 20:04 原文

入门

更换阿里巴巴镜像

阿里巴巴镜像地址

在系统右下角托盘图标内右键菜单选择 Settings,打开配置窗口后左侧导航菜单选择 Docker Daemon。编辑窗口内的JSON串,填写下方加速器地址:

{
  "registry-mirrors": ["https://4r9yehe8.mirror.aliyuncs.com"]
}

编辑完成后点击 Apply 保存按钮,等待Docker重启并应用配置的镜像加速器。

下载镜像

docker pull nginx:1.16.1

删除镜像

docker rmi nginx:latest

启动镜像

docker run --name myweb -d -p 8088:80 nginx:1.16.1 
docker run --name zcc_mysql_5.7.29 -e MYSQL_ROOT_PASSWORD=password -d -p 3306:3306 mysql:5.7.29

启动/停止已有容器

docker start ed873662ff3c
docker stop ed873662ff3c
docker restart ed873662ff3c #重新启动

查看容器

docker ps #正在运行
docker ps -a #所有容器

查看镜像历史操作

docker history ed13ba4c9071

*删除所有容器

docker rm $(docker ps -aq)
docker system prune

安装oracle步骤

  1. 拉取镜像
docker pull registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g
  1. 创建容器
docker run -d -p 1521:1521 --name oracle_11g registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g
  1. 启动容器
docker start oracle_11g
  1. 进入容器终端
docker exec -it oracle_11g bash
  1. 编辑修改相关配置
su - root(密码 helowin)

vi /etc/profile

export ORACLE_HOME=/home/oracle/app/oracle/product/11.2.0/dbhome_2
export ORACLE_SID=helowin
export PATH=$ORACLE_HOME/bin:$PATH
# 保存退出

  1. 添加软连接等配置
ln -s $ORACLE_HOME/bin/sqlplus /usr/bin

su - oracle
sqlplus /nolog
conn /as sysdba
  1. 修改sys、system用户密码
alter user system identified by oracle;
alter user sys identified by oracle;
ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;
  1. 在navicat登录
sid/服务名 helowin
system 密码 oracle

创建自定义容器

1)进入容器

docker exec -it e85f2d01f991 /bin/bash

2)编辑Dockerfile文件

# FROM -设置基准镜像
FROM tomcat:latest
# WORKDIR -设置工作目录-相当于cd /usr/local/tomcat/webapps
WORKDIR /usr/local/tomcat/webapps
# ADD(或者COPY) -用于复制本地文件 到 镜像中
ADD docker-web ./docker-web
# ENV -设置环境常量 以下为设置JAVA_HOME为jdk8的路径
#1. ENV JAVA_HOME /usr/local/openjdk8
#2. RUN ${JAVA_HOME}/bin/java -jar test.jar
# EXPOSE -暴露容器端口
#1. EXPOSE 8080
#2. EXPOSE 3306


3)新建自定义容器

docker build -t zcc/mydocker-web:1.0 C:\Users\Ivory\Desktop\docker-web

4)运行自定义容器

docker run -p 8001:8080 zcc/mydocker-web:1.0

Dockerfile运行三种指令

1)RUN-构建时执行的命令

  1. RUN yum install -y vim #Shell 命令格式
  2. RUN ["yum", "install", "-y", "vim"] #Exec命令格式

2)ENTRYPOINT-容器启动时执行的命令

  1. 用于在容器启动时执行命令

  2. 只有最后一个ENTRYPOINT会被执行

  3. 推荐使用Exec格式

    ENTRYPOINT ["ps"]
    
    

3)CMD-容器启动后执行默认的命令或参数

  1. 用于设置默认执行的命令

  2. 只有最后一个CMD会被执行

  3. 容器启动时附加指令,则CMD被忽略!!!

  4. 推荐使用Exec格式

    CMD ["ps", "-ef"]
    
    

示例:"-ef"可以被"-aux"替代,比如docker run shell -aux

FROM centos
RUN echo "image building!!"
ENTRYPOINT ["ps"]
CMD ["-ef"]

发布

1)构建镜像

docker build -t jingjiu/myhello:1.0 C:\Users\Ivory\Desktop\myhello

2)登录

docker login

3)推送

docker push jingjiu/myhello:1.0

Redis

1)Dockerfile文件

FROM centos
RUN yum install -y gcc gcc-c++ net-tools make
WORKDIR /usr/local
ADD redis-5.0.7.tar.gz .
WORKDIR /usr/local/redis-5.0.7/src
RUN make && make install
WORKDIR /usr/local/redis-5.0.7/
ADD redis-7000.conf .
EXPOSE 7000
CMD ["redis-server", "redis-7000.conf"]

//redis-7000.conf文件内容
port 7000
bind 0.0.0.0

2)创建镜像

docker build -t jingjiu/myredis:5.0.7 C:\Users\Ivory\Desktop\redis

3)运行

docker run -p 7006:7000 -d jingjiu/myredis:5.0.7 

容器的单向通信

1)创建两个容器

docker run --name mydb centos sleep 1d			//172.17.0.3
# docker run --name myweb -d centos sleep 1d			//只能通过IP通信
docker run --name myweb --link mydb -d centos sleep 1d	//可以通过myweb通信

2)查看容器信息(IP)

docker inspect 812c36b612d2

容器的双向通信

1)查看docker的网卡信息

docker network ls

2)创建新网桥

docker network create -d bridge zcc-brige

3)将容器实例加入新网桥

# 创建两个新容器,名为c1、c2
docker run --name c1 -d centos sleep 1d
docker run --name c2 -d centos sleep 1d
# 分别加入新网桥
docker network connect zcc-brige c1
docker network connect zcc-brige c2

Volume数据共享

方式一:

docker run --name tomcat1 -v C:\Users\Ivory\Desktop\webapps:/usr/local/tomcat/webapps tomcat

方式二:

# 创建单纯的挂载容器
docker create --name webpage -v C:\Users\Ivory\Desktop\webapps:/usr/local/tomcat/webapps tomcat /bin/true

# 创建容器1、2、3
docker run -p 8001:8080 --volumes-from webpage --name tomcat1 -d tomcat
docker run -p 8002:8080 --volumes-from webpage --name tomcat2 -d tomcat
docker run -p 8003:8080 --volumes-from webpage --name tomcat3 -d tomcat
# 这三个都共享了同一份文件C:\Users\Ivory\Desktop\webapps里的文件

方式三(自动挂载,Linux):

# 在Dockerfile中指定
FROM tomcat
VOLUME "/usr/local/tomcat/webapps"

docker-compose

部署一个word

1)创建docker-compose.yml文件

version: '3.3'

services:
   db:
     image: mysql:5.7   # docker run mysql:5.7
     volumes:
       - db_data:/var/lib/mysql     # -v empty:/var/lib/mysql
     restart: always    # 自动重启
     environment:
       MYSQL_ROOT_PASSWORD: somewordpress
       MYSQL_DATABASE: wordpress
       MYSQL_USER: wordpress
       MYSQL_PASSWORD: wordpress

   wordpress:
     depends_on:
       - db       # docker --link db
     image: wordpress:latest
     ports:
       - "8000:80"
     restart: always
     environment:
       WORDPRESS_DB_HOST: db:3306
       WORDPRESS_DB_USER: wordpress
       WORDPRESS_DB_PASSWORD: wordpress
       WORDPRESS_DB_NAME: wordpress
volumes:
    db_data: {}

2)进入当前目录安装

docker-compose up -d

3)进入当前目录卸载

docker-compose down --volumes

推荐阅读