入门
更换阿里巴巴镜像
在系统右下角托盘图标内右键菜单选择 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步骤
- 拉取镜像
docker pull registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g
- 创建容器
docker run -d -p 1521:1521 --name oracle_11g registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g
- 启动容器
docker start oracle_11g
- 进入容器终端
docker exec -it oracle_11g bash
- 编辑修改相关配置
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
# 保存退出
- 添加软连接等配置
ln -s $ORACLE_HOME/bin/sqlplus /usr/bin
su - oracle
sqlplus /nolog
conn /as sysdba
- 修改sys、system用户密码
alter user system identified by oracle;
alter user sys identified by oracle;
ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;
- 在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-构建时执行的命令
- RUN yum install -y vim #Shell 命令格式
- RUN ["yum", "install", "-y", "vim"] #Exec命令格式
2)ENTRYPOINT-容器启动时执行的命令
-
用于在容器启动时执行命令
-
只有最后一个ENTRYPOINT会被执行
-
推荐使用Exec格式
ENTRYPOINT ["ps"]
3)CMD-容器启动后执行默认的命令或参数
-
用于设置默认执行的命令
-
只有最后一个CMD会被执行
-
容器启动时附加指令,则CMD被忽略!!!
-
推荐使用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