Docker部分命令使用
Docker安装与卸载:这里官方说明已是非常详细的
官方: Install Docker Engine on Ubuntu | Docker Documentation
【狂神说Java】Docker最新超详细版教程笔记_月光染衣袂的博客-CSDN博客_狂神说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
————————————————
版权声明:本文为CSDN博主「千叶大师」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/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.csdn.net/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
 
                    
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号