1.基础命令
docker pull 拉取镜像到本地
默认是在hub.docker.com拉取,拉取是最新的版本,可以在后面指定版本":"
docker images 列出所有的镜像
docker run 根据某个镜像创建容器 -d 让容器在后台运行,其实就是一个进程 --name 给容器指定一个名字 -p 将容器的端口映射到宿主机的端口
docker run -d --name my-tomcat -p 9090:8080 tomcat
访问成功
docker ps -a 查看containers
docker exec -it 进入到某个容器中并交互式运行
docker exec -it containerid /bin/bash
exit 退出容器里面
docker stop 00a2bb8caee5 停止容器运行的应用
docker rm -f $(docker ps -aq) 先删除所有container docker rmi -f $(docker images) 删除所有的images docker run -d --name my-mysql -p 3301:3306 -e MYSQL_ROOT_PASSWORD=123456 --privileged mysql 创建mysql容器
docker search first_dockerfile 查找文件docker volume rm $(docker volume ls -qf dangling=true)
删除所有未被容器引用的卷
docker network create --subnet=172.18.0.0/24 pro-net
docker network create/rm xxx 创建/删除网络
docker network ls 查看网络
docker network inspect xxx 查看详情
2.Dockerfile文件命令介绍
FROM openjdk:8-jdk //指定基础镜
//在镜像内部执行一些命令,比如安装软件,配置环境等,换行可以使用
RUN groupadd -r mysql && useradd -r -g mysql mysql
//设置变量的值,ENV MYSQL_MA JOR 5.7,可以通过docker run --e key=value修改,后面可以直接使用${MYSQL_MA JOR}
ENV MYSQL_MAJOR 5.7
VOLUME /var/lib/mysql //指定数据的挂在目录
//将主机的文件复制到镜像内,如果目录不存在,会自动创建所需要的目录,注意只是复制,不会提取和解压
COPY docker-entrypoint.sh /usr/local/bin/
//将主机的文件复制到镜像内,和COPY类似,只是ADD会对压缩文件提取和解压
ADD application.yml /etc/it/
//指定镜像的工作目录,之后的命令都是基于此目录工作,若不存在则创建
WORKDIR /usr/local
WORKDIR tomcat RUN
touch test.txt
//会在/usr/local/tomcat下创建test.txt文件
//容器启动的时候默认会执行的命令,若有多个CMD命令,则最后一个生效
CMD ["mysqld"] 或CMD mysqld
//和CMD的使用类似,和cmd不同的是docker run执行时,会覆盖CMD的命令,而ENTRYPOINT不会
ENTRYPOINT ["docker-entrypoint.sh"]
//指定镜像要暴露的端口,启动镜像时,可以使用-p将该端口映射给宿主机
EXPOSE 3306
3.Dockerfile实战Spring Boot项目(1)创建一个Spring Boot项目
(1)写一个controller @RestController public class DockerController { @GetMapping("/dockerfile") @ResponseBody String dockerfile() { return "hello docker" ; } }
(2)mvn clean package打成一个jar包
在target下找到"dockerfile-demo-0.0.1-SNAPSHOT.jar"
(3)在docker环境中新建一个目录"first-dockerfile"
(4)上传"dockerfile-demo-0.0.1-SNAPSHOT.jar"到该目录下,并且在此目录创建Dockerfile
(5)创建Dockerfile文件,编写内容 FROM openjdk:8 MAINTAINER tzj2019
LABEL name="dockerfile-demo" version="1.0" author="tzj2019" COPY dockerfile-demo-0.0.1-SNAPSHOT.jar dockerfile-image.jar CMD ["java","-jar","dockerfile-image.jar"]
(6)基于Dockerfile构建镜像 docker build -t test-docker-image .(.代表当前目录)
(7)基于image创建container docker run -d --name user01 -p 8080:8080 test-docker-image
(8)查看启动日志docker logs user01
(9)宿主机上访问curl localhost:6666/dockerfile hello docker (
(10)还可以再次启动一个 docker run -d --name user02 -p 8081:8080 test-docker-image
4.将自己制作的镜像推到阿里云
//拷贝文件 cp /Users/XXX/XX/2019/01.Docker/dockerfile-demo/target/dockerfile-demo-0.0.1-SNAPSHOT.jar /usr/local/bin/first-dockerfile //登录 XXX$ sudo docker login --username=阿里云账号 registry.cn-hangzhou.aliyuncs.com(采坑:换行多了空格会引起报错) //打个tag sudo docker tag test-docker-image registry.cn-hangzhou.aliyuncs.com/tzj2019/test-docker-image:v1.0 //推送到阿里云 sudo docker push registry.cn-hangzhou.aliyuncs.com/tzj2019/test-docker-image:v1.0