Docker安装与卸载:这里官方说明已是非常详细的
官方: Install Docker Engine on Ubuntu | Docker Documentation
【狂神说Java】Docker最新超详细版教程笔记_月光染衣袂的博客-优快云博客_狂神说java系列笔记docker
sudo apt-get update
sudo apt-get install \
ca-certificates \
curl \
gnupg \
lsb-release
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin
sudo vim /etc/docker/daemon.json
#1.创建一个目录
sudo mkdir -p /etc/docker
#2.编写配置文件
{
"registry-mirrors": ["https://t2wwyxhb.mirror.aliyuncs.com"]
}
#3.重启服务
sudo systemctl daemon-reload
sudo systemctl restart docker
卸载Docker
1、卸载依赖
sudo apt-get purge docker-ce docker-ce-cli containerd.io docker-compose-plugin
2、删除资源
sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd
#遇到问题错误
$ sudo service docker restart
Job for docker.service failed because the control process exited with error code.
See "systemctl status docker.service" and "journalctl -xe" for details.
#debug查看问题
sudo dockerd --debug
常用命令:
docker attach 容器 #进入容器中
docker pull 镜像名
-d后台运行
-P端口设置
-P 标记时,Docker 会随机映射一个 49000~49900 的端口到内部容器开放的网络端口
-p(小写)则可以指定要映射的IP和端口
-e环境配置
-v数据卷挂载
# 删除镜像操作 (先删容器,再删镜像)
docker stop 容器ID #容器停止
docker ps #查看容器是否已停掉
docker rm 容器ID #跟镜像有关的全部容器移除
docker images #查看镜像
docker rmi 镜像ID # 移除镜像
#提交镜像
docker commit -a="作者" -m="描述信息" 提交容器ID REPOSITORY:TAG
#容器数据卷挂载(数据同步)
docker run -it -v /home/ceshi:/home ubuntu
#mysql数据挂载 (设置root密码 容器名 镜像)
docker pull mysql
docker run -d -p 3310:3306 -v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root123 --name mysql01 mysql
#进入容器命令
docker attach 容器ID
docker exec -it 容器ID /bin/bash
进入容器内部命令
一、前提:该容器已存在
二、进入命令主要有三个,下面分别列出来,以做记录:
1、在容器中开启一个交互模式的终端,命令如下:
$ docker exec -i -t [容器名] /bin/bash
2、在容器中以交互模式执行容器内 /root/runoob.sh 脚本
$ docker exec -it [容器名] /bin/sh /root/runoob.sh
3、利用容器ID
$ docker exec -it [容器ID] /bin/bash
————————————————
版权声明:本文为优快云博主「千叶大师」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.youkuaiyun.com/joyksk/article/details/111977326
Docker安装mysql8.0.20数据挂载 (设置root密码 容器名 镜像)
sudo apt-get install tree #Linux展现树形数据结构,最终mysql安装目录
root@ubuntu:/home/mysql/mysql8.0.20# ls
data logs mysql
root@ubuntu:/home/mysql/mysql8.0.20/mysql# ls
conf.d my.cnf my.cnf.fallback
docker pull mysql:8.0.20
#下载的镜像,运行容器
docker run -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:8.0.20
#查看容器是否运行
docker ps -a
#拷贝当前运行容器的/etc/mysql 至ubuntu主机的/home/mysql/mysql8.0.20目录下,没有目录,先创建目录
docker cp mysql:/etc/mysql /home/mysql/mysql8.0.20
#停止并移除当前容器
docker stop mysql
docker rm mysql
#再次运行容器,并对容器做数据卷具名挂载(删掉注释运行)
#复制修改此处的命令,修改自己的位置运行,自己操作之后,入股报
docker run \
-p 3306:3306 \
--name mysql \
--privileged=true \
--restart=always \
-v /home/mysql/mysql8.0.20/mysql:/etc/mysql \
-v /home/mysql/mysql8.0.20/logs:/logs \
-v /home/mysql/mysql8.0.20/data:/var/lib/mysql \
-v /etc/localtime:/etc/localtime \
-e MYSQL_ROOT_PASSWORD=123456 \
-d mysql:8.0.20
注:出现下面格式错误,
请检查‘ \ ’后是否有空格存在
!!!!
docker exec -it mysql /bin/bash
mysql -uroot -p # 第一次不输入密码,直接进入
use mysql
select host from user where user='root';
update user set host = '%' where user ='root'; # 设置host='%',保证能够远程访问
#再次查看是否修改成功
select host from user where user='root';
#刷新设置
flush privileges;
设置mysql密码教程链接:
https://blog.youkuaiyun.com/wolf131721/article/details/93004013
设置过mysql密码了,但好像没有用,直接无密码状态进入
进行root密码设置:
use mysql
mysql> select user,host from user;
+------------------+-----------+
| user | host |
+------------------+-----------+
| root | % |
| mysql.infoschema | localhost |
| mysql.session | localhost |
| mysql.sys | localhost |
+------------------+-----------+
ALTER user 'root'@'host字段' IDENTIFIED BY '设置密码';
由于上面更改过host='%'故:
ALTER user 'root'@'%' IDENTIFIED BY '123456';
flush privileges;
Dockerfile
dockerfile 就是用来构建docker镜像的构建文件,命令脚本参数
1、编写一个dockerfile文件
2、docker build 构建成为一个镜像
3、docker run运行镜像
4、docker pull 发布镜像
FROM #基础镜像,一切从这里开始构建
MAINTAINER #镜像是谁写的,姓名+邮箱
RUN #镜像运行的时候需要运行的命令
ADD #步骤,tomcat镜像,这个tomcat压缩包!添加内容
WORKDIR #镜像的工作目录
VOLUME #挂载的目录
EXPOSE #保留端口配置
CMD #指定这个容器启动的时候需要运行的命令,只有最后一个会生效,可被替代
ENTRYPOINT #指定这个容器启动的时候需要运行的命令,可以追加命令
ONBUILD #当构建一个被继承dockerfile 这个的时候就会运行ONBUILD的指令,触发指令
COPY #类似ADD,我们文件拷贝到镜像中
ENV #构建的时候设置环境变量
#Dockerfile2内容
FROM ubuntu
MAINTAINER Ban<1332039050@qq.com>
ENV MYPATH /usr/local
WORKDIR $MYPATH
RUN apt -y install vim
RUN apt -y install net-tools
EXPOSE 80
CMD echo $MYPATH
CMD echo "---end---"
CMD /bin/bash
#-f dockerfile文件地址 -t 生成镜像名 生成镜像地址
docker build -f dockerfile2 -t myubuntu:0.1 .
root@ubuntu:/home/Docker# docker history mysql
IMAGE CREATED CREATED BY SIZE COMMENT
3218b38490ce 10 months ago /bin/sh -c #(nop) CMD ["mysqld"] 0B
<missing> 10 months ago /bin/sh -c #(nop) EXPOSE 3306 33060 0B
<missing> 10 months ago /bin/sh -c #(nop) ENTRYPOINT ["docker-entry… 0B
<missing> 10 months ago /bin/sh -c ln -s usr/local/bin/docker-entryp… 34B
<missing> 10 months ago /bin/sh -c #(nop) COPY file:345a22fe55d3e678… 14.5kB
<missing> 10 months ago /bin/sh -c #(nop) COPY dir:2e040acc386ebd23b… 1.12kB
<missing> 10 months ago /bin/sh -c #(nop) VOLUME [/var/lib/mysql] 0B
<missing> 10 months ago /bin/sh -c { echo mysql-community-server m… 380MB
<missing> 10 months ago /bin/sh -c echo 'deb http://repo.mysql.com/a… 55B
<missing> 10 months ago /bin/sh -c #(nop) ENV MYSQL_VERSION=8.0.27-… 0B
<missing> 10 months ago /bin/sh -c #(nop) ENV MYSQL_MAJOR=8.0 0B
<missing> 10 months ago /bin/sh -c set -ex; key='A4A9406876FCBD3C45… 1.84kB
<missing> 10 months ago /bin/sh -c apt-get update && apt-get install… 52.2MB
<missing> 10 months ago /bin/sh -c mkdir /docker-entrypoint-initdb.d 0B
<missing> 10 months ago /bin/sh -c set -eux; savedAptMark="$(apt-ma… 4.17MB
<missing> 10 months ago /bin/sh -c #(nop) ENV GOSU_VERSION=1.12 0B
<missing> 10 months ago /bin/sh -c apt-get update && apt-get install… 9.34MB
<missing> 10 months ago /bin/sh -c groupadd -r mysql && useradd -r -… 329kB
<missing> 10 months ago /bin/sh -c #(nop) CMD ["bash"] 0B
<missing> 10 months ago /bin/sh -c #(nop) ADD file:bd5c9e0e0145fe33b… 69.3MB
# 自己手写一个镜像
# 创建dockerfile,名字可以随机,建议dockerfile
# 文件中的内容 指令(大写) 参数
[root@localhost docker-test-volume]# cat dockerfile1
FROM centos #
#这里的每一个命令,就是镜像的一层
VOLUME ["/volume01","/volume02"]
CMD echo "----end------"
CMD /bin/bash
# 生成镜像,docker build -f 镜像文件 -t 镜像名:[tag] 当前目录
[root@localhost docker-test-volume]# docker build -f dockerfile1 -t syw/centos:1.0 /home/docker-test-volume/
#获取所有镜像的ID
docker images -q
docker rmi -f $(docker images -q)
#移除掉所有容器
docker rm -f $(docker ps -qa)
Springboot项目打包运行
#将idea目录下所有文件进行docker镜像构建
root@ubuntu:/home/Docker/idea# ls
Dockerfile docker-Springboot-0.0.1-SNAPSHOT.jar
#Dockerfile内容:
FROM java:8
COPY *.jar /app.jar
CMD ["--server.port=8080"]
EXPOSE 8080
ENTRYPOINT ["java", "-jar", "/app.jar"]
#执行命令
docker build -t demo .
docker run -d -P --name Demo f3eece258594
root@ubuntu:/home/Docker/idea# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
0c03c3727d1e f3eece258594 "java -jar /app.jar …" 7 seconds ago Up 5 seconds 0.0.0.0:49155->8080/tcp, :::49155->8080/tcp Demo
root@ubuntu:/home/Docker/idea# curl localhost:49155/hello
hello,chengroot@ubuntu:/home/Docker/idea#
问题解决:
修改resolv.conf后,重启或者过一段时间,该文件就被重置了,假如需要永久修改这一文件需要借助一些工具,或者是修改/etc/dhcp/dhclient.conf该文件。
安装resolvconf
apt-get install resolvconf
修改配置文件
/etc/resolvconf/resolv.conf.d/head
......
nameserver 8.8.8.8
nameserver 8.8.4.4
开启服务
systemctl enable --now resolvconf.service